+ case 135: /* Perceptible */
+ {
+ double
+ epsilon;
+
+ epsilon=MagickEpsilon;
+ if (attribute_flag[0] != 0)
+ epsilon=argument_list[0].real_reference;
+ if (attribute_flag[1] != 0)
+ channel=(ChannelType) argument_list[1].integer_reference;
+ channel_mask=SetImageChannelMask(image,channel);
+ (void) PerceptibleImage(image,epsilon,exception);
+ (void) SetImageChannelMask(image,channel_mask);
+ break;
+ }
+ case 136: /* Poly */
+ {
+ AV
+ *av;
+
+ double
+ *terms;
+
+ size_t
+ number_terms;
+
+ if (attribute_flag[0] == 0)
+ break;
+ if (attribute_flag[1] != 0)
+ channel=(ChannelType) argument_list[1].integer_reference;
+ av=(AV *) argument_list[0].array_reference;
+ number_terms=(size_t) av_len(av);
+ terms=(double *) AcquireQuantumMemory(number_terms,sizeof(*terms));
+ if (terms == (double *) NULL)
+ {
+ ThrowPerlException(exception,ResourceLimitFatalError,
+ "MemoryAllocationFailed",PackageName);
+ goto PerlException;
+ }
+ for (j=0; j < av_len(av); j++)
+ terms[j]=(double) SvNV(*(av_fetch(av,j,0)));
+ image=PolynomialImage(image,number_terms >> 1,terms,exception);
+ terms=(double *) RelinquishMagickMemory(terms);
+ break;
+ }
+ case 137: /* Grayscale */
+ {
+ PixelIntensityMethod
+ method;
+
+ method=UndefinedPixelIntensityMethod;
+ if (attribute_flag[0] != 0)
+ method=(PixelIntensityMethod) argument_list[0].integer_reference;
+ (void) GrayscaleImage(image,method,exception);
+ break;
+ }
+ 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;
+ }