天天看點

MATLAB環境下使用同态濾波方法進行醫學圖像增強

作者:哥廷根數學學派

目前圖像增強技術主要分為基于空間域和基于頻率域2大方面,基于空間域圖像增強的方法包括了直方圖均衡化方法和Retinex方法等,基于頻率域的方法包括同态濾波方法。

其中直方圖均衡化方法隻是根據圖像的灰階機率分布函數進行簡單的全局拉伸,沒有考慮像素間的灰階聯系情況,進行直方圖均衡化後,會在一定程度上提高圖像的對比度,但是圖像的灰階級會進行合并進而減少,造成細節的丢失。而Retinex方法假定空間照度是緩慢變化的,在圖像明暗變化劇烈的區域,容易出現光暈現象。是以在處理井下光照差異很明顯的圖檔,基于頻率域的同态濾波方法有更好的效果。

同态濾波是一種結合了頻率過濾和灰階變換的方法,它以圖像的照度反射模型作為頻域的處理基礎,分别對低頻資訊進行增強,高頻資訊進行抑制,可以有效解決圖像上照度不均勻和 動态範圍過大對圖像産生影響的問題,在不損失亮區細節資訊的同時,有效增強暗區的細節資訊。

本文以醫學圖像為例,使用同态濾波方法進行醫學圖像增強。

部分代碼如下:

% homomorphicFilter 同态濾波器
% originImg:原始醫學圖像
% resultImg: 結果醫學圖像
% 以下參數可選,要麼全設定,要麼設定為預設
% rL: 低頻分量
% rH: 高頻分量
% c: c為一個常數,控制濾波器的形态,即從低頻到高頻過渡段的陡度(斜率),其值越大,斜坡帶越陡峭
% D0: 截止頻率
% 當函數沒有設定參數時
if nargin < 5,D0 = 20;end
% 銳化參數
if nargin < 4,c = 2.0;end
% 可根據需要效果調整參數
if nargin < 3,rH = 2.2;end
if nargin < 2,rL = 0.25;end
%轉換資料類型為double型
I=im2double(originImg);
% I=double(originImg);
[Hight,Width]=size(I);
%對圖像進行填充
extendedHight = 2*Hight; extendedWidth = 2*Width;
interimImg = zeros(extendedHight,extendedWidth);
for i = 1:Hight
for j =1:Width
interimImg(i,j) = I(i,j);
end
end
%取對數
interimImg=log(interimImg+1);

%傅裡葉變換
FI=fft2(interimImg);
n1=floor(extendedHight/2);
n2=floor(extendedWidth/2);
for u=1:extendedHight
for v=1:extendedWidth
D(u,v)=sqrt(((u-n1).^2+(v-n2).^2)); %頻率域中點(u,v)與頻率矩形中心的距離
H(u,v)=(rH-rL).*(1-exp(-c.*(D(u,v)^2./D0^2)))+rL; %高斯同态濾波
end
end           

結果如下:

MATLAB環境下使用同态濾波方法進行醫學圖像增強
MATLAB環境下使用同态濾波方法進行醫學圖像增強
MATLAB環境下使用同态濾波方法進行醫學圖像增強
MATLAB環境下使用同态濾波方法進行醫學圖像增強
MATLAB環境下使用同态濾波方法進行醫學圖像增強
MATLAB環境下使用同态濾波方法進行醫學圖像增強
MATLAB環境下使用同态濾波方法進行醫學圖像增強

算法代碼位址:

https://mbd.pub/o/bread/mbd-ZJuYmZ1r

擅長現代信号處理(改進小波分析系列,改進變分模态分解,改進經驗小波變換,改進辛幾何模态分解等等),改進機器學習,改進深度學習,機械故障診斷,改進時間序列分析(金融信号,心電信号,振動信号等)

MATLAB環境下使用同态濾波方法進行醫學圖像增強
MATLAB環境下使用同态濾波方法進行醫學圖像增強

繼續閱讀