实验目的

熟悉matlab软件图像处理工具

理解和掌握混合空间增强法在图像处理中的应用

实验内容

下图是人体骨骼核扫描图像,要求通过混合空间增强法突出骨骼的更多细节来增强图像。

实验步骤

由于图像灰度的动态范围很窄并且有很高的噪声内容,所以很难对其进行增强首先用拉普拉斯法突出图像中的小细节,然后用梯度法突出其边。平滑过的梯度图像将用于掩蔽拉普拉斯图像。最后,我们将试图试用灰度变换来增强图像的灰度动态范围。

实验结果

实验分析

步骤2中,使用的拉普拉斯算子为[-1,-1,-1;-1,8,-1;-1,-1,-1](或[0 1 0,1 -4 1,0 1 0])操作后滤波,为了便于显示,对图像进行了标定,这一步先对图像进行初步的锐化滤波。

步骤3中,由于使用的模板如上,让常数c=1,简单的将原图和图2相加就可以得到一

幅经过锐化过的图像。(而这个时候看到图2的噪声水平,将图1和图2相加之后也必然会有很多的噪声。拉普拉斯操作作为一种二阶微分算子,能很好的增强细节,但也产生更多的噪声。而降低噪声的一种方法就是使用中值滤波器,但属于非线性滤波器的中值滤波器有可能改变图像的性质,所以不可取。所以采取另一种方法,使用原图像梯度操作的平滑形式所形成的一个模板。)

步骤4中,对原图像试用Sobel梯度操作,分量gx为[-1,-2,-1;0,0,0;1,2,1],而分量gy为[-1,0,1;-2,0,2;-1,0,1]的模板。(梯度变换在灰度斜坡或台阶的平均相应要比拉普拉斯操作的更强烈,而对噪声和小细节的响应要比拉普拉斯操作的相应弱,而且可以通过均值滤波器对其进行平滑处理可以进一步降低, 此时看图像中的边缘要比拉普拉斯图像(即图3)中的边缘要突出许多)

步骤5中,使用大小为5*5的一个均值滤波器得到平滑后的Sobel梯度图像。(图4,5要比图2亮表明具有重要边缘内容的梯度图像的值一般要比拉普拉斯图像的值高)

步骤6中,将拉普拉斯图像(即图3)与平滑后的梯度图像(即图5)进行点乘。(此时看到强边缘的优势和可见噪声的相对减少,用平滑后的梯度图像来掩蔽拉普拉斯图像的目的达到了)

步骤7中,将乘积图像(即图6)与原图像相加就产生一幅需要的锐化图像。(与原图像相比,该图像中大部分细节的清晰度的增加都很明显,所以我们才需要综合多种的方法对图像进行处理,单独使用一种方法根本不可能达到这么好的效果,只需要看相对应的图像进行对比即可知道)

步骤8中,我们希望扩展灰度范围,对图7进行幂率变换处理,r=0.5,c=1,然后即可对图像进行幂率变换(此时需要增大锐化后图像的动态范围,即使有很多种这样效果的灰度变换函数,但是用幂率变换处理更好,直方图均衡和规定化的效果都不太好)(此时人体的轮廓的清晰度虽然还是不高,因为扩大的灰度动态范围的同时也增大了噪声,但是相比原图还是有相当大幅度的提高的,看下图原图与最终图像对比)

实验遇到的问题及解决

1.问题:Attempt to execute SCRIPT imadd as a function:

D:\大学学习\大三上\数字图像处理\作业\imadd.m

解决:imadd是关键字,不要将其命名为m文件名,可以改成add1等

2.问题:Error using imadd (line 69)

X and Y must have the same size and class or Y must be a scalar double.

解决:通过网上搜索找到:I think one of your images is RGB (size(...,3)==3) and the other is grayscale (size(...,3)==1). Say the vasculature image a is grayscale and the activation image c is RGB. To convert a to RGB to match c, use ind2rgb, then add.

aRGB = ind2rgb(a,gray(256)); % assuming uint8

Alternatively, you could do aRGB = repmat(a,[1 1 3]);.

Or to put the activation image into grayscale:

cGray = rgb2gray(c);

另外,也要将图像大小设置为一致,如:I1 = imresize(I,[800 500])

3、问题:Undefined function 'conv2' for input arguments of type 'double' and attributes 'full