CT图像增强

CT图像增强

简介

  • 如下图所示,希望对这幅人体骨骼扫描图片实现增强的效果。
    CT图像增强_第1张图片

  • 通过这个实验, 我们可以了解到一阶微分算子以及二阶微分算子在图像细节信息以及边缘信息获取的原理;以及将其用在图像增强上的优缺点。

处理过程

  • 首先我们选择二阶微分算子-Laplace算子来处理图像g2,然后通过原图f2(double类型)减去g2来获取增强的图像。
    CT图像增强_第2张图片

  • 这里说明以下做减法而不是加法的原因,图像的二阶微分不为零的区域是在灰度变化的拐点。减去这部分区域可以明显增强图像灰度变化区域和灰度不变区域的区别。

  • 当lapace算子中心元素减小到-8时,再次做减法后会有更明显的增强效果。
    CT图像增强_第3张图片

  • 最后通过伽马运算来扩大灰度动态范围,使得肌肉组织更加明显的被观测到。
    CT图像增强_第4张图片


  • 以上是使用二阶梯度算子实现的,下面换到一阶梯度算子。
  • 图像经过sobel算子后可以直接得到图像所有的边缘成分
    CT图像增强_第5张图片

  • 显然,梯度算子较拉普拉斯算子在灰度变化区域的响应要更加的强烈,而其对于小细节和噪声的响应要比拉普拉斯弱。我们的目的自然是要保留灰度变化强烈区域的细节且要降低灰度变化平坦区域的噪声。结合两者的优点,一般采取的做法是:将梯度图像平滑处理(降噪),再用拉普拉斯图像与其相乘,得到的结果与原图相加即可得到最佳的锐化图像。

  • 下面显示的是最终的锐化图像,可见其噪声要少了很多,并且具有很好的增强效果。
    CT图像增强_第6张图片

  • 同样的,最后使用伽马变换实现动态范围的扩大。
    CT图像增强_第7张图片

实现源码

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);

你可能感兴趣的:(数字图像处理)