+ case 138: /* Canny */
+ {
+ if (attribute_flag[0] != 0)
+ {
+ flags=ParseGeometry(argument_list[0].string_reference,
+ &geometry_info);
+ if ((flags & SigmaValue) == 0)
+ geometry_info.sigma=1.0;
+ if ((flags & XiValue) == 0)
+ geometry_info.xi=0.10;
+ if ((flags & PsiValue) == 0)
+ geometry_info.psi=0.30;
+ if ((flags & PercentValue) != 0)
+ {
+ geometry_info.xi/=100.0;
+ geometry_info.psi/=100.0;
+ }
+ }
+ if (attribute_flag[1] != 0)
+ geometry_info.rho=argument_list[1].real_reference;
+ if (attribute_flag[2] != 0)
+ geometry_info.sigma=argument_list[2].real_reference;
+ if (attribute_flag[3] != 0)
+ geometry_info.xi=argument_list[3].real_reference;
+ if (attribute_flag[4] != 0)
+ geometry_info.psi=argument_list[4].real_reference;
+ if (attribute_flag[5] != 0)
+ channel=(ChannelType) argument_list[5].integer_reference;
+ channel_mask=SetImageChannelMask(image,channel);
+ image=CannyEdgeImage(image,geometry_info.rho,geometry_info.sigma,
+ geometry_info.xi,geometry_info.psi,exception);
+ if (image != (Image *) NULL)
+ (void) SetImageChannelMask(image,channel_mask);
+ break;
+ }
+ case 139: /* HoughLine */
+ {
+ if (attribute_flag[0] != 0)
+ {
+ flags=ParseGeometry(argument_list[0].string_reference,
+ &geometry_info);
+ if ((flags & SigmaValue) == 0)
+ geometry_info.sigma=geometry_info.rho;
+ if ((flags & XiValue) == 0)
+ geometry_info.xi=40;
+ }
+ if (attribute_flag[1] != 0)
+ geometry_info.rho=(double) argument_list[1].integer_reference;
+ if (attribute_flag[2] != 0)
+ geometry_info.sigma=(double) argument_list[2].integer_reference;
+ if (attribute_flag[3] != 0)
+ geometry_info.xi=(double) argument_list[3].integer_reference;
+ image=HoughLineImage(image,(size_t) geometry_info.rho,(size_t)
+ geometry_info.sigma,(size_t) geometry_info.xi,exception);
+ break;
+ }
+ case 140: /* MeanShift */
+ {
+ if (attribute_flag[0] != 0)
+ {
+ flags=ParseGeometry(argument_list[0].string_reference,
+ &geometry_info);
+ if ((flags & SigmaValue) == 0)
+ geometry_info.sigma=geometry_info.rho;
+ if ((flags & XiValue) == 0)
+ geometry_info.xi=0.10*QuantumRange;
+ if ((flags & PercentValue) != 0)
+ geometry_info.xi=QuantumRange*geometry_info.xi/100.0;
+ }
+ if (attribute_flag[1] != 0)
+ geometry_info.rho=(double) argument_list[1].integer_reference;
+ if (attribute_flag[2] != 0)
+ geometry_info.sigma=(double) argument_list[2].integer_reference;
+ if (attribute_flag[3] != 0)
+ geometry_info.xi=(double) argument_list[3].integer_reference;
+ image=MeanShiftImage(image,(size_t) geometry_info.rho,(size_t)
+ geometry_info.sigma,geometry_info.xi,exception);
+ break;
+ }
+ case 141: /* Kuwahara */
+ {
+ if (attribute_flag[0] != 0)
+ {
+ flags=ParseGeometry(argument_list[0].string_reference,
+ &geometry_info);
+ if ((flags & SigmaValue) == 0)
+ geometry_info.sigma=geometry_info.rho-0.5;
+ }
+ if (attribute_flag[1] != 0)
+ geometry_info.rho=argument_list[1].real_reference;
+ if (attribute_flag[2] != 0)
+ geometry_info.sigma=argument_list[2].real_reference;
+ if (attribute_flag[3] != 0)
+ channel=(ChannelType) argument_list[3].integer_reference;
+ channel_mask=SetImageChannelMask(image,channel);
+ image=KuwaharaImage(image,geometry_info.rho,geometry_info.sigma,
+ exception);
+ if (image != (Image *) NULL)
+ (void) SetImageChannelMask(image,channel_mask);
+ break;
+ }
+ case 142: /* ConnectedComponent */
+ {
+ size_t
+ connectivity;
+
+ connectivity=4;
+ if (attribute_flag[0] != 0)
+ connectivity=argument_list[0].integer_reference;
+ image=ConnectedComponentsImage(image,connectivity,
+ (CCObjectInfo **) NULL,exception);
+ break;
+ }
+ case 143: /* Copy */
+ {
+ Image
+ *source_image;
+
+ OffsetInfo
+ offset;
+
+ RectangleInfo
+ offset_geometry;
+
+ source_image=image;
+ if (attribute_flag[0] != 0)
+ source_image=argument_list[0].image_reference;
+ SetGeometry(source_image,&geometry);
+ if (attribute_flag[1] != 0)
+ flags=ParseGravityGeometry(source_image,
+ argument_list[1].string_reference,&geometry,exception);
+ if (attribute_flag[2] != 0)
+ geometry.width=argument_list[2].integer_reference;
+ if (attribute_flag[3] != 0)
+ geometry.height=argument_list[3].integer_reference;
+ if (attribute_flag[4] != 0)
+ geometry.x=argument_list[4].integer_reference;
+ if (attribute_flag[5] != 0)
+ geometry.y=argument_list[5].integer_reference;
+ if (attribute_flag[6] != 0)
+ image->gravity=(GravityType) argument_list[6].integer_reference;
+ SetGeometry(image,&offset_geometry);
+ if (attribute_flag[7] != 0)
+ flags=ParseGravityGeometry(image,argument_list[7].string_reference,
+ &offset_geometry,exception);
+ offset.x=offset_geometry.x;
+ offset.y=offset_geometry.y;
+ if (attribute_flag[8] != 0)
+ offset.x=argument_list[8].integer_reference;
+ if (attribute_flag[9] != 0)
+ offset.y=argument_list[9].integer_reference;
+ (void) CopyImagePixels(image,source_image,&geometry,&offset,
+ exception);
+ break;
+ }
+ case 144: /* Color */
+ {
+ PixelInfo
+ color;
+
+ (void) QueryColorCompliance("none",AllCompliance,&color,exception);
+ if (attribute_flag[0] != 0)
+ (void) QueryColorCompliance(argument_list[0].string_reference,
+ AllCompliance,&color,exception);
+ (void) SetImageColor(image,&color,exception);
+ break;
+ }
+ case 145: /* WaveletDenoise */
+ {
+ if (attribute_flag[0] != 0)
+ {
+ flags=ParseGeometry(argument_list[0].string_reference,
+ &geometry_info);
+ if ((flags & PercentValue) != 0)
+ {
+ geometry_info.rho=QuantumRange*geometry_info.rho/100.0;
+ geometry_info.sigma=QuantumRange*geometry_info.sigma/100.0;
+ }
+ if ((flags & SigmaValue) == 0)
+ geometry_info.sigma=0.0;
+ }
+ if (attribute_flag[1] != 0)
+ geometry_info.rho=argument_list[1].real_reference;
+ if (attribute_flag[2] != 0)
+ geometry_info.sigma=argument_list[2].real_reference;
+ if (attribute_flag[3] != 0)
+ channel=(ChannelType) argument_list[3].integer_reference;
+ channel_mask=SetImageChannelMask(image,channel);
+ image=WaveletDenoiseImage(image,geometry_info.rho,geometry_info.sigma,
+ exception);
+ if (image != (Image *) NULL)
+ (void) SetImageChannelMask(image,channel_mask);
+ break;
+ }
+ case 146: /* Colorspace */
+ {
+ ColorspaceType
+ colorspace;
+
+ colorspace=sRGBColorspace;
+ if (attribute_flag[0] != 0)
+ colorspace=(ColorspaceType) argument_list[0].integer_reference;
+ (void) TransformImageColorspace(image,colorspace,exception);
+ break;
+ }