图片素描算法
图片素描算法

图片素描,就是将图片使用一定的算法处理之后,使之形成类似素描的图片;
在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;
    }
}
                    
Copyright © 2019-2020 2025-02-03 04:13:18