北航数图实验报告四图像腐蚀和膨胀
- 格式:docx
- 大小:599.70 KB
- 文档页数:7
腐蚀与膨胀是形态学的基本操作,在灰度图像中也是如此,在二值图像中腐蚀和膨胀定义为对图像进行translation以后的“与”和“或”的逻辑操作结果,在灰度图像中,为了保存灰度信息,“与”和“或”操作被对应的替换成了“最大值”和“最小值”操作这样就给出了灰度图像中腐蚀和膨胀的操作定义。
另一种定义《图像处理、分析与机器视觉》中给出的是这样的,首先给出了个本影的概念,如果假设给出函数y=f(x),那么f产生的曲线到x轴的阴影叫做本影,曲线叫做顶面(三维的叫面,二维的叫线,三维以上叫超平面),结构元表示为函数v=k(x),一维函数f,k的腐蚀和膨胀等效于其本影(二值图像)的腐蚀与膨胀,并以此为基础推广到二维灰度图。
我们以512x512的lena图中的第256行为例,展示下其操作结果,结构元为横向的1x5的结构元SE(1行,5列),中心为SE中心。
下图为灰度图剖面示意图,其中蓝色为原图数据,绿色为膨胀后数据,红色为腐蚀后数据:我们将局部放大,可以看到其具体情况:开操作与闭操作与二值图像中的定义相同,开、闭操作也又腐蚀膨胀操作衍生出来的,依旧先腐蚀后膨胀是开操作,先膨胀后腐蚀是闭操作。
具体如下图,蓝色为原图,绿色为闭操作,红色为开操作:局部放大,可以看出,开操作是将跨度小于结构元的峰顶消去,闭操作是将跨度小于结构元的谷底填平,冈萨雷斯的书中层有个滚动圆形结构元的例子也很生动,结论一致:顶帽和底帽顶帽操作和底帽操作是灰度图像所特有的,其原理是开操作将使峰顶消去,具体消去了多少呢,可以用原图减去开操作结果,这样就能得到其消去的部分,而这个过程成为顶帽操作,顶帽就是开操作消去的峰顶,这一部分对应于图像中较亮的部分,也叫白色顶帽。
同理,底帽操作是用闭操作的结果减去原图就得到被闭操作填充的谷底部分,这一部分对应于图像中较暗的部分,也叫黑色底帽。
测地腐蚀与测地膨胀测地腐蚀与测地膨胀在二值图像中的操作是将腐蚀与膨胀结果与ground做“与”和“或”操作,与灰度膨胀中膨胀的推广一样,“与”和“或”被取代为最大值和最小值。
一、腐蚀和膨胀
1、腐蚀和膨胀的主要功能
(1)消除噪声
(2)分割出独立的图像元素,在图像中连接相邻的元素
(3)寻找图像中的极大值或者极小值区域
(4)求出图像的梯度
2、膨胀(dilate)
膨胀就是求局部最大值的操作。
从数学角度来说,就是将图像与核进行卷积,计算核B覆盖区域的像素点的最大值,并把这个最大值赋值给参考点指定的元素。
这样就会使图像中的高亮区域逐渐增长。
3、腐蚀(erode)
腐蚀和膨胀是相反的操作,腐蚀是求局部最小值的操作。
腐蚀操作会使图像中的高亮区逐渐减小。
北京航空航天大学数字图像处理实验报告实验四:图像分割处理学院专业方向班级学号学生姓名指导教师实验四图像分割处理实验1.实验目的(1)了解图像分割的基本原理,并利用图像分割算法进行图像分割处理;(2)掌握数学形态学的基本运算。
2.实验内容(1)利用类间方差阈值算法实现图像的分割处理;(2)利用形态学处理进行处理结果修正。
3. 实验要求(1)实验用图:(2)对输入图像进行平滑处理,以减小噪声对分割处理的影响;(3)利用类间方差阈值算法对滤波处理后图像进行分割处理,获取分割图像;(4)利用数学形态学中的腐蚀和膨胀运算处理,剔除分割处理结果中的一些细小的残余误分割点,在进行腐蚀和膨胀运算时可采用半径为r的圆形结构元素,注意比较选取不同r值时的处理结果。
四、实验代码function STshiyan4_OpeningFcn(hObject, eventdata, handles, varargin) I=imread('4.bmp');I=rgb2gray(I);subplot(3,3,1);imshow(I);title('原图像');IM=medfilt2(I);%中值滤波subplot(3,3,2);imshow(IM);title('中值滤波后图像');function pushbutton1_Callback(hObject, eventdata, handles)I1=imread('4.bmp');I1=rgb2gray(I1);T=Otsu(I1);IM1=medfilt2(I1);s=size(IM1);for m=1:s(1)for n=1:s(2)if IM1(m,n)>=TIM1(m,n)=255;elseIM1(m,n)=0;endendendsubplot(3,3,3);imshow(IM1);title('最大类间方差法');function pushbutton2_Callback(hObject, eventdata, handles) I = imread('4.bmp');%--------------r=1腐蚀--------------------------se1 = strel('disk',1,8);I1 = imerode(I,se1);subplot(3,3,4);imshow(I1);title('r=1的腐蚀运算');%--------------r=2腐蚀--------------------------se2 = strel('disk',2,8);I2 = imerode(I,se2);subplot(3,3,5);imshow(I2);title('r=2的腐蚀运算');%--------------r=3腐蚀--------------------------se3 = strel('disk',3,8);I3 = imerode(I,se3);subplot(3,3,6);imshow(I3);title('r=3的腐蚀运算');function pushbutton3_Callback(hObject, eventdata, handles) I = imread('4.bmp');%--------------r=1膨胀--------------------------se1 = strel('disk',1,8);I1 = imdilate(I,se1);subplot(3,3,7);imshow(I1);title('r=1的膨胀运算');%--------------r=2膨胀--------------------------se2 = strel('disk',2,8);I2 = imdilate(I,se2);subplot(3,3,8);imshow(I2);title('r=2的膨胀运算');%--------------r=3膨胀--------------------------se3 = strel('disk',3,8);I3 = imdilate(I,se3);subplot(3,3,9);imshow(I3);title('r=3的膨胀运算');五、实验结果程序运行后,进入到GUI页面,选择相应的按钮就可以显示相应的变换图像结果,如下:。
摘要伴随着电子计算机技术的进步,通信技术日新月异的更新与发展,图像处理技术近年来得到突飞猛进的发展,并成功的应用到几乎所有与成像有关的领域,并发挥着相当重要的作用。
它利用计算机对数字图像进行一系列的操作,从而获得某种预期的结果,对图像进行处理时,经常运用图像处理技术以改善图像的质量。
现在图像处理仍然在不断的发展,延伸出更多的应用领域,相信数字图像处理技术的逐步发展定会让我们的信息生活变得更好。
在图像处理中,数学形态学的理论基础在数字图像信号处理领域中得到广泛应用,图像形态学的用途主要是获取物体拓扑和结构信息,通过物体和结构元素相互作用的某些运算,得到物体更本质的形态。
在图像处理中形态学主要应用是:(1)利用形态学的基本运算,对图像进行观察和处理,从而达到改善图像质量的目的;(2)描述和定义图像的几何参数和特征,如面积、周长、连通度、颗粒度、骨架和方向性等。
而腐蚀与膨胀是数学形态学最基本的算法,使得腐蚀与膨胀方法的研究价值得到更大的提升。
图像形态学腐蚀与膨胀方法在很多方面被应用,本文以图像的腐蚀与膨胀方法的理论分析为重点,围绕着其在众多图像处理方案中的出色表现,逐渐联系到图像的内容。
用多层次的介绍手法展现出图像腐蚀与膨胀方法研究的重要内涵。
本文主要的工作包括:(1)掌握Visual C++6.0软件的使用。
(2)深入学习图像形态学腐蚀与膨胀的基础理论,研究腐蚀与膨胀在图像处理中的应用。
(3)针对图像形态学腐蚀与膨胀方法进行研究,通过Visual C++6.0软件实现腐蚀与膨胀算法,掌握腐蚀与膨胀算法的实现过程。
本文集中阐述腐蚀与膨胀是如何进行水平腐蚀、垂直腐蚀、全方位腐蚀、水平膨胀、垂直膨胀、全方位膨胀、开运算以及闭运算的完成原理、步骤和它们的具体实现过程。
通过一系列的研究才能更加明确腐蚀与膨胀方法处理在图像信息处理的发展历程中发挥了不可替代的作用。
关键词:图像处理;数学形态学;腐蚀;膨胀AbstractWith the advance in computer technology, communication technology changes rapidly updated and developed, image processing technology has make a spurt of progress of development in recent years, and successfully applied to almost all domains related to the formation of image, and play a very important role. It uses the computer to carry out a series of operation on the digital image, so as to obtain some expected results, image processing often using image processing technology to improve the quality of the image. Now the image processing is still in constant development, extending more application fields, believe that the gradual development of the digital image processing technology will make our life better.In image processing, the theory foundation of mathematical morphology is applied widely in the field of digital image signal processing, use of image morphology is the main access to the object topology and structure information, some operational through the object and the structural elements of interaction, obtained the object state of nature. In image processing, morphological main applications are: (1) by using basic operation of morphology, were observed and the processing of the image, so as to achieve the purpose of improving the image quality. (2)The definition and description of image geometric parameters and characteristics, such as area, perimeter, connectivity, particle size, frame and direction etc.. The corrosion and expansion is the basic algorithm of mathematical morphology which makes the research value of corrosion and expansion method for the greater increase. Method of image morphology of corrosion and expansion is used in many aspects, this paper with the method of image corrosion expansion theory analysis as the key point, around its excellent performance in many images processing scheme, gradually linked to the content of the image. To show the image of corrosion and expansion method research important content of multi-level presentation techniques. The main work of this paper includes: (1) using Visual C++6.0 Software. (2) Study the basic theory and the expansion of the image morphology of corrosion depth, application and expansion of research in image processing corrosion. (3) According to a study on the method of image morphology of corrosion and expansion, realization of erosion and dilation algorithm by Visual C++6.0 Software, master the implementation process of erosion and dilation algorithm. This paper focuses on how the level of corrosion andexpansion of corrosion, a full range of vertical horizontal expansion, vertical expansion, a full range expansion, open operation and close operation to complete the principle, steps and their realization.Through the research to a series of more clear corrosion and expansion method has played an irreplaceable role in the development of image processing.Key words: Image processing; mathematical morphology; corrosion; expansion目录1 绪论 (1)1.1引言 (1)1.2课题研究现状 (1)1.3课题目的和意义 (2)2 开发环境VISUAL C++介绍 (3)2.1V ISUAL C++6.0介绍 (3)2.2V ISUAL C++软件平台介绍 (4)2.2.1单文档格式 (4)2.2.2界面板部分 (5)2.2.3程序控制部分 (5)2.3设计中的MFC介绍 (5)3 腐蚀与膨胀的基本原理 (7)3.1图像的腐蚀 (7)3.2图像的膨胀 (8)3.3开运算 (10)3.4闭运算 (11)4 图像腐蚀与膨胀处理 (12)4.1CDIB类库的建立 (12)4.1.1CDIB类库的功能 (12)4.1.2CDIB类的构造 (12)4.2图像腐蚀与膨胀处理的实现 (15)4.2.1水平腐蚀处理实现 (15)4.2.2垂直腐蚀处理实现 (17)4.2.3全方向腐蚀处理实现 (19)4.2.4水平膨胀处理实现 (22)4.2.5垂直膨胀处理实现 (24)4.2.6全方位膨胀处理实现 (26)5 实验结果及讨论 (29)5.1腐蚀处理结果 (29)5.2膨胀处理结果 (31)5.3开闭运算处理结果 (32)5.3结果讨论 (34)结论 (35)致谢 (37)参考文献 (38)附录A 英文原文 (39)附录B 汉语翻译 (47)1 绪论1.1 引言随着计算机技术的日益发展,图像信息已成为人类认识世界的重要知识来源,人们研究发现,人类从外界获得的信息约有75%来自图像。
1实验目的选取一张自己的生活照,实现:任选两种结构对图像进行腐蚀和膨胀。
边缘检测(分别使用Prewitt,两种大小的Sobel算子,不同参数的Canny算子,LoG算子),并对比各个算子实现差异及不同参数条件下的实验效果。
2实验过程2.1图像腐蚀和膨胀实验图片所用代码import cv2import numpy as npdef threshold(image, threshold):out = image.copy()out[out < threshold] = 0out[out > threshold] = 1out = out.astype(np.uint8)return out# 1. 读取图像文件image = cv2.imread('img/in.jpeg', cv2.IMREAD_GRAYSCALE)# 2. 缩放图像print('Shape: {}'.format(image.shape))image = cv2.resize(image, (256, 256), cv2.INTER_LINEAR)print('Shape: {}'.format(image.shape))# 3. 均一阈值分割binary = threshold(image, threshold=200)# 4. 腐蚀kernel_size = 5erode = cv2.erode(binary, kernel=np.ones((kernel_size, kernel_size)))# 5. 膨胀dilate = cv2.dilate(binary, kernel=np.ones((kernel_size, kernel_size)))# 6. 显示图像cv2.imshow('Image', image)cv2.imshow('Binary', binary * 255)cv2.imshow('Erode', erode * 255)cv2.imshow('Dilate', dilate * 255) cv2.waitKey(0)实验效果Kernel=5Kernel=25代码分析及现象腐蚀,消除连通的边界,使边界向内收缩。
形态学处理膨胀和腐蚀好嘞,今天我们聊聊形态学处理里的膨胀和腐蚀。
这听起来像是高深的科学名词,其实它们在图像处理里就像是咱们生活中的调味品,能让你的图像变得更美味。
想象一下,你在厨房里做饭,光有盐和胡椒可不够,还得有些独特的香料来提升风味。
膨胀和腐蚀就是这样的小秘密。
咱们来说说膨胀。
这就像是给图像穿了一层华丽的衣服,真是让人眼前一亮。
你想想,图像上的小点点在这个过程中就像是被“喂胖”了一样,慢慢膨胀开来。
你瞧,原本那些稀稀拉拉的像素瞬间变得丰满起来,边缘变得更加圆润,整个图像看起来更饱满、更有活力。
是不是感觉就像看到朋友从一个青涩少年变成了一个风度翩翩的大叔,心里那个自豪啊,真想给他来个大拇指!这样处理过的图像,边缘更光滑,缺口也不见了,真是妙不可言。
不过,膨胀也有它的小麻烦。
就好比我们偶尔吃多了,肚子胀得不行。
有些细节可能就被淹没了,原本清晰的轮廓可能变得模糊不清。
想象一下,你在画画,结果一不小心把颜色泼到了旁边,哎,真是得不偿失。
要是这图像里的信息被淹没了,那可就麻烦了。
所以,咱们在使用膨胀的时候,要谨慎点,心里得有数,别让它把一切都搞得一团糟。
接下来就是腐蚀了,听起来是不是有点严肃?别担心,这可不是要让你的图像变得灰暗。
腐蚀其实就像是给图像减肥,帮助那些多余的部分去掉。
就像你秋天扫落叶,清理掉那些多余的杂草,留下干净整洁的花园。
经过腐蚀处理后,图像的细节会更加明显,原本杂乱的背景也会变得更加整洁,仿佛一下子清晰了不少。
这时候,边缘变得尖锐了,形状更加分明。
就像你用刀切蛋糕,切出的每一块都是那么整齐。
可是,腐蚀也是有它的短板哦。
减肥太过了,可能连必要的部分也一起减掉,最终图像看起来就像是被削减了好几块,失去了原有的风采。
这样一来,原本生动的画面瞬间变得干瘪,真是让人心疼。
咱们再说说这两者的结合,嘿,这可是魔法般的存在。
膨胀和腐蚀如果搭档起来,简直就像是一个完美的舞蹈组合。
先来个膨胀,让图像膨胀得更丰满,再进行腐蚀,修剪掉那些不必要的部分,最终呈现出的效果,简直就像是经过打磨的璀璨钻石,闪闪发光。
数学形态学运算——腐蚀、膨胀、开运算、闭运算腐蚀简单说:就是以结构B的原点为基点沿着将要被腐蚀的图像A中的所有点移动,如果此时结构B中的所有点(包括原点)被A包含,那么被B原点沿着的A中的该点就保留,否则,该点就被抛弃。
可以看出,执行完该腐蚀指令后,A中突出部分,以及外围至少减少了结构B的一半(假设B的原点为B的中心)。
膨胀简单说:就是以结构B的原点为基点沿着将要被膨胀前的图像A中的所有点移动,如果此时结构B中至少有一个点(包括原点)被A包含,那么被沿着的A中的该点及周围就被B扩充,扩充范围为B的整个区域。
可以看出,膨胀后,原A沿着边缘外围被扩充了B的一半(假设B的原点为B的中心)。
数学形态学操作可以分为二值形态学和灰度形态学,灰度形态学由二值形态学扩展而来。
数学形态学有2个基本的运算,即腐蚀和膨胀,而腐蚀和膨胀通过结合又形成了开运算和闭运算。
开运算就是先腐蚀再膨胀,闭运算就是先膨胀再腐蚀。
腐蚀粗略的说,腐蚀可以使目标区域范围“变小”,其实质造成图像的边界收缩,可以用来消除小且无意义的目标物。
式子表达为:该式子表示用结构B腐蚀A,需要注意的是B中需要定义一个原点,【而B的移动的过程与卷积核移动的过程一致,同卷积核与图像有重叠之后再计算一样】当B的原点平移到图像A的像元(x,y)时,如果B在(x,y)处,完全被包含在图像A重叠的区域,(也就是B中为1的元素位置上对应的A图像值全部也为1)则将输出图像对应的像元(x,y)赋值为1,否则赋值为0。
我们看一个演示图。
B依顺序在A上移动(和卷积核在图像上移动一样,然后在B的覆盖域上进行形态学运算),当其覆盖A的区域为[1,1;1,1]或者[1,0;1,1]时,(也就是B中‘1’是覆盖区域的子集)对应输出图像的位置才会为1。
膨胀粗略地说,膨胀会使目标区域范围“变大”,将于目标区域接触的背景点合并到该目标物中,使目标边界向外部扩张。
作用就是可以用来填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声。
数字图像处理实验报告实验结果第二次试验实验结果图如下,第一张为原图,第2,3张分别为加入椒盐噪声3和椒盐噪声5的图像。
均值滤波均值滤波是典型的线性滤波算法,他在图像的目标像素上加了一个模板,该模板包括了其周围的临近像素。
再用模板中的全体像素的平均值来代替原来像素值。
均值滤波也称为线性滤波,其采用的主要方法为领域平均法。
3*3模板是把每个像素都用周围的8个像素来做均值操作。
可以平滑图像,速度快,算法简单。
但是无法完全去掉噪声,只能微弱的减弱它。
同时这样会使得图像变得模糊。
中值滤波中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值.1:通过从图像中的某个采样窗口取出奇数个数据进行排序2:用排序后的中值取代要处理的数据即可中值滤波法可以很好地消除椒盐噪声,在光学测量条纹图象的相位分析处理方法中有特殊作用,但如在图像中含有较多的点线等细节信息,使用中值滤波的方法将很可能导致这些信息丢失。
中值滤波在图像处理中,常用于用来保护边缘信息,是经典的平滑噪声的方法如图为使用中值滤波对椒盐噪声污染的图片进行滤波后的效果图。
滤波效果较均值滤波好得多。
高斯滤波由于高斯函数的傅立叶变换仍是高斯函数, 因此高斯函数能构成一个在频域具有平滑性能的低通滤波器。
可以通过在频域做乘积来实现高斯滤波。
均值滤波是对是对信号进行局部平均, 以平均值来代表该像素点的灰度值。
矩形滤波器(Averaging Box Filter)对这个二维矢量的每一个分量进行独立的平滑处理。
通过计算和转化 ,得到一幅单位矢量图。
这个512×512的矢量图被划分成一个8×8的小区域 ,再在每一个小区域中 ,统计这个区域内的主要方向 ,亦即将对该区域内点方向数进行统计,最多的方向作为区域的主方向。
于是就得到了一个新的64×64的矢量图。
这个新的矢量图还可以采用一个3×3模板进行进一步的平滑。
成绩数字图像处理实验报告院(系)名称电子信息工程学院专业名称通信工程学生学号学生姓名2017年5月目录目录 (2)实验一图像变换实验 (3)实验二图像复原实验 (9)实验三图像分割处理实验 (14)实验四用Hough变换进行曲线的参数提取 (19)实验五手写数字识别 (26)附录 (41)实验一图像变换实验1.实验目的:学会对图像进行傅立叶等变换,在频谱上对图像进行分析,增进对图像频域上的感性认识,并用图像变换进行压缩。
2.实验内容:对Lena或cameraman图像进行傅立叶、离散余弦、哈达玛变换。
在频域,对比他们的变换后系数矩阵的频谱情况,进一步,通过逆变换观察不同变换下的图像重建质量情况。
3.实验要求实验采用获取的图像,为灰度图像,该图像每象素由8比特表示。
具体要求如下:(1)对图像进行傅立叶变换、获得变换后的系数矩阵;(2)将傅立叶变换后系数矩阵的频谱用图像输出,观察频谱;(3)通过设定门限,将系数矩阵中95%的(小值)系数置为0,对图像进行反变换,获得逆变换后图像;(4)观察逆变换后图像质量,并比较原始图像与逆变后的峰值信噪比(PSNR)。
(5)对输入图像进行离散余弦、哈达玛变换,重复步骤1-5;(6)比较三种变换的频谱情况、以及逆变换后图像的质量(PSNR)。
4.实验结果图1.1傅里叶变换及逆变换图1.2离散余弦变换及逆变换图1.3哈达玛变换及逆变换观察结果可以发现,将系数矩阵中95%的(小值)系数置为0,对图像进行反变换之后获得逆变换的图像质量有所下降,信噪比提高。
但是图像质量的下降在可以接受的范围内,并且过程中实现了对于图像的压缩。
通过对于信噪比的比较可以发现:离散余弦变换的效果最好,傅里叶变换的效果最差。
5.实验代码:*******************************傅里叶变换**************************** function Fourier_Callback(hObject,eventdata,handles)%-------------------------显示原图像---------------------------------figure=imread('lena512.bmp');subplot(1,3,1);imshow(figure);title('Lena原图');%-----------------------傅里叶变换频谱图------------------------------fourier=fft2(figure);fourier=fftshift(fourier);R=real(fourier);I=imag(fourier);spectrum=abs(fourier);spectrum_norm=(spectrum-min(min(spectrum)))/(max(max(spectrum))-min(min(spectrum))) *255;subplot(1,3,2);imshow(spectrum_norm);title('傅里叶变换频谱图');%-----------------------傅里叶逆变换----------------------------------[height,width]=size(spectrum);spectrum_adjust=sort(reshape(spectrum,[1,height*width])); threshold=spectrum_adjust(round(0.95*height*width));for i=1:heightfor j=1:widthif spectrum(i,j)<=thresholdR(i,j)=0;I(i,j)=0;endendendrefigure=ifft2(ifftshift(R+1i*I));subplot(1,3,3);imshow(uint8(refigure));title('逆变换图像');%--------------------------PSNR-------------------------------------PSNR=PSNR_cal(figure,refigure,8);set(handles.edit2,'string',PSNR);*******************************离散余弦变换**************************** function dct_Callback(hObject,eventdata,handles)%-------------------------显示原图像---------------------------------figure=imread('lena512.bmp');subplot(1,3,1);imshow(figure);title('Lena原图');%----------------------离散余弦变换频谱图------------------------------DCT=dct2(figure);subplot(1,3,2);imshow(uint8(abs(DCT)));title('离散余弦变换频谱图');%-----------------------离散余弦逆变换--------------------------------Size=size(DCT);height=Size(1);width=Size(2);DCT_sort=sort(reshape(DCT,1,width*height));threhold=DCT_sort(round(width*height*0.95));DCT(abs(DCT)<threhold)=0;refigure=idct2(DCT);subplot(1,3,3);imshow(uint8(refigure));title('逆变换图像');%--------------------------PSNR-------------------------------------PSNR=PSNR_cal(figure,refigure,8);set(handles.edit2,'string',PSNR);*******************************哈达玛变换**************************** function Hadamard_Callback(hObject,eventdata,handles)%-------------------------显示原图像---------------------------------figure=imread('lena512.bmp');subplot(1,3,1);imshow(figure);title('Lena原图');%-----------------------哈达玛变换频谱图------------------------------H=hadamard(512);figure=double(figure);DHT=(H*figure*H)./512;subplot(1,3,2);imshow(uint8(DHT));title('哈达玛变换频谱图');%-----------------------哈达玛逆变换----------------------------------Size=size(figure);height=Size(1);width=Size(2);DHT_sort=sort(reshape(DHT,1,width*height));threhold=DHT_sort(round(width*height*0.95));DHT(abs(DHT)<threhold)=0;iH=H^-1;refigure=(iH*DHT*iH)*512;subplot(1,3,3);imshow(uint8(refigure));title('逆变换图像');%--------------------------PSNR-------------------------------------PSNR=PSNR_cal(figure,refigure,8);set(handles.edit2,'string',PSNR);*******************************PSNR计算函数**************************** function[PSNR]=PSNR_cal(figure1,figure2,bit)img=double(figure2);imgn=double(figure1);Size=size(figure1);height=Size(1);width=Size(2);MAX=2^bit-1;PMSE=sum(sum((img-imgn).^2))/(height*width)/MAX^2; PSNR=-10*log10(PMSE);end实验二图像复原实验1.实验目的:利用反向滤波和维纳滤波进行降质图像复原,比较不同参数选择对复原结果的影响。
第6章腐蚀,膨胀,细化算法今天所讲的内容属于一门新兴的学科:数学形态学(Mathematical Morphology)。
说起来很有意思,它是法国和德国的科学家在研究岩石结构时建立的一门学科。
形态学的用途主要是获取物体拓扑和结构信息,它通过物体和结构元素相互作用的某些运算,得到物体更本质的形态。
在图象处理中的应用主要是:(1)利用形态学的基本运算,对图象进行观察和处理,从而达到改善图象质量的目的;(2)描述和定义图象的各种几何参数和特征,如面积、周长、连通度、颗粒度、骨架和方向性等。
限于篇幅,我们只介绍二值图象的形态学运算,对于灰度图象的形态学运算,有兴趣的读者可以阅读有关的参考书。
在程序中,为了处理的方便,还是采用256级灰度图,不过只用到了调色板中的0和255两项。
先来定义一些基本符号和关系。
1.元素设有一幅图象X,若点a在X的区域以内,则称a为X的元素,记作a∈X,如图6.1所示。
2.B包含于X设有两幅图象B,X。
对于B中所有的元素ai,都有ai∈X,则称B包含于(included in)X,记作B X,如图6.2所示。
3.B击中X设有两幅图象B,X。
若存在这样一个点,它即是B的元素,又是X的元素,则称B击中(hit)X,记作B↑X,如图6.3所示。
4.B不击中X设有两幅图象B,X。
若不存在任何一个点,它即是B的元素,又是X的元素,即B和X 的交集是空,则称B不击中(miss)X,记作B∩X=Ф;其中∩是集合运算相交的符号,Ф表示空集。
如图6.4所示。
图6.1 元素图6.2 包含图6.3 击中图6.4 不击中5.补集设有一幅图象X,所有X区域以外的点构成的集合称为X的补集,记作X c,如图6.5所示。
显然,如果B∩X=Ф,则B在X的补集内,即B X c。
图6.5 补集的示意图6.结构元素设有两幅图象B,X。
若X是被处理的对象,而B是用来处理X的,则称B为结构元素(structure element),又被形象地称做刷子。
形态学方法的基本操作包括膨胀、腐蚀、开运算和闭运算。
这些操作在形态学变换中起着重要的作用。
以下是这些操作的可视化效果:
1. 膨胀操作:膨胀操作可以扩大图像中高亮区域,使图像变得更加明亮。
在形态学变换中,膨胀操作通常被用于突出图像中的细节和特征。
2. 腐蚀操作:腐蚀操作可以缩小图像中高亮区域,使图像变得更加暗淡。
在形态学变换中,腐蚀操作通常被用于消除图像中的噪声和小的细节。
3. 开运算:开运算是先进行腐蚀操作,再进行膨胀操作。
这种操作可以去除图像中的小点、毛刺和小桥,同时总的位置和形状不会发生改变。
在形态学变换中,开运算通常被用于提取图像中的轮廓和线条。
4. 闭运算:闭运算是先进行膨胀操作,再进行腐蚀操作。
这种操作可以填平图像中的小湖(即小孔),弥合小的裂缝,同时总的位置和形状不会发生改变。
在形态学变换中,闭运算通常被用于填充图像中的空洞和小的黑点。
这些形态学方法的基本操作可以通过组合和变换来应用于图像处理中,以实现各种不同的视觉效果和应用。
1、实验目的学习常见的数学形态学运算基本方法,了解腐蚀、膨胀、开运算、闭运算取得的效果,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。
2、实验要求利用MatLab工具箱中关于数学形态学运算的函数,计算本指导书中指定二值图像进行处理。
3、实验设备与软件1.LC-PC计算机系统2.MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox)3.实验所需要的图片4.4、实验内容与步骤1.调入并显示图像Plane2.jpg;2.选取合适的阈值,得到二值化图像Plane2-2.jpg;3.设置结构元素;4.对得到的二值图像Plane2-2.jpg进行腐蚀运算;5.对得到的二值图像Plane2-2.jpg进行膨胀运算;6.对得到的二值图像Plane2-2.jpg进行开运算;7.对得到的二值图像Plane2-2.jpg进行闭运算;8.将两种处理方法的结果作比较;5、实验过程及结果程序代码:I=imread('1.jpg');%读入图像level = graythresh(I); %得到合适的阈值bw = im2bw(I,level); %二值化SE = strel('square',3); %设置膨胀结构元素BW1 = imdilate(bw,SE); %膨胀SE1 = strel('arbitrary',eye(5)); %设置腐蚀结构元素BW2 = imerode(bw,SE1); %腐蚀BW3 = bwmorph(bw, 'open'); %开运算BW4 = bwmorph(bw, 'close'); %闭运算imshow(I)figure,imshow(bw);title('原图');figure,imshow(BW1);title('膨胀');figure,imshow(BW2);title('腐蚀');figure,imshow(BW3);title('开运算');figure,imshow(BW4);title('闭运算');6、思考题/问答题1.结合实验内容,评价腐蚀运算与膨胀运算的效果。
最近的实验中需要对二值图像进行减噪处理,图像形态学中的腐蚀和膨胀能很好的解决此问题。
如果在腐蚀和膨胀操作前,对灰度图像做一次滤波,减噪效果将更明显。
腐蚀的具体操作是:用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为1,则该像素为1,否则为0。
膨胀的具体操作是:用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为0,则该像素为0,否则为1。
腐蚀的作用是消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点;膨胀的作用是将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的空洞。
开运算是先腐蚀后膨胀的过程,可以消除图像上细小的噪声,并平滑物体边界。
闭运算时先膨胀后腐蚀的过程,可以填充物体内细小的空洞,并平滑物体边界。
一、图像腐蚀膨胀细化的基本原理1.图像细化的基本原理⑴图像形态学处理的概念数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,还包括用于预处理或后处理的形态学过滤、细化和修剪等。
图像形态学处理中我们感兴趣的主要是二值图像。
在二值图像中,所有黑色像素的集合是图像完整的形态学描述,二值图像的各个分量是Z2的元素。
假定二值图像A和形态学处理的结构元素B是定义在笛卡儿网格上的集合,网格中值为1的点是集合的元素,当结构元素的原点移到点(x,y)时,记为Sxy,为简单起见,结构元素为3x3,且全都为1,在这种限制下,决定输出结果的是逻辑运算。
⑵二值图像的逻辑运算逻辑运算尽管本质上很简单,但对于实现以形态学为基础额图像处理算法是一种有力的补充手段。
在图像处理中用到的主要逻辑运算是:与、或和非(求补),它们可以互相组合形成其他逻辑运算。
⑶膨胀和腐蚀膨胀和腐蚀这两种操作是形态学处理的基础,许多形态学算法都是以这两种运算为基础的。