2024年1月15日发(作者:中国汽车)

人体骨骼核扫描图的混合空间增强

一、 实验目的:

对混合模糊图像进行处理,为得到一个满意的结果,对其应用多种互补的图像增强技术,最终得到良好效果。

二、 实验要求:

本次的数字图像处理作业是对人体骨骼核扫描图片进行混合增强处理,通过混合增强突出骨骼的更多细节。原图中骨骼比较模糊,边缘不够清晰,对比度不够,对此应该采取的策略是首先用拉普拉斯变换突出图像中的小细节,然后用梯度法突出其边缘。平滑后的拉普拉斯变换将用于掩蔽拉普拉斯图像,最后用灰度变换来扩展图像的灰度动态范围。

三、 实验内容:

软件开发环境:

基于matlab实现软件编写。

具体步骤:

(1)拉普拉斯算子

h1=[0,-1,0;-1,4,-1;0,-1,0];

离散拉普拉斯所用的滤波器掩膜,用h1与原图进行卷积,得到中心像素点与邻域像素点的差值。

M1=imfilter(I,h1);%掩膜得到的拉普拉斯变换图M1

M2=M1+I; %与原图相加得到M2,锐化原图

(2)边缘检测

一幅图像的边缘是通过一阶和二阶数字导数来检测得到的。边缘的宽度取决于从初始灰度级跃变到最终灰度级的斜坡的长度。这个长度又取决于斜度,而斜度又取决于模糊程度。所以,我们可知,模糊的边缘使其变粗,而清晰的边缘使其变得较细。

一幅数字图像的一阶导数是基于各种二维梯度的近似值。图像f(x,y)在位置(x,y)的梯度定义为下列向量:

??f??Gx???x?

?f???????Gy???f????y??

梯度向量指向在坐标(x,y)的f的最大变化率方向。在边缘检测中,一个重要的量是向量的大小,用?f表示,。一般来讲称?f为梯度。

在实践中计算数字梯度时最常用的是Prewitt算子和Sobel算子,虽然Prewitt模版的实现比Sobel模版更简单,但是Sobel模版在抑制噪声上更胜一筹,考虑到图片中的噪声,所以在此处用Sobel模版。

模版是用于求梯度分量Gx,Gy的,其中Sobel算子为

H1=

-1 -2 -1

0 0 0

1 2 1

H2=

1 0 -1

2 0 -2

1 0 -1

实现图像边缘检测的程序代码(Matlab)为:

h2=[-1,-2,-1;0,0,0;1,2,1];

h3=[-1,0,1;-2,0,2;-1,0,1];

Gx=imfilter(I,h2);

Gy=imfilter(I,h3);

for i=1:m

for j=1:n

M3(i,j)=abs(Gx(i,j))+abs(Gy(i,j));

end

end % sobel算子运算结果得到M3,保留边缘去除噪声

根据最后运行的结果显示,Sobel图像的边缘要比拉普拉斯图像的边缘突出很多。拉普拉斯变换作为一种二阶微分算子,在图像细节的增强处理方面有明显的优点,但拉普拉斯变换与梯度变换相比较会产生更多的噪声。其中位于平滑区域的噪声非常显眼,梯度变换在灰度变换的区域的相应要比拉普拉斯更强烈,而梯度变换对噪声和小细节的响应要比拉普拉斯变换弱,而且可以通过均值滤波器对其进行平滑处理而进一步的降低,对梯度图像进行平滑处理并用拉普拉斯图像与他相乘。处理后的结果在灰度变化强的区域仍然保留细节,而在灰度变化相对平坦的区域则减少噪声,这种处理可以看做是将拉普拉斯变换与梯度变换的有点结合。

(3)平滑处理

用一个5*5的均值滤波器对图像进行平滑处理,代码为

2

M4=M3;

for x=3:m-2

for y=3:n-2

for a=-2:2

for b=-2:2

M4(x,y)=(M4(x,y)+M3(x+a,y+b))/25;

end

end

end

end %5*5的均值滤波器对图像进行平滑处理

(3)锐化图像

拉普拉斯与平滑后的梯度图像乘积的结果可以看出,强边缘的优势和可见噪声的减少。将乘积图像与原始图像相加就得到了锐化图像。与原始图像相比,锐化处理后的图像细节增加很明显。单独使用拉普拉斯或者梯度变换不能达到这种效果。而且以上的锐化过程没有影响图像的灰度动态变化范围。进行增强处理的最后一步就是扩大锐化图像的灰度动态范围。程序代码:

M6=I+M5;%得到的锐化图像

for x=1:m

for y=1:n

M7(x,y)=(M6(x,y))^0.5;

end

end %做幂次变换,扩散灰度范围,提升对比度,但幂次必须小于1

经过该步以后,人体的骨架清晰可见,相比原图显示了很好的视觉改进效果。

四、 学习总结

在这次的作业中,我使用了课本提供的算法流程,熟悉运用了拉普拉斯锐化和幂次变换提升对比度的原理方法,了解了matlab在数字图像处理中的简单使用,不仅加深了对书本知识的理解,也加深了对于本门课程的了解和喜爱。

五、 代码实现及运行结果

clear

J=imread(\'\');

[m,n]=size(J);

I=im2double(J);

h1=[0,-1,0;-1,4,-1;0,-1,0];

M1=imfilter(I,h1);%拉普拉斯变换得到M1

M2=M1+I;%与原图相加得到M2,锐化原图

h2=[1,0,-1;2,0,-2;1,0,-1];

h3=[-1,-2,-1;0,0,0;1,2,1];

3

Sx=imfilter(I,h2);

Sy=imfilter(I,h3);

for i=1:m

for j=1:n

M3(i,j)=sqrt((Sx(i,j))^2+(Sy(i,j))^2);

end

end%sobel算子运算结果得到M3,保留边缘去除噪声

M4=zeros(m,n);

for x=2:m-1

for y=2:n-1

for a=-1:1

for b=-1:1

M4(x,y)=(M4(x,y)+M3(x+a,y+b))/9;

end

end

end

end

for c=1:m

for d=1:n

M4(c,1)=M3(c,1);

M4(1,d)=M3(1,d);

end

end

%作3*3模板的均值平滑

for e=1:m

for f=1:n

M5(e,f)=M2(e,f)*M4(e,f);

end

end

M6=I+M5;

for g=1:m

for h=1:n

M7(g,h)=2*(M6(g,h))^1.15;

end

end

%作幂次变换,提升亮度2倍,提升对比度

subplot(241);imshow(I);

subplot(242);imshow(M1);

subplot(243);imshow(M2);

subplot(244);imshow(M3);

subplot(245);imshow(M4);

subplot(246);imshow(M5);

subplot(247);imshow(M6);

subplot(248);imshow(M7);

4

各个处理过程后得到的图片:

5

更多推荐

图像,变换,得到