图像处理中的二义性_图像双线性插值对图像边缘是怎么处理的 - CSDN
  • ---------------------------------------------------------------------------------------------------------————————————----———————————— 今天终将成为我们回不去的昨天!...


    ---------------------------------------------------------------------------------------------------------————————————----—



    今天终将成为我们回不去的昨天!想做就做,就是现在!



    ------------------------------------------------------------------------------------------------------------————————————---


    第一次学习的时候总是搞不懂这些问题,现在总结如下,简单的4邻域、8邻域等好理解的就不啰嗦了,主要是一些难以理解的。


    1. 混合邻接(m邻接
           
    混合邻接是对8邻接的改进,混合邻接是消除8邻接产生二义性。定义如下:

    (1)如果 q 在N4(p)中

    (2)如果 q 在ND(p)中,且N4(p)和ND(q)没有来自V中的数值的像素。

    满足其中之一,则具有V数值的两个像素 p 和 q是 m 邻接的。

    图a b c

    图a 像素的排列

    图b 8邻接像素产生二义性,8邻接的中间那个1有2条路径可以到达右上角的1。

    图c m邻接消除了8邻接的二义性

    2.通路长度


    注意:通路的长度时候(xi, yi)和(xi-1, yi-1)必须是邻接的。

    3.Dm距离

    像素的距离有D4、D8、Dm距离,其中D4,D8距离与任何通路无关,通路可能存在于各店之间,因为这些点仅与该店的坐标有关。考虑 m 连接,则两点之间的Dm距离定义为最短距离,在这种情况下,两个点的像素值将依赖于沿通路的像素值及其邻点值。

    例子:考虑如下的像素,其中 p 、 p2  、p4的值是1,p1 、 p3 的值是 1 或者0。我们考虑值为1的像素邻域( V = {1} )。

    (1)假设,p1 、 p3 的值是 0,则 p 和 p2 是 m 邻接,p2 和 p4 是 m邻接,最短的距离是 2。

    (2)假设,p1 的值是1, p3 的值是 0,则 p 和 p2 不是 m 邻接,最短的 m 通路是是3(p--p1--p2--p4)。

    (3)假设,p1 的值是0, p3 的值是 1,则p2 和 p4 不是 m邻接,最短的 m 通路是是3(p--p1--p3--p4)。

    (4)假设,p1 、 p3 的值是 1,则 p 和 p2 不是 m 邻接,p2 和 p4 不是 m邻接,最短的 m 通路是是4(p--p1--p2--p3--p4)。













    展开全文
  • 像素的m邻接克服8邻接的二义性

    千次阅读 2014-02-11 18:51:11
    8邻接的二义性: 如图下所示,8邻接的中间那个1有2条路径可以到达右上角的1,这就是所说的二义性。在边缘检测通常不希望出现这样的情况,所以采用m邻接来改进8邻接。 m邻接定义: 对于V 假设要p,q两点是m...

    8邻接的二义性:

    如图下所示,8邻接的中间那个1有2条路径可以到达右上角的1,这就是所说的二义性。在边缘检测中通常不希望出现这样的情况,所以采用m邻接来改进8邻接。


    m邻接定义:

    对于V 假设要p,q两点是m邻接的 则要满足下面两个条件之一即可:
     1)q在p的4邻域中。
     2)q在p的对角领域中,并且q的4邻域与p的4领域相交为空集(交集无点属于V)。

    m邻接可以解决8邻接的二义性问题。

    相关:

    冈萨雷斯《数字图像处理》 2.5.2小节

    http://www.cnblogs.com/carfield/archive/2012/06/14/2548831.html




    展开全文
  • 数字图像处理第九章数字图像处理---形态学图像处理(一)预备知识1.1 预备知识1.1.1 集合理论的基本概念1.2 值图像、集合及逻辑算子()膨胀和腐蚀2.1 膨胀2.2 结构元的分解2.3 strel函数2.4 腐蚀(三) 膨胀...

    数字图像处理—形态学图像处理

    同样的,暂时对书上已经写得很清楚的知识点不再重复赘述,主要做一些总结,思考以及知识点的梳理和扩展。

    (一)预备知识

    介绍一下形态学中的一些基本概念。

    1. 用数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具
    2. 基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析识别的目的
    3. 形态学图像处理的数学基础和所用语言是集合论
    4. 形态学图像处理的应用可以简化图像数据, 保持它们基本的形状特性,并除去不相干的结 构
    5. 形态学图像处理的基本运算有4个:膨胀、 腐蚀、开操作和闭操作

    1.1 集合理论中的基本概念

    介绍一下比较陌生的几个概念,其他的看书就好:

    1. 所有像素坐标的集合均不属于集合A,记为AcA^c,由下式给出:
      在这里插入图片描述
      这个集合称为集合A的补集

    2. 集合B的反射,定义为:

      即关于原集合原点对称 .

    3. 集合A平移到点z=(z1,z2),表示为(A)z,定义为:

    1.2 二值图像、集合及逻辑算子

    二值图像

    二值图像(Binary Image),按名字来理解只有两个值,0和1,0代表黑,1代表白,或者说0表示背景,而1表示前景。其保存也相对简单,每个像素只需要1Bit就可以完整存储信息。如果把每个像素看成随机变量,一共有N个像素,那么二值图有2的N次方种变化,而8位灰度图有255的N次方种变化,8为三通道RGB图像有255255255的N次方种变化。也就是说同样尺寸的图像,二值图像保存的信息更少。二值图像(binary image),即图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。

    二值图像集合

    如果A和B是二值图像,那么C=A∪B仍是二值图像。这里,如 果 A 和B中相应的像素不是前景像素就是背景像素,那么 C中的这个像素就是前景像素。以第一种观点,函数 C由下式给出:
    在这里插入图片描述
    另一方面,运用集合的观点,C由下式给出:
    在这里插入图片描述
    集合运算

    1. A为图像集合,B为结构元素(集合)。
    2. 数学形态学运算时B对A进行操作。
    3. 结构元素要有1个原点(即结构元素参与形态学运算的参考点),可以是中心像素,原则上可选任何像素。
      注意:原点可以包含在结构元素中,也可以不包含在结构元素中,但运算的结果常不相同。

    编码

    f = imread('D:\数字图像处理\第九章学习\Fig0903(a).tif');
    g = imread('D:\数字图像处理\第九章学习\Fig0903(b).tif');
    subplot(2,3,1), imshow(f);title('(a)二值图像 A:');
    subplot(2,3,2), imshow(g);title('(b)二值图像 B:');
    subplot(2,3,3), imshow(~f);title('(c)A的补集~A:');
    subplot(2,3,4), imshow(f|g);title('(d) A和B的并集 A|B:');
    subplot(2,3,5), imshow(f&g);title('(e)A和B的交集 A & B:');
    subplot(2,3,6), imshow(f&~g);title('(f)A和B的差集 A&~B');
    

    代码运行效果如下
    在这里插入图片描述
    分析

    图像(d)是 “ UTK”和 “ GT” 图像的并集,包括来自两幅图像的所有前景像素。相反,两幅图像的交集(图(e))显示了字母 “ UTK”和 “ GT”中重叠的像素。最后,集合的差集图像(图(f))显示了 “ UTK”中除去 “ GT” 像素后的字母。

    (二)膨胀和腐蚀

    2.1 膨胀

    膨胀:膨胀是在二值图像中“加长”或“变粗”的操作。这种特殊的方式和变粗的程度由一个称为结构元素的集合控制。(实际就是将结构元素的原点与二值图像中的1重叠,将二值图像中重叠部分不是1的值变为1,完成膨胀)。

    公式

    A和B是两个集合,A被B膨胀定义为:

    公式解释:

    1. B的反射进行平移与A的交集不为空。
    2. B的反射:相对于自身原点的映象。
    3. B的平移:对B的反射进行位移

    图解

          

    (a)集合A    (b)结构元素B (黑色为原点所在)

          

    (c)结构元素B的映像    (d)图中两种阴影部分(深色为扩大的部分)合起来为A+B

    注意

    1. 膨胀运算只要求结构元素的原点在目标图像的内部平移,换句话说,当结构元素在目标图像上平移时,允许结构元素中的非原点像素超出目标图像的范围
    2. 膨胀运算具有扩大图像和填充图像中比结果元素小的成分的作用,因此在实际应用中可以利用膨胀运算连接相邻物体和填充图像中的小孔和狭窄的缝隙

    膨胀举例

    膨胀函数

    D = imdilate(A,B)

    图像膨胀的应用:桥接文字裂缝

    编码:

    A = imread('D:\数字图像处理\第九章学习\Fig0906(a).tif');
    B = [0 1 0; 1 1 1; 0 1 0];   %指定结构元素由0和1组成的矩阵
    A2 = imdilate(A, B);    %二值图像
    subplot(1,2,1), imshow(A);title('(a)包括断开文本的输入图像:');
    subplot(1,2,2), imshow(A2);title('(b)膨胀后图像:');
    

    在这里插入图片描述
    图片中字体的加粗,且填充了字母中的小孔和狭窄的缝隙。

    2.2 结构元的分解

    公式
    在这里插入图片描述
    公式理解

    B膨胀A等同于B1先膨胀A,再用B2膨胀之前的结果。

    举例

    下面是由1组成的5x5数组的膨胀:
    在这里插入图片描述
    这个结构元能够分解为值为 1 的 5 元素行矩阵和值为 1 的 5 元素列矩阵:

    在这里插入图片描述
    分析

    在原结构元中,元素个数为 25; 但在行列分解后,总元素数目仅为 10。这意味着首先用 行结构元膨胀,再用列结构元膨胀,能够比 5x5 的数组膨胀快 2.5 倍。在实践中,速度的增长稍微慢一些,因为在每个膨胀运算中总有些其他开销。然而,由分解执行获得的速度方面的增 长仍然有很大意义。

    2.3 strel函数

    工具箱函数 strel 用于构造各种形状和大小的结构元。

    基本语法

    se = strel(shape, parameters)

    shape用于指定希望形状的字符串,parameters是描述形状信息的参数列表。

    具体例子参考课本,是基础语法。

    2.4 腐蚀

    腐蚀:与膨胀相反,对二值图像中的对象进行“收缩”或“细化”。(实际上将结构元素的原点覆盖在每一个二值图像的1上,只要二值图像上有0和结构元素的1重叠,那么与原点重叠的值为0)同样由集合与结构元素完成。

    公式

    A和B是两个集合,A被B腐蚀定义为:

    公式解释:

    1. A被 B 腐蚀是包含在A中的B由z平移的所有点z的集合。
    2. B包含在A中的声明相当于B不共享A背景的任何元素。

    图解
         

    (a)集合A(阴影部分)   (b)结构元素B(阴影部分,深色部分为原点)(c)阴影部分合起来为A-B

    注意

    1. 当结构元素中原点位置不为1(也即原点不属于结构元素时),也要把它看作是1,也就是说,当在目标图像中找与结构元素B相同的子图像时,也要求子图像中与结构元素B的原点对应的那个位置的像素的值是1。
    2. 腐蚀运算要求结构元素必须完全包括在被腐蚀图像内部:换句话说,当结构元素在目标图像上平移时,结构元素中的任何元素不能超过目标图像范围。
    3. 腐蚀运算的结果不仅与结构元素的形状选取有关,而且还与原点位置的选取有关
    4. 腐蚀运算具有缩小图像和消除图像中比结构元素小的成分的作用,因此在实际应用中,可以利用腐蚀运算去除物体之间的粘连,消除图像中的小颗粒噪声

    腐蚀举例

    腐蚀函数

    A2 = imerode(A, se)

    图像腐蚀应用:消除图像细节部分

    编码:

    f = imread('D:\数字图像处理\第九章学习\Fig0908(a).tif');
    se = strel('disk', 10);
    g = imerode(f, se);
    se = strel('disk', 5);
    g1 = imerode(f, se);
    g2 = imerode(f, strel('disk', 20));
    subplot(2,2,1), imshow(f);title('(a)原始图像的尺寸为480x480像素:');
    subplot(2,2,2), imshow(g);title('(b)用半径为10的圆形腐蚀:');
    subplot(2,2,3), imshow(g1);title('(c)用半径为5的圆形腐蚀:');
    subplot(2,2,4), imshow(g2);title('(d)用半径为20的圆形腐蚀');
    

    分析

    假设要除去图a中的细线,但想保留其他结构,可以选取足够小的结构元来匹配中心方块,但较粗的边缘线因太大而无法匹配全部线。图b几乎成功去掉了模板中的细线,图c中一些引线还没有去掉,图d中引线都被去掉了,但是边缘引线也丢失了,所以选取合适的结构元很重要。

    (三) 膨胀与腐蚀的结合

    3.1 开操作和闭操作

    开操作

    1. 使图像的轮廓变得光滑,断开狭窄的间断和消除细的突出物。
    2. 使用结构元素B对集合A进行开操作,定义为:

      先用B对A腐蚀,然后用B对结果膨胀。
    3. 与开操作等价的数学表达式为:
    4. A o B 的边界通过B中的点完成。
    5. B在A的边界内转动时,B中的点所能到达的A的边界的最远点。
    6. A o B 是 A的子集合。
    7. 如果C是D的子集,则 C o B是 D o B的子集。
    8. (A o B) o B = A o B

    闭操作

    1. 同样使图像的轮廓变得光滑,但与开操作相反,它能消除狭窄的间断和长细的鸿沟,消除小的孔洞,并填补轮廓线中的裂痕。
    2. 使用结构元素B对集合A进行闭操作,定 义为:

      先用B对A膨胀,然后用B对结果腐蚀。
    3. A . B的边界通过B中的点完成 。
    4. B在A的边界外部转动 :
    5. A 是 A . B的子集合。
    6. 如果C 是 D 的子集 , 则C . B 是 D . B的子集。
    7. (A . B) . B = A . B

    工具箱函数

    开操作:

    C = imopen(A, B)

    闭操作:

    C = imclose(A, B)

    A为二值图像,B为0,1矩阵组成,并且是指定结构元素。

    函数imopen 和 imclose 的应用

    编码:

    f = imread('D:\数字图像处理\第九章学习\Fig0910(a).tif');
    se = strel('square', 40);
    fo = imopen(f, se);
    fc = imclose(f, se);
    foc = imclose(fo, se);
    subplot(2,2,1), imshow(f), title('(a)原图');
    subplot(2,2,2), imshow(fo), title('(b)开操作');
    subplot(2,2,3), imshow(fc), title('(c)闭操作');
    subplot(2,2,4), imshow(foc), title('(d) (b)的闭操作结果');
    

    分析

    1. 图(a)中的图像设计了一些用于演示开操作和闭操作的特征,比如细小突起、细的桥接点、几个弯口、孤立的小洞、 小的孤立物和齿状边缘。
    2. 图 (b)显示了结果。注意,从图中可以看出,细的突出和外部点的边缘的不规则部分被去除掉了,细的桥接和小的孤立物也被去除了。
    3. 图 ©中的结果: 这里,细的弯口、内部的不规则边缘和小洞都被去除了。先做开操作的闭操作的结果有平滑效果.
    4. 图 (d)显示了平滑过的物体。

    噪声滤波器

    先开操作再闭操作,构成噪声滤波器。

    编码:

    f = imread('D:\数字图像处理\第九章学习\Fig0911(a).tif');
    se = strel('square', 6);
    fo = imopen(f, se);
    foc = imclose(fo, se);
    subplot(1,3,1), imshow(f), title('(a)带噪声的指纹图像');
    subplot(1,3,2), imshow(fo), title('(b)图像的开操作');
    subplot(1,3,3), imshow(foc), title('(c)先用开操作,再用闭操作');
    

    在这里插入图片描述
    分析

    1. 图(a)是受噪声污染的指纹二值图像,噪声为黑色背景上的亮元素和亮指纹部分的暗元素。
    2. 图(b)所示的图像。发现,对图像进行开操作可以去除噪声点,但是这种处理在指纹的纹脊上又引入一些缺口
    3. 图( c )显示了最终结果。在这个结果中,大多数噪声被消除了,开运算的闭运算可以给指纹填充缺口,但是指纹纹路并没有完全恢复 。

    3.2 击中或击不中变换

    击中击不中变换(HMT),HMT变换可以同时探测图像的内部和外部。研究解决目标图像识别模式识别等领域,在处理目标图像和背景的关系上能够取得更好的效果。

    作用:形状检测的基本工具。

    公式

    A中对B进行的匹配(击中)表示为:

    B1是由与一个对象相联系的B元素构成的集合,B1是由与一个对象相联系的B元素构成的集合。

    图解

    工具箱函数

    C = bwhitmiss(A, B1, B2)

    其中的 C为结果,A为输入图像,B1、B2表示结构元素。

    定位图像中物体左上角的像素

    编码:

    f = imread('D:\数字图像处理\第九章学习\Fig0913(a).tif');
    B1 = strel([0 0 0;0 1 1; 0 1 0]);
    B2 = strel([1 1 1;1 0 0;1 0 0]);
    g = bwhitmiss(f,B1,B2);
    subplot(1,2,1), imshow(f), title('(a)原始图像');
    subplot(1,2,2), imshow(g), title('(b)击中、击不中变换的结果');
    

    分析

    1. 图(a)显示了包括各种尺寸的正方形图像。我们要定位有东、南相邻像素(这些 “击中”)和没有东北、北、西北、西和西南相邻像素(这些 “击不中”)的前景像素。这些要求导致以下B1,B2两个结构元。这两个结构元都不包括东南邻域像素,这称为不关心像素。用函数 bwhitmiss 来计算变换。
    2. 图 (b)中的每个单像素点都是图 (a)中物体左上角的像素。图 (b)中是放大后的像素,以便更清晰。bwhitmiss的替代语法可以把Bl 和 B2 组合成间隔矩阵。只要 B1等于 1 或-1,B2 等于 1, 间隔矩阵就等于 1。对于不关心像素,间隔矩阵等于 0。

    3.3 bwmorph函数

    工具箱函数 bwmorph 执行许多以膨胀、腐蚀和查找表运算相结合为基础的形态学操作, 调用语法为:

    g = bwmorph(f, operation, n);

    f 是输入的二值图像,operation 是指定所希望运算的字符串,n 是指定重复次数的正整数。

    细化

    f = imread('D:\数字图像处理\第九章学习\Fig0911(a).tif');
    g1 = bwmorph(f, 'thin',1);
    g2 = bwmorph(f, 'thin',2);
    ginf = bwmorph(f,'thin', Inf);
    subplot(1,4,1),imshow(f);title('(a)指纹图像:');
    subplot(1,4,2),imshow(g1);title('(b)细化一次后的指纹图像:');
    subplot(1,4,3),imshow(g2);title('(c)细化两次后的图像:');
    subplot(1,4,4),imshow(ginf);title('(d)一直细化到稳定状态的图像:');
    

    在这里插入图片描述
    骨骼化

    f = imread('D:\数字图像处理\第九章学习\Fig0916(a).tif');
    fs = bwmorph(f,'skel',Inf);
    for k = 1:5
        fa = fs & ~endpoints(fs);
    end
    subplot(1,3,1),imshow(f);title('(a)骨头图像:');
    subplot(1,3,2),imshow(fs);title('(b)使用函数 bwmorph 得到的骨豁:');
    subplot(1,3,3),imshow(fa);title('(c)使用函数 endpoint 裁剪后的骨豁:');
    

    在这里插入图片描述
    分析:骨骼化(Gonzalez和 Woods[2008])是另一种减少二值图像中的物体为一组细“笔画”的方法, 这些细骨豁仍保留原始物体形状的重要信息。当 operation 置为 'skel '时,函数 bwmorph 执行骨骼化。令 f 代表图(a)中类似骨头的图像,为了计算骨骼,调用 bwmorph, 令 n=Inf,图(b)显示了骨骼化的结果,与物体的基本形状相似。骨骼化和细化经常产生短的无关的“毛刺” ,有时这被叫做寄生成分。清除(或除去)这些“毛刺”的处理称为裁剪。方法是反复确认并去除端点。通过 5 次去除端点的迭代,得以后处理骨骼化图像 fs,图(c )显示了结果。

    (四)标记连通分量

    工具箱函数

    [L, num] = bwlabel (f, conn)

    f 是输入二值图像,coon指定希望的连接方式(不是4连接就是8连接),输出L叫做标记矩阵,函数num则给出找到的连通分量总数。

    计算和显示连通分量的质心:

    f = imread('D:\数字图像处理\第九章学习\Fig0917(a).tif');
    imshow(f);title('(a)标注连通分量原始图像:');
    [L,n]=bwlabel(f);        %L为标记矩阵,n为找到连接分量的总数
    [r,c]=find(L==3);        %返回第3个对象所有像素的行索引和列索引 
    rbar=mean(r);
    cbar=mean(c);
    figure,imshow(f);title('(b)标记所有对象质心后的图像:');
    hold on            %保持当前图像使其不被刷新
    for k=1:n
       [r,c]=find(L==k);
       rbar=mean(r);
       cbar=mean(c);
       plot(cbar,rbar,'Marker','o','MarkerEdgeColor','k',...
            'MarkerFaceColor','k','MarkerSize',10);
       plot(cbar,rbar,'Marker','*','MarkerFaceColor','w'); %其中的marker为标记
    end
    

    (五)形态学重建

    概述:重构是一种涉及到两幅图像和一个结构元素的形态学变换。一幅图像,即标记,是变换的开始点。另一幅图像是掩膜,用来约束变换过程。结构元素用于定义连接性。

    定义:若G是掩膜,f为标记,则从f重构g可以记为RgR_g(f),由下列的迭代过程定义:

    1. 将h1初始化为标记图像f。
    2. 创建结构元素 :B = ones(3)。
    3. 重复

      直到

      其中,标记f必须是g的一个子集。

    函数

    out = imreconstruct(marker,mask)

    masker是标记,mask是掩膜。

    5.1 通过重建进行开操作

    在形态学开操作中,腐蚀典型地去除小的物体,且随后的膨胀趋向于恢复保留的物体形状。 然而,这种恢复的精确度取决于形状和结构元之间的相似性。本节讨论的方法,通过重建进行开操作能准确地恢复腐蚀之后的物体形状。用结构元B对图像 G通过重建进行开操作可定义为 :
    在这里插入图片描述

    f = imread('D:\数字图像处理\第九章学习\Fig0917(a).tif');
    subplot(3,2,1),imshow(f);title('(a)重构原始图像');
    fe=imerode(f,ones(51,1));%竖线腐蚀
    subplot(3,2,2),imshow(fe);title('(b)使用竖线腐蚀后的结果');
    fo=imopen(f,ones(51,1));%竖线做开运算
    subplot(3,2,3),imshow(fo);title('(c)使用竖线做开运算结果');
    fobr=imreconstruct(fe,f);%fe做标记
    subplot(3,2,4),imshow(fobr);title('(d)使用竖线做重构开运算');
    ff=imfill(f,'holes');%对f进行孔洞填充
    subplot(3,2,5),imshow(ff);title('(e)对f填充孔洞后的图像');
    fc=imclearborder(f,8);%清除边界,2维8邻接
    subplot(3,2,6),imshow(fc);title('(f)对f清除边界后的图像');
    

    在这里插入图片描述
    分析

    1. 传统开运算中,腐蚀去除掉小对象,随后的膨胀恢复原始对象形状,但受元素结构影响,恢复的往往不是很精确。
    2. 重构则能精确恢复原始图像。

    5.2 填充孔洞

    令I表示二值图像,假设我们选择标记图像F,除了图像边缘外,其余部分都为 0, 边缘部分设值为 1-I:
    在这里插入图片描述
    函数

    g = imfill(f,‘holes’);

    5.3 清除边界物体

    定义标记图像F为:
    在这里插入图片描述
    其中,/是原始图像,然后以/作为模板图像,重建
    在这里插入图片描述
    得到一幅图像H, 其中仅包含与边界接触的物体。

    函数

    g = imclearborder(f,conn)

    f 是输入图像,g 是结果。conn 的值不是 4 就是 8(默认)。 物体更亮且与图像边界相连接的结构。

    (六)灰度级形态学

    6.1 膨胀和腐蚀

    灰度图像的形态学梯度定义为膨胀运算与腐蚀运算的结果之间的差值。

    膨胀定义

    1. 使用结构元素b对f的灰度膨胀定义为:

      其中,DfD_fDbD_b分别是f和b的定义域,f和b是函数而不是二值形态学情况中的集合。

    2. 当结构元素b是平坦的,即b(x,y)在其定义域内都为0时:
      在这里插入图片描述

    腐蚀定义

    1. 使用结构元素b对f的灰度腐蚀定义为:
      在这里插入图片描述
      其中,DfD_fDbD_b分别是f和b的定义域。

    2. 当结构元素b是平坦的,即b(x,y)在其定义域内都为0时:
      在这里插入图片描述

    膨胀和腐蚀操作

    编写代码:

    f = imread('D:\数字图像处理\第九章学习\Fig0923(a).tif');
    se=strel('square',3);  %构造了一个平坦的3x3的结构元素
    gd=imdilate(f,se);    %对原图像进行膨胀操作
    ge=imerode(f,se);     %对原图像进行腐蚀操作
    morph_grad=imsubtract(gd,ge); %从膨胀的图像中减去腐蚀过得图像产生一个形态学梯度。
    subplot(3,2,1);imshow(f,[]);title('(a)原始图像');
    subplot(3,2,2),imshow(gd,[]);title('(b)膨胀的图像');
    subplot(3,2,3),imshow(ge,[]);title('(c)腐蚀的图像');
    subplot(3,2,4),imshow(morph_grad,[]);title('(d)形态学梯度');
    

    在这里插入图片描述
    分析

    1. 膨胀得到的图像比原图像更明亮,并且减弱或消除小的,暗的细节部分。即比原图像模糊。
    2. 腐蚀得到的图像更暗,并且尺寸小,明亮的部分被削弱 。

    6.2 开操作和闭操作

    图像开运算

    1. 在灰度图像中,开操作的表达式与二值图像拥有相同的形式。
    2. 把一幅图像看做是一个三维表明,其亮度值代表xy平面上的高度值,则当结构元素b在f下面活动时,结构元素的任何部分的最高值构成了开运算的结果。
    3. 先进行腐蚀操作可以除去小的亮的图像细节,但这样会使图像变暗,接下来进行膨胀操作增强图像的整体亮度。

    图像闭运算

    1. 在灰度图像中,闭操作的表达式与二值图像拥有相同的形式。
    2. 当结构元素b在f的上面活动时,结构元素的任何部分的最低值构成了闭运算的结果 。
    3. 先通过膨胀操作除去图像中的暗细节,同时增加图像的亮度,接下来对图像进行腐蚀,而不会将膨胀操作除去的部分重新引入图像中。

    用开操作和闭操作做形态学平滑

    f = imread('D:\数字图像处理\第九章学习\Fig0925(a).tif');
    subplot(3,2,1),imshow(f);  
    title('(a)木钉图像原图');   
    se=strel('disk',5);     %disk其实就是一个八边形  
    fo=imopen(f,se);        %经过开运算  
    subplot(3,2,2),imshow(f);  
    title('(b)使用半径5的disk开运算后的图像');   
    foc=imclose(fo,se);  
    subplot(3,2,3),imshow(foc);  
    title('(c)先开后闭的图像'); 
    focd=imclose(f,se);  
    subplot(3,2,4),imshow(focd);  
    title('(d)原始图像的闭操作'); 
    foce=imopen(focd,se);  
    subplot(3,2,5),imshow(foce);  
    title('(e)先闭后开的图像'); 
    fasf=f;  
    for i=2:5  
        se=strel('disk',i);  
        fasf=imclose(imopen(fasf,se),se);  
    end  
    subplot(3,2,6),imshow(fasf);  
    title('(f)使用开闭交替滤波后图像'); 
    
    
    

    在这里插入图片描述
    分析

    1. 图 (b)显示了开操作的图像 fo, 在这里,我们看到,亮区域己经被调低了(平滑),木钉上的暗条文几乎没有受影响。
    2. 图 (c )显示了开操作的闭操作 foe。现在我们注意到,暗区域已经被平滑得很好了,结果是整个图像得到全部平滑。这种过程通常叫做开-闭滤波。先开运算后闭运算构成噪声滤波器,用来平滑图像并去除噪声。
    3. 图 (d)显示了原始图像的闭操作结果。木钉上的暗条文已经被平滑掉了,主要留下了亮的细节(注意背景中的亮条文)。
    4. 图 (e)显示了这些条文的平滑和木钉表面的进一步平滑效果。最终结果是原始图像得到全部平滑。
    5. 图(f)是交替顺序滤波,交替顺序滤波的一种形式是用不断增大的一系列结构元执行开-闭滤波,刚开始用小的结构元,增加大小,直到与图 (b)和©中结构元的大小相同为止。交替顺序滤波与单个开-闭滤波相比,处理图像更平滑一些。

    非均匀背景的补偿

    f = imread('D:\数字图像处理\第九章学习\Fig0926(a).tif');
    g = f>=(255*graythresh(f));
    se=strel('disk',100);
    fo=imopen(f,se);
    f2=imsubtract(f,fo); 
    g1 = f2>=(255*graythresh(f2));
    subplot(2,3,1),imshow(f);  
    title('(a)原始图像');  
    subplot(2,3,2),imshow(g);  
    title('(b)经过阈值处理后的图像');   
    subplot(2,3,3),imshow(f);  
    title('(c)原图开运算后的图像');  
    subplot(2,3,4),imshow(f2);  
    title('(d)原图减去开运算');  
    subplot(2,3,5),imshow(g1);  
    title('(e)最终结果');  
    

    在这里插入图片描述
    分析

    1. 图 (a) :显示了一幅米粒的图像f,图像下部的背景比上部的黑。这样的话,对不平坦的亮度进行阈值处理会很困难。
    2. 图 (b) "是阈值处理方案,图像顶端的米粒被很好地从背景中分离开来,但是图像底部的米粒没有从背景中正确地提取出来。
    3. 图(c ):对图像进行开操作,可以产生对整个图像背景的合理估计。
    4. 图(d) :把图(c )从原始图像中减去,生成一幅拥有合适的均勾背景的米粒图像.
    5. 图(e):显示了新的经阈值处理后的图像。注意,改进效果超过了图 (b)。

    粒度测定 :

    颗粒分析:形态学技术可以用与间接地度量颗粒的大小分布,但不能准确地识别每一个颗粒。对于形状规则且亮于背景大的颗粒,基本方法是应用不断增大尺寸的形态学开运算。

    f = imread('D:\数字图像处理\第九章学习\Fig0926(a).tif');
    sumpixels=zeros(1,36);  
    for k=0:35  
        se=strel('disk',k);  
        fo=imopen(f,se);  
        sumpixels(k+1)=sum(fo(:));  
    end    
    %可以看到,连续开运算之间的表面积会减少  
    plot(0:35,sumpixels),xlabel('k'),ylabel('surface area');  
    title('(a)表面积和结构元素半径之间的关系');  
    figure,plot(-diff(sumpixels));%diff()函数为差分或者近似倒数,即相邻2个之间的差值  
    xlabel('k'),ylabel('surface area reduction');  
    title('(b)减少的表面积和结构元素半径之间的关系'); 
    

    分析

    1. (a)连续开运算之间的表面积会减小。
    2. (b)图峰值表明出现了大量的有着这种半径的对象。

    6.3 重建

    重建

    1. h极小值变换:标记图像是由掩膜挑选ing减去常量所得。
    2. 开运算重建:先腐蚀后重建。
    3. 闭运算重建:对图像求补、计算其开操作重建并对结果求补。

    重建移去复杂的背景

    f = imread('D:\数字图像处理\第九章学习\Fig0930(a).tif');
    subplot(3,3,1),imshow(f);  
    title('(a)原图像');    
    f_obr=imreconstruct(imerode(f,ones(1,71)),f);  
    subplot(3,3,2),imshow(f_obr);  
    title('(b)重建的开操作');   
    f_o=imopen(f,ones(1,71));    
    subplot(3,3,3),imshow(f_o);  
    title('(c)开操作');    
    f_thr=imsubtract(f,f_obr);    %顶帽重构
    subplot(3,3,4),imshow(f_thr);  
    title('(d)重建的顶帽操作');  
    f_th=imsubtract(f,f_o)    %标准顶帽运算,方便比较
    subplot(3,3,5),imshow(f_th);  
    title('(e)顶帽操作');  
    g_obr=imreconstruct(imerode(f_thr,ones(1,11)),f_thr);  
    subplot(3,3,6),imshow(g_obr);  
    title('(f)用水平线对(b)经开运算后重建图');   
    g_obrd=imdilate(g_obr,ones(1,2));  
    subplot(3,3,7),imshow(g_obrd);  
    title('(g)使用水平线对(f)进行膨胀');  
    f2=imreconstruct(min(g_obrd,f_thr),f_thr);  
    subplot(3,3,8),imshow(f2);  
    title('(h)最后的重建结果');  
    

    在这里插入图片描述
    分析

    为了消除每个键盘上方的水平反射光,利用这些反射比图像中任何文本字符都要宽的这个事实。用长水平线的结构元执行重建的开操作,重建的开操作(f_obr) 显示于图(b)中。为了进行对比,图(c )显示了标准的开操作 (f_o) 。重建的开操作在提取水平的相邻键之间的背景方面的确较好。从原始图像中减去重建的开操作被称为顶帽重建 , 结果示于图 (d)中。消除图 (d)中键右边的垂直反射光。这可以通过用短的水平线执行重建的开操作来完成,在这个结果中(见图 (f)),垂直的反射光不见了。但是,包括字母的垂直的细笔画也不见了。我们利用了那些已被错误消除的字母非常接近第一次膨胀(见图 (g))后还存在的其他字符这一事实,以 f_thr 作为模板,以 min(g_obrd,f_thr) 作为标记,图 (h)显示了最后的结果。注意,背景上键盘的阴影和反射光都成功去除了。

    展开全文
  • 数字图像处理章数字图像处理---频域处理(一)维离散傅里叶变换4.1线性空间滤波4.1.1 相关4.1.2 卷积4.1.3 imfilter函数4.2 非线性空间滤波(五)图像处理工具箱标准的空间滤波器5.1线性空间滤波器5.2非线性...

    数字图像处理—频域处理

    (一)二维离散傅里叶变换

    基本定义:

    1. 二维离散傅里叶变换:(Two-Dimensional Discrete Fourier Transform)是一种数字变换方法,一般应用于将图像从空间域转至频域,在图像增强、图像去噪、图像边缘检测、图像特征提取、图像压缩等等应用中都起着极其重要的作用。
    2. 频谱:对一个时域信号进行傅里叶变换,就可以得到的信号的频谱,信号的频谱由两部分构成:幅度谱相位谱,相位谱描述各个分量的相位随角频率的变化。幅度谱描述各个分量的幅度随着频率的变化。
    3. 功率谱:为信号频谱的平方。可观察图像的能量分布,如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域差异都不大,梯度相对较小),反之,如果频谱图中亮的点数多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大的。
    4. 相位:表示相对于原始波形,这个波形的偏移量(左或右)。
    5. 频域:频域就是频率域,平常我们用的是时域,是和时间有关的,这里只和频率有关,是时间域的倒数。时域中,X轴是时间,频域中是频率。频域分析就是分析它的频率特性。

    进一步直观的理解这几个定义,编写代码如下:

    h = imread('D:\数字图像处理\第三章学习\cat2.jpg');
    f = im2double(rgb2gray(h));    %把图像变为灰度图像
    F = fft2(f);                   %对图像进行傅里叶变换
    FF = fftshift(F);              %对图像频谱进行移动,使0频率点在中心
    s=log(abs(FF));                %获得傅里叶变换的幅度谱
    p=log(angle(FF)*180/pi);       %获得傅里叶变换的相位谱
    figure;
    subplot(1, 3, 1), imshow(h), title('原图像');
    subplot(1, 3, 2), imshow(s), title('图像的傅里叶变换幅度谱');
    subplot(1, 3, 3), imshow(p), title('图像的傅里叶变换相位谱');
    

    代码运行效果如下:

    傅立叶频谱图上我们看到的明暗不一的亮点,实际是图像上某一点与邻域点差异的强弱,即梯度的大小,也即该点的频率的大小,图像中的低频部分(能量大,呈现白色)指低梯度的点,高频部分(能量小,呈现黑灰色)反之。

    理论推导:

    令f(x,y)代表一幅大小为 MxN的 数字图像,其中x=0,1,2,…,M-1, y=0,1,2,…,N-1, 由 F(u,v)表 示 的f(x,y)的二维离散傅立变换(DFT)可以由下式给出:
    在这里插入图片描述
    其中u=0,1,2,…,M-1,v=0,1,2,…,N-1。我们可以借助决定频率的变量 u、v(x和 y求和) 将指数形式展开为正弦和余弦的形式。频域系统是以 u,v(频率)为变量来表示 F(u, v)的坐标系。 离散傅立叶反变换(IDFT)的形式为:
    在这里插入图片描述
    其中x=0,1,2,…,M-1,y=0,1,2,…,N-1。。因此,给定 F(u, v), 我们可以借助 IDFT(傅立叶反变换)来得到f(x,y)。

    注意:由于 MATLAB中的 数组索引以1 开头,而不是以0 开头,MATLAB中的F(1,1)和f(1,1)对应数学公式中正变换和反变换的F(0,0)和f(0,0)。 一般而言,F(i,j)= F(i-1,j-1),且f(i,j)= f(i-1,j-1) i=1 2,…,M且j=1,2,…,N。

    傅立叶谱可以定义如下:
    在这里插入图片描述
    变换的相角定义如下:
    在这里插入图片描述
    这两个函数可在极坐标形式下用于表示复函数F(u,v):
    在这里插入图片描述
    功率谱可以定义为幅度的平方:
    在这里插入图片描述
    如果f(x,y)是实函数,它的傅立叶变换就是关于原点共轭对称的:
    在这里插入图片描述
    这意味着傅立叶谱也是关于原点对称的:
    在这里插入图片描述
    可以将它直接代入到公式 F(u,v)中:

    F(u,v)= F(u+k1,M,v)=F(u,v+k2k_2N)= F(u+k1Mk_1M,v+k2Nk_2N)

    其中,k1k_1k2k_2是整数。DFT 在u, v 方向上是无穷周期的,周期由 M和N决定。周期性也是 DFT 逆变换的重要特性:

    f(x,y)=f(x+k1Mk_1M,y)=f(x,y+k2Mk_2M)=f(x+k1Mk_1M,y+k2Nk_2N)

    也就是说,通过傅立叶反变换得到的图像也是无穷周期的。并且,在计算离散傅立叶变换时只计算它的一个周期,即仅处理尺寸为MXN的数组。

    (二)在 MATLAB 中计算及观察二维 DFT

    在实践中,DFT 及其反变换可以用快速傅立叶变换(FFT)算法实现。一幅图像数组 f 的 FFT 可以在 MATLAB中用函数 fft2 得到,语法如下:

    F = fft2(f)
    

    代码编写:

    f = imread('D:\数字图像处理\第三章学习\light.png');
    F = fft2(f);
    subplot(1, 2, 1), imshow(f), title('原图像');
    subplot(1, 2, 2), imshow(uint8(real(F))), title('图像数组f的FFT');
    

    代码运行状态如下:

    这个函数返回的傅立叶变换,大小仍为 MxN,目前是看不出来什么。

    继续操作,使用傅立叶变换滤波时,需要对输入数据进行 0 填充。在这种情况下,语法变为:

    F = fft2 (f,P,Q)             %快速傅里叶变换
    

    代码编写如下:

    f = imread('D:\数字图像处理\第三章学习\light.png');
    F = fft2(f,200,300);
    subplot(1, 2, 1), imshow(f), title('原图像');
    subplot(1, 2, 2), imshow(uint8(real(F))), title('图像数组f的FFT');       %real获得F的傅里叶变换的实部:
    

    代码运行状态如下:

    fft2 对输入图像填充所需数目的 0, 结果大小变为 200x300。

    傅立叶谱可以通过使用函数 abs 函数获得:

    S = abs(F)
    

    代码编写:

    g = imread('D:\数字图像处理\第三章学习\light.png');
    f = rgb2gray(g);    %把图像变为灰度图像
    F = fft2(f);
    S = abs(F);
    subplot(1, 2, 1), imshow(g), title('原图像');
    subplot(1, 2, 2), imshow(S,[]), title('傅里叶谱');
    

    代码运行状态如下:

    图中 4个角上的亮点是周期特性的结果。可以使用函数 fftshift 将变换的原点移动到频域矩形的中心,语法为:

    Fc = fftshift(F)      
    

    代码编写:

    g = imread('D:\数字图像处理\第三章学习\light.png');
    f = rgb2gray(g);    %把图像变为灰度图像
    F = fft2(f);
    Fc = fftshift(F);      %将变换的原点移动到频域矩形的中心
    subplot(1, 2, 1), imshow(g), title('原图像');
    subplot(1, 2, 2), imshow(abs(Fc),[ ]), title('fftshift居中变换');
    

    代码运行状态如下:

    居中后的结果是很明显的。该谱值的范围很大(0 到420 495),与用 8 位显示相比,中心处的亮度值占支配地位。可通过 log 变换处理这个难点。

    代码编写如下:

    g = imread('D:\数字图像处理\第三章学习\light.png');
    f = rgb2gray(g);    %把图像变为灰度图像
    F = fft2(f);
    Fc = fftshift(F);         %将变换的原点移动到频域矩形的中心
    S2 = log(1+ abs(Fc));      % 对数变换,增强显示视觉效果
    subplot(1, 2, 1), imshow(g), title('原图像');
    subplot(1, 2, 2), imshow(S2,[ ]), title('log变换处理增强细节');
    

    代码运行状态如下:

    可见细节的增加是很明显的。反居中变换函数 ifftshift 的语法形式是:

    F = ifftshift(Fc)
    

    代码编写:

    g = imread('D:\数字图像处理\第三章学习\light.png');
    f = rgb2gray(g);    %把图像变为灰度图像
    F1 = fft2(f);
    Fc = fftshift(F1);
    F = ifftshift(Fc)
    subplot(1, 2, 1), imshow(g), title('原图像');
    subplot(1, 2, 2), imshow(uint8(real(F))), title('ifftshift反居中变换');
    

    代码运行状态如下:

    这个函数也可以用来将初始点在矩形中点的函数变换为中心点在矩形左上角的函数。

    (三)频域滤波

    3.1基础知识

    空(间)域和频(率)域的线性滤波的基础都是卷积定理,可以被写作:
    在这里插入图片描述
    逆变换为:
    在这里插入图片描述
    在这里,符号"星号"表示两个函数的卷积,双箭头两边的表达式组成傅立叶变换对。例如, 第一个表达式表明两个空间函数(表达式左侧的项)的卷积可以通过计算两个傅立叶变换函数(表达式的右侧)的乘积的反变换得到。相反,两个空间函数的卷积的正傅立叶变换给出了两个函数傅立叶变换的乘积。

    当工作在离散量时,我们知道F和H是周期性的,这意味着在离散频域执行卷积也是周期性的。由于这个原因,用DFT 执行的卷积叫做循环卷积。保证空间和循环卷积给出相同结果的唯一方法是使用适当的 0 填充。

    执行未填充的滤波效果,代码编写:

    function H = lpfilter(type, M, N, D0, n)
    [U, V] = dftuv(M, N);
    D = sqrt(U.^2 + V.^2);
    switch type
    case 'ideal'
       H = double(D <= D0);
    case 'btw'
       if nargin == 4
          n = 1; 
       end
       H = 1./(1 + (D./D0).^(2*n));
    case 'gaussian'
       H = exp(-(D.^2)./(2*(D0^2)));
    otherwise
       error('Unknown filter type.')
    end
               
    
    h = imread('D:\数字图像处理\第三章学习\cat2.jpg');
    f = im2double(rgb2gray(h));        %把图像变为灰度图像
    [M,N]=size(f);
    F = fft2(f);                      %计算傅里叶变换
    sig=10;                           %指定高斯低通滤波器的标准偏差
    H=lpfilter('gaussian',M,N,sig);   %高斯低通滤波器生成
    G=H.*F;                           %将变换乘以滤波函数
    g=real(ifft2(G));                 %获得G的傅里叶逆变换实部
    figure;
    subplot(1, 2, 1), imshow(h), title('原图像');
    subplot(1, 2, 2), imshow(g), title('未填充的滤波效果');
    
    

    代码运行效果如下:

    正像我们预计的那样,图像变模糊了,但是注意垂直的边缘没有模糊。

    执行已填充的滤波效果,代码编写:

    function PQ = paddedsize(AB, CD, PARAM)
    if nargin == 1
        PQ = 2*AB;
    elseif nargin == 2 && -ischar(CD)
        PQ = AB + CD - 1;
        PQ = 2 * ceil(PQ / 2);
    elseif nargin == 2
        m = max(AB);
        P = 2^nextpow2(2*m);
        PQ = [P, P];
    elseif (nargin == 3) && strcmp(PARAM, 'pwr2')
        m = max([AB CD]);
        P = 2^nextpow2(2*m);
        PQ = [P, P];
    else
        error('Wrong number of inputs.')
    end  
    
    h = imread('D:\数字图像处理\第三章学习\cat2.jpg');
    f = im2double(rgb2gray(h));         %把图像变为灰度图像
    PQ = paddedsize(size(f));           %用函数 paddedsize 获得填充参数
    Fp = fft2(f,PQ(1),PQ(2));           %得到有填充的傅立叶变换
    Hp = lpfilter('gaussian', PQ(1), PQ(2), 2*sig);     %现在滤波器的大小是没有进行填充时的两倍。 
    Gp=Hp.*Fp;                          %用滤波器乘以FFT 变换
    gp=ifft2(Gp);                       %获得 Gp 的逆 FFT 变换
    gpc = gp(1:size(f,1), 1:size(f,2)); 
    figure;
    subplot(1, 2, 1), imshow(h), title('原图像');
    subplot(1, 2, 2), imshow(gpc), title('已填充的滤波效果');
    
    

    代码运行效果如下:

    现在,这个图像有围绕在四周的均匀黑色边界。因此, 用这个无限序列与平滑滤波器卷积,将会在图像所有的亮边缘显示灰色的模糊效果。

    3.2 DFT 滤波的基本步骤

    前面的讨论可以概括为下面几个步骤,其中 f 是被滤波处理的图像,gpc为处理结果,同时假设滤波函数 H与填充后的图像大小相等。

    1. 把输入图像变成double类型图像:
    f = im2double(rgb2gray(h));   
    
    1. 用函数 paddedsize 获得填充参数:
    PQ = paddedsize(size(f)); 
    
    1. 得到有填充的傅立叶变换:
    Fp = fft2(f,PQ(1),PQ(2)); 
    
    1. 用滤波器乘以FFT 变换:
    Gp=Hp.*Fp;  
    
    1. 获得 Gp 的逆 FFT 变换:
    gp=ifft2(Gp);  
    
    1. 修剪左上部矩形为原始大小:
    gpc = gp(1:size(f,1), 1:size(f,2)); 
    

    预处理阶段包括确定图像大小,获得填充参数和生成一个滤波函数等,后处理阶段包括计算结果的实部,修剪图像,以及将图像类型的转换。

    3.3 频域滤波的M-函数

    有一些可用 的 M-函数是很方便的,它们可以接收输入图像和滤波函数,处理所有滤波细节,并输出滤波后的结果以及修剪图像。下面的函数可实现这些工作,假定滤波函数已被适当地做了大小排列。在某些应用中,把滤波后的图像变换为与输入相同的类是很有用的;有些时候处理浮点数是必要的。这些函数可以做这些事。

    function g = dftfilt(f, H, classout) 
    [f, revertClass] = tofloat(f);               %用函数 tofloat 把输入图像变换为浮点图像:
    F = fft2(f, size(H, 1), size(H, 2));         %得到有填充的傅立叶变换
    g = ifft2(H.*F);                             %获得H.*F的逆FFT变换
    g = g(1:size(ff 1), 1:size(f, 2));           %修剪左上部矩形为原始大小
    if nargin == 2 || strcmp(classout,'priginal')         %输入参数个数为2
        g = revertClass(g);                      %把滤波过的图像变换为输入图像的类
     elseif strcmp(classout,'fltpoint')          %比较classout是否为fltpoint
       return 
     else
       error('Undefined class for the output image.’)
    end
       
    
    展开全文
  • 数字图像处理期中学习报告

    千次阅读 2018-09-07 19:26:28
    数字图像处理数字图像处理 一学习内容总结 第一章 绪论 1 什么是数字图像处理 2 使用数字图像处理领域的实例 3 数字图像处理的基本步骤 4 图像处理系统的组成 第章 数字图像处理基础 1 视觉感知要素 2 光和电磁...
  • 数字图像处理第一章

    2020-05-26 10:42:32
    数字图像处理基础数字图像处理绪论1.数字图像处理是什么?2.数字图像处理的应用领域伽马射线成像X射线成像紫外波段成像可见光及红外波段成像微波波段成像无线电波段成像3.数字图像处理的基本步骤 数字图像处理绪论 1...
  • 在图像识别,如果可以将图像感兴趣的物体或区别分割出来,无疑可以增加我们图像识别的准确率,传统的数字图像处理中的分割方法多数基于灰度值的两个基本性质 不连续 以灰度突变为基础分割一副图像,比如图像的...
  • 数字图像处理,Matlab常用图像处理函数汇总

    万次阅读 多人点赞 2016-08-06 22:01:34
    原文地址:Matlab图像处理函数汇总 作者:mimi 图像的变换  ① fft2:fft2函数用于数字图像的维傅立叶变换,如:i=imread('104_8.tif'); j=fft2(i); ②ifft2::ifft2函数用于数字图像的维傅立叶反变换,如...
  • 图像的像素的意义 一幅图像,经过取样和量化之后就可以得到数字...数字图像处理的基本操作,有些需要在空间域进行,而另外的一些则需要在变换域进行。 空间域:就是指图像的本身,由所采集到的一个个像素组成。...
  • 前面2章都是介绍的章节。 1。了解到数字图像是怎样获取的?首先有照射能量源,场景元素,成像系统,平面投影区。在平面投影区形成场景元素的像,用CCD传感器将颜色对比度转化为电压脉冲信号。形成数字信号。在...
  • 第1章 绪论 什么是数字图像处理 一副图像可以定义为一个维函数f(x,y)f(x,y)f...数字图像处理界定为其输入和输出都是图像的处理、从图像提取特征的处理、各个目标的识别 三种典型的计算处理 低级处理:输入输出...
  • 《数字图像处理》复习提纲

    千次阅读 2019-06-11 09:44:34
    本文在撰写过程参考了由何东健教授主编、西安电子科技大学出版社出版的《数字图像处理》(第三版),一切著作权归原书作者和出版社所有。特别感谢长安大学软件系老师的认真负责的教导。 第1章 概论 1.1 数字...
  • 数字图像处理章数字图像处理---灰度变换与空间滤波(四)空间滤波4.1线性空间滤波4.2非线性空间滤波 数字图像处理—灰度变换与空间滤波 (四)空间滤波 邻域处理包含以下过程: 选择中心点( x,y) ; 仅对...
  • 图像处理算法分类

    千次阅读 2019-02-25 13:31:45
    算法分类 ...下面来分类下各个分支,有些分支有些二义性,因为其可以属于不同的父节点,所以学习过程会有交叉部分。 形态学 增强 滤波 滤波分为空域滤波和频域滤波两类: 空域: 频域: 复原 分割...
  • Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。1)使用 Image 类PIL最重要的类是...
  • 数字图像处理[M]. 电子工业出版社, 2014.第一章 绪论1 数字图像处理的主要内容(基本步骤)是什么?主要内容:图像获取、图像增强、图像复原、彩色图像处理、(小波变换)、形态学处理、分 割、识别、压缩编码。 ...
  • 图像处理之直方图处理

    千次阅读 2019-10-14 09:17:01
    其中是第k级灰度值(=k),是图像中灰度值为的像素个数。 通常用MN表示的图像像素的总数除它的每个分量来归一化直方图,即: M和N分别是图像的行和列维数,k = 0,1,...,L-1。归一化直方图的所有分量和为1。 若一...
  • matlab图像处理常用函数大全

    万次阅读 多人点赞 2018-07-16 16:03:34
    显示索引图像和灰度图像&gt;&gt; [X,map]=imread('trees.tif');&gt;&gt; gmap=rgb2gray(map);&gt;&gt; figure,imshow(X,map);&gt;&gt; figure,imshow(X,gmap);利用膨胀函数平移图像...
  • 一、人眼结构 眼睛由三层膜包裹:角膜与巩膜外壳、脉络膜和视网膜。 角膜是一种硬而透明的组织,覆盖着眼睛的前表面,巩膜是一层包围眼球其余部分的不透明膜。...每只眼睛的锥状体数量约为600~700万个,对...
1 2 3 4 5 ... 20
收藏数 16,363
精华内容 6,545
关键字:

图像处理中的二义性