• Atitit 图像处理—图像形态学(膨胀与腐蚀)


    Atitit 图像处理—图像形态学(膨胀与腐蚀)

     

    1.1. 膨胀与腐蚀1

    1.2. 图像处理之二值膨胀及应用2

    1.3. 测试原理,可以给一个5*5pic,测试膨胀算法5

    1.4. Photoshop里面的处理5

    1.5. 类库的处理,好像没找到jhlabs,6

    1.6. Attilax 源码6

     

    1.1. 膨胀与腐蚀

      说概念可能很难解释,我们来看图,首先是原图:

      膨胀以后会变成这样:

      腐蚀以后则会变成这样:

      看起来可能有些莫名其妙,明明是膨胀,为什么字反而变细了,而明明是腐蚀,为什么字反而变粗了。

    实际上,所谓膨胀应该指

      较亮色块膨胀。

    而所谓腐蚀应该指

    较亮色块腐蚀。

     

    1.2. 图像处理之二值膨胀及应用

    基本原理:

    膨胀是图像形态学的两个基本操作之一,另外一个是腐蚀操作。最典型的应用是在二值图像

    中使用这两个基本操作,是很多识别技术中重要的中间处理步骤。在灰度图像中根据阈值同

    样可以完成膨胀与腐蚀操作。对一幅二值图像f(x,y)完成膨胀操作,与对图像的卷积操作类

    似,要有个操作数矩阵,最常见的为3X3的矩阵,与卷积操作不同的,是如果矩阵中的像素

    点有任意一个点的值是前景色,则设置中心像素点为前景色,否则不变。

     

    形态学运算中腐蚀,膨胀,开运算和闭运算:
    1. 腐蚀是一种消除边界点,使边界向内部收缩的过程。

    可以用来消除小且无意义的物体。
    腐蚀的算法:
    3x3的结构元素,扫描图像的每一个像素
    用结构元素与其覆盖的二值图像做操作
    如果都为1,结果图像的该像素为1。否则为0
    结果:使二值图像减小一圈

    2. 膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。

    可以用来填补物体中的空洞。
    膨胀的算法:
    3x3的结构元素,扫描图像的每一个像素
    用结构元素与其覆盖的二值图像做操作
    如果都为0,结果图像的该像素为0。否则为1
    结果:使二值图像扩大一圈

    3. 先腐蚀后膨胀的过程称为开运算。

    用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。

    4. 先膨胀后腐蚀的过程称为闭运算。

    用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。

     

     

    让我们来看看实际上是怎样进行膨胀运算的。在图6.14中,左边是被处理的图象X(二值图象,我们针对的是黑点),中间是结构元素B。膨胀的方法是,拿B的中心点和X上的点及X周围的点一个一个地对,如果B上有一个点落在X的范围内,则该点就为黑;右边是膨胀后的结果。可以看出,它包括X的所有范围,就象X膨胀了一圈似的。

    6.13   膨胀的示意图

    6.14   膨胀运算

    6.15为图6.11膨胀后的结果图,能够很明显的看出膨胀的效果。

     

     

    粉红色的方格每次在X/Y前进一个像素方格,就会产生一个新的输出像素,图中深蓝色的代

    表要输出的像素方格,走完全部的像素方格,就得到了所有输出像素。

     

    图中,粉红色的矩阵表示卷积操作数矩阵,黑色表示源图像每个方格代表一个像素点。

     

     

     

    1.3. 测试原理,可以给一个5*5pic,测试膨胀算法

     */

    public class ImgGene4test {

    public static void main(String[] args) {

    BufferedImage dest = new BufferedImage(5,5 ,1);

    imgx.setBackgroudColor_White(dest);

    dest.setRGB(2, 2, new Color(0,0,0).getRGB());

    imgx.save_overwrite(dest, "C:\00capch\p5.jpg");

    System.out.println("==f");

     

    }

    1.4. Photoshop里面的处理

    键后有个文字加粗的.不过我想这个应该满足不了你的要求.你可以先把文字栅格化,然后选择->修改->扩展选区,再进行填充.直到你想要的效果.建议你先把文字做得比你想要的大一点.再进行此操作,得到你想要效果后再缩小.因为是把选区进行扩展再填充,所以边边色起据齿,放大做再缩小这个问题就不会严重了.加分加分.

     

    选中文字,在“字符”窗口的左下角,点第一个“T”按钮,即可变粗,如果还不够,那就按住ctrl+鼠标单击文字图层=》“选择”=》修改=》扩展,输入扩展数字确定=》新建图层,填充即可

     

    1.5. 类库的处理,好像没找到jhlabs,

    1.6. Attilax 源码

     

    @Override

    public BufferedImage filter(BufferedImage src, BufferedImage dest) {

    BufferedImage dest2 = imgx.new_BackgroudColor_White(src.getWidth(), src.getHeight());

    Matrix mtrx = new Matrix(3, 3).setImg(src);

    imgx.trave(src, (x, y) -> {

    System.out.println("" + x + ":" + y);

     

    mtrx.fill_and_setMtrx_leftTop_XY(x, y);

     

    boolean mtrx_hasAnyForgeColor = mtrx.hasAnyForgeColor(mtrx_item_color -> {

    // dark,,so is forge color.. bkgrd lit..

    return (imgx.isDarkColor(imgx.gray(mtrx_item_color)));

     

    });

    if (mtrx_hasAnyForgeColor) {

    int forgeColor2 = mtrx.getForgeColor();

    mtrxCenterXy_inImg = mtrx.getCenterXy();

    try {

    dest2.setRGB((int) mtrxCenterXy_inImg.get("x"), (int) mtrxCenterXy_inImg.get("y"), forgeColor2);

    } catch (ArrayIndexOutOfBoundsException e) {

    System.out.println("ArrayIndexOutOfBoundsException  x:" + x + ",y:" + y);

    }

     

    }

    });

     

    return dest2;

    }

     

     

    图像处理之二值膨胀及应用 - 流浪的鱼 - 博客频道 - CSDN.NET.html

    图像处理之二值腐蚀 - 流浪的鱼 - 博客频道 - CSDN.NET.html

    图像的膨胀与腐蚀、细化 - 公爵女子 - 博客园.html

    java,不依赖于第三方jar的图片处理类 - dragonsoar - ITeye技术网站.html

     

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

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

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

    Atiend

     

  • 相关阅读:
    iOS imageName方法获取Folder文件夹(蓝色文件夹)内图片
    iOS 使用AFNetworking框架检测当前网络连接状态
    iOS 使用Block实现界面间传值
    JAVA关键字
    十进制、八进制、二进制之间的转换
    CMake,win10,64位,简单配置测试
    win10 64位,家庭版,C++,ini配置说明
    win10 64 + VS2010 + Opencv 2.4.9 + HIKVISION(海康)
    ROS--导航、路径规划和SLAM
    ROS入门实例---5安装ROS-By-Example
  • 原文地址:https://www.cnblogs.com/attilax/p/6045183.html
Copyright © 2020-2023  润新知