你的位置:首页 > 操作系统

[操作系统]GPUImage滤镜之锐化


  应用锐化工具可以快速聚焦模糊边缘,提高图像中某一部位的清晰度或者焦距程度,使图像特定区域的色彩更加鲜明。 在应用锐化工具时,若勾选器选项栏中的“对所有图层取样”复选框,则可对所有可见图层中的图像进行锐化。但一定要适度。锐化不是万能的,很容易使东西不真实。

  在GPUImage中使用GPUImageSharpenFilter类来实现图像的锐化效果

  片段着色

 precision highp float; varying highp vec2 textureCoordinate; varying highp vec2 leftTextureCoordinate; varying highp vec2 rightTextureCoordinate; varying highp vec2 topTextureCoordinate; varying highp vec2 bottomTextureCoordinate; varying highp float centerMultiplier; varying highp float edgeMultiplier; uniform sampler2D inputImageTexture; void main() {   mediump vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb;   mediump vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb;   mediump vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb;   mediump vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb;   mediump vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb;   gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w); }

 

   具体应用

  

+ (UIImage *)changeValueForSharpenilter:(float)value image:(UIImage *)image{  GPUImageSharpenFilter *filter = [[GPUImageSharpenFilter alloc] init];  filter.sharpness = value;  [filter forceProcessingAtSize:image.size];  GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image];  [pic addTarget:filter];    [pic processImage];  [filter useNextFrameForImageCapture];  return [filter imageFromCurrentFramebuffer];}

 

  效果