CT图像增强

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);
### CT 图像增强算法中的血管处理方法 #### 空域法下的血管增强 在空域法中,直接对图像像素灰度值进行运算可以有效提升血管结构的可见性。常见的线性和非线性灰度变换可用于调整血管区域的对比度和亮度。特别地,直方图均衡化是一种常用的技术,它能扩展血管区域的灰度分布范围,从而提高局部对比度[^1]。 ```python import cv2 import numpy as np def enhance_vessels_spatial_domain(image_path): image = cv2.imread(image_path, 0) # 应用自适应直方图均衡化来突出血管特征 clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8)) enhanced_image = clahe.apply(image) return enhanced_image ``` #### 频域法下的血管增强 频域法首先将图像转换到频率域,在此过程中可以通过设计特定的滤波器来放大或抑制某些频率成分。对于血管增强而言,通常采用带通滤波器,该滤波器允许保留高频细节的同时去除低频噪声干扰。完成频域操作后再通过傅里叶逆变换返回空间域得到最终结果。 ```matlab function enhancedImage = enhanceVesselsFrequencyDomain(inputImage) % 将输入图像转为双精度浮点数并做快速傅立叶变换 fftImg = fftshift(fftn(double(inputImage))); % 创建一个理想带通滤波器 (假设已知合适的截止频率) [H, W] = size(inputImage); D0_low = 3; D0_high = 15; [U, V] = meshgrid(-floor(W/2):ceil(W/2)-1, -floor(H/2):ceil(H/2)-1); D = sqrt(U.^2 + V.^2); H_bp = double(D >= D0_low & D <= D0_high); % 对FFT后的图像施加带通滤波 filteredFftImg = H_bp .* fftImg; % 反向傅立叶变换回到空间域 enhancedImage = real(ifftn(ifftshift(filteredFftImg))); end ``` #### 结合形态学处理的方法 除了上述两种经典手段外,还可以利用形态学算子如开闭运算、顶帽底帽等进一步优化血管提取的效果。这些操作可以帮助消除背景杂乱信息,使得血管轮廓更为清晰锐利。 ```cpp #include <opencv2/imgproc.hpp> using namespace cv; Mat enhanceVesselsMorphology(const Mat& src) { Mat dst; // 定义结构元素用于形态学操作 Mat element = getStructuringElement(MORPH_ELLIPSE, Size(9, 9)); // 执行顶部帽子变换以强调亮区(通常是血管) morphologyEx(src, dst, MORPH_TOPHAT, element); return dst; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值