图片素描,就是将图片使用一定的算法处理之后,使之形成类似素描的图片;
在photoshop 中,对图片处理成素描图片大概经过几个步骤:
1:对图片进行去色,也就是所谓的灰度图;算法见:图片黑白滤镜算法
2:对第一步的灰度图进行反色处理;算法见:图片反相算法
3:将第二部的结果进行高斯模糊;算法见:图片高斯模糊算法
4:将第三步的图片与第一步的灰度图 进行颜色减淡,即可得到素描图;算法见:图层颜色减淡算法
原图如下:
效果图如下:
核心代码如下:
@Component(value = "sketchFilter")
public class SketchFilter extends AbstractPictureFilter {
@Autowired
private PictureFilterInterface blackWhiteFilter;
@Autowired
private PictureFilterInterface reverseColorFilter;
@Autowired
private PictureFilterInterface gaussColorFilter;
@Autowired
private AbStractImageLayerFilter colorDodgeFilter;
/**
* log
**/
private static final Log log = LogFactory.getLog(SketchFilter.class);
/**
* 对图片增加滤镜
*
* @param image 图片
* @return 增加滤镜之后的图片
*/
@Override
public BufferedImage pictureAddFilter(BufferedImage image) {
BufferedImage blackImage = blackWhiteFilter.pictureAddFilter(image);
BufferedImage reverseImage = reverseColorFilter.pictureAddFilter(blackImage);
BufferedImage gaussImage = gaussColorFilter.pictureAddFilter(reverseImage);
try {
BufferedImage lastImage = colorDodgeFilter.imageLayerFilter(gaussImage,blackImage);
return lastImage;
} catch (ImageCheckException e) {
log.error("合成图片错误",e);
}
return image;
}
/**
* 对像素color 进行处理
*
* @param color 原color
* @return 新color
*/
@Override
public Color filterColor(Color color) {
return null;
}
}