混合空间增强法在骨骼图像处理实验报告(附代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、 实验目的
1. 熟悉matlab 软件图像处理工具
2. 理解和掌握混合空间增强法在图像处理中的应用 二、 实验内容
下图是人体骨骼核扫描图像,要求通过混合空间增强法突出骨骼的更多细节来增强图像。
三、 实验步骤
由于图像灰度的动态范围很窄并且有很高的噪声内容,所以很难对其进行增强首先用拉普拉斯法突出图像中的小细节,然后用梯度法突出其边。平滑过的梯度图像将用于掩蔽拉普拉斯图像。最后,我们将试图试用灰度变换来增强图像的灰度动态范围。 原始图像
Sobel 梯度处理
5*5均值滤波
拉普拉斯锐
化图像相乘图像相加幂律变换
图像相加
四、实验结果
五、实验分析
步骤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
3d real'. Error in filter2 (line 59) y = conv2(hcol, hrow, x, shape);
解决:添加I1 = rgb2gray(I);
七、其他方法探究
几种经典的锐化算子对人体骨骼图像处理后的视觉效果并不太理想.所以提出一种混合空间增强算法.首先进行对比度提升,然后用Laplace变换突出图像中的小细节.接着用canny 算子进行边缘检测.最后将Laplace变换后的图像与边缘检测后的图像相乘.再加上提升对比度后的图像.得到混合空间增强图像。
“canny”算子用法B=edge(I,'Canny',0.04);
经比较,可知其主要区别在与使用的边缘检测算子不同,但最终得到的图像都达到了要求。
八、实验总结
刚开始做的时候每个步骤都写成一个独立的M文件,需要每次截图,还遇到了一系列的问题,比如使用图像相加、相乘时报错,原因是两个图像大小格式不一致。不得不花费大量时间在网上寻找相关的方法教程,这相当麻烦。后来我采用了将所有代码写入一个M文件中,只改动一些小细节,就能实现生成所想要的图像。相比较而言,后者节省了时间精力,提高了效率,值得以后我采用这种方法编程。
总的来说。我在此次的图像处理实验中,收获还是挺大的。首次我对图像处理的混合空间增强的各种方法有了一个感性的理解,知道了拉普拉斯算子、sobel梯度、均值滤波、幂律变换等。在架构后编程逻辑后,接下来就是具体实现每一项功能。在完成本次实验后,显然我对matlab图像处理更加熟练了,同时也巩固了我在书本上学习的相关知识。另外,不得不说,在实验过程中,我也提高了处理分析问题的能力。比如,如何快速找到并利用教材、网上资源(特别是一些编程过程中遇到问题的解决方法)。
附录
%----------人体骨骼图像处理-------------%
clear;
clc;
%步骤1:输出原图
I=imread('1.tif');
J = im2double(I); %增强
%imshow(J);
%title('原始图像1');
%步骤2:拉普拉斯操作
h =[-1,-1,-1;-1,8,-1;-1,-1,-1]; %拉普拉斯算子
%h=[0 1 0,1 -4 1,0 1 0];
J1 =imfilter(J,h); %滤波
%imshow(J1);
%title('拉普拉斯操作后图像2');