离线
|
CT图像增强
简介
- 如下图所示,希望对这幅人体骨骼扫描图片实现增强的效果。
- 通过这个实验, 我们可以了解到一阶微分算子以及二阶微分算子在图像细节信息以及边缘信息获取的原理;以及将其用在图像增强上的优缺点。
处理过程
- 首先我们选择二阶微分算子-Laplace算子来处理图像g2,然后通过原图f2(double类型)减去g2来获取增强的图像。
- 这里说明以下做减法而不是加法的原因,图像的二阶微分不为零的区域是在灰度变化的拐点。减去这部分区域可以明显增强图像灰度变化区域和灰度不变区域的区别。
- 当lapace算子中心元素减小到-8时,再次做减法后会有更明显的增强效果。
- 最后通过伽马运算来扩大灰度动态范围,使得肌肉组织更加明显的被观测到。
- 以上是使用二阶梯度算子实现的,下面换到一阶梯度算子。
- 图像经过sobel算子后可以直接得到图像所有的边缘成分
- 显然,梯度算子较拉普拉斯算子在灰度变化区域的响应要更加的强烈,而其对于小细节和噪声的响应要比拉普拉斯弱。我们的目的自然是要保留灰度变化强烈区域的细节且要降低灰度变化平坦区域的噪声。结合两者的优点,一般采取的做法是:将梯度图像平滑处理(降噪),再用拉普拉斯图像与其相乘,得到的结果与原图相加即可得到最佳的锐化图像。
- 下面显示的是最终的锐化图像,可见其噪声要少了很多,并且具有很好的增强效果。
- 同样的,最后使用伽马变换实现动态范围的扩大。
实现源码
- clc;
- clear all;
- close all;
- f = imread('Fig0306(a)(bone-scan-GE).tif');
- f = f(:,:,1);
- imshow(f);
- w = fspecial('laplacian',0)
- g1 = imfilter(f,w,'replicate');
- %%
- %二阶微分算子-laplace
- % imshow(g1);
- %加法运算得到锐化图像
- % figure; imshow(f+g1);
- %解决出现负灰度归零的问题
- f2=im2double(f);
- g2=imfilter(f2,w,'replicate');
- % figure; imshow(g2);
- % figure; imshow(f2-g2);
- %换模板
- w2=[1 1 1;1 -8 1;1 1 1]
- g3=imfilter(f2,w2,'replicate');
- % imshow(f2-g3);
- % %幂变换增强对比度
- % res=imadjust(f2-g3,[0 1],[0 1],0.6);
- % imshow(res);
- %%
- %一阶微分算子-sobel
- hx=[-1 -2 -1;0 0 0 ;1 2 1];%生产sobel垂直梯度模板
- hy=hx'; %生产sobel水平梯度模板
- grad_x=filter2(hx,f2,'same');
- grad_y=filter2(hy,f2,'same');
- grad=abs(grad_x) + abs(grad_y); %得到图像的sobel梯度
- % imshow(grad);
- %平滑Sobel图像
- wAve = fspecial('average',[3 3]);
- ave = imfilter(f2, wAve);
- % figure; imshow(ave);
- %c*e掩模图像
- mask = (f2-g2).*ave;
- % imshow(mask);
- %加法运算锐化图像
- res = mask + f2;
- % figure; imshow(res);
- %幂变换增强对比度
- res=imadjust(f,[0 1],[0 1],0.6);
- figure; imshow(res);
复制代码 |
|