• Atitit Atitit 图像处理之  Oilpaint油画滤镜 水彩画 源码实现


    Atitit Atitit 图像处理之  Oilpaint油画滤镜 水彩画 源码实现

     

    1.1. 具体原理参考1

    2. 水彩画滤镜算法如下:1

    2.1. 这个其实就是灰度层次降低维度的过程。2

    2.2. 模板半径Radius用来调节水彩画的水彩程度。即是颜色的降低维度的过程2

     

     

    1.1. 具体原理参考

    Atitit 图像处理之仿油画效果 Oilpaint油画滤镜 水彩画 漫画滤镜 v2

     

    2. 水彩画滤镜算法如下:

    灰度,离散化(聚类)。。

    灰度层次N就是水彩画最多使用的颜色明暗层次,一般7种一下为好

    1,假设原始图像为F(x,y),灰度化得到G(x,y);

    2,构建一个半径为Radius的正方形模板M,边长为2*Radius+1;

    3,将M在F上依次遍历每个像素,对于当前像素P(x,y):

    设置灰度层次N,由于图像灰度值范围为0-255, 主要用来对像素的灰度层次聚类

    3.1首先按照N将0-255的范围划分为等距的N个灰度层次,对于模板中对应的像素,我们按照其灰度值,依次将其放入相应的灰度层次

    3.2统计N个灰度层次像素数目,计算像素数最多的那个层次内,像素的各个颜色分量均值Mean,这个均值RGB就是模板中心像素P(x,y)的值。

     

     

    2.1. 这个其实就是灰度层次降低维度的过程。

    注意:油漆桶数N可以调节图像平滑度,灰度层次

    2.2. 模板半径Radius用来调节水彩画的水彩程度。即是颜色的降低维度的过程

     

     

    3. 源码算法/AtiPlatf_cms/src/com/attilax/img/OilPaintV2.java

    private void process(BufferedImage src, int grayLevDeep, int radis) throws FileExistEx {

     

    //初始化矩阵扫描模板

    mtrx = new Matrix().setRadis(radis).setImg(src);

    //初始化灰度层次分类器

    GrayLayerCater GrayLayerCater1 = new GrayLayerCater(); // ini

    GrayLayerCater_rgbmod_dbg = GrayLayerCater1;

    //初始化灰度层次,为n

    List<Layer> li = GrayLayerCater1.iniLayers_groupByGray(grayLevDeep, 255);

    //初始化选框矩阵扫描器

    ImgTraver_byMatrix trvr = new ImgTraver_byMatrix(mtrx);

    //设置扫描到每个像素的事件处理

    trvr.cur_Pix_Point_Evt_Handler = (cur_point) -> {

     

    //对模板选框内内的像素对灰度聚合分类,分别放在不同的灰度层次里面

    GrayLayerCater1.assignMatrixColorsToBukesByPerColorGray(mtrx);

    //得到最多像素点的那个灰度层次,丢弃其他层次像素信息

    Layer MaxPixsLayer1 = GrayLayerCater1.MaxPixsLayer();

    //计算颜色均值,分别对各个rgb分量计算,与合成

    Color avgColor = MaxPixsLayer1.avgColor_retClr();

    Point mtrxCenter_Point = mtrx.getCenterPoint();

     

    try {

    src.setRGB(cur_point.x, cur_point.y, avgColor.getRGB());

       //因为扫描的时候,模板可能超出图像边界,最后一行像素简化处理,忽略错误即可

    } catch (ArrayIndexOutOfBoundsException e) {

    System.out.println(e.getMessage() + "  point:" + cur_point);

    }

     

    };

    trvr.trave(src); //开始扫描

    }

     

    作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 

    汉字名:艾提拉(艾龙)   EMAIL:1466519819@qq.com

    转载请注明来源: http://www.cnblogs.com/attilax/

    Atiend

     

  • 相关阅读:
    11前端css动画
    10前端css文本和字体
    09前端css3渐变
    08前端css3背景
    07前端css3边框和圆角
    06前端css3增加选择器
    堡垒机Teleport
    Sublime Text 3注册及中文乱码问题解决
    Linux部署KMS激活Windows 10和Office 2016
    服务器维护实施步骤
  • 原文地址:https://www.cnblogs.com/attilax/p/6057285.html
Copyright © 2020-2023  润新知