MATLAB---同态滤波
生活随笔
收集整理的這篇文章主要介紹了
MATLAB---同态滤波
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
% 同態濾波
clc,clear,close all % 清理命令區、清理工作區、關閉顯示圖形
warning off % 消除警告
feature jit off % 加速代碼運行
tic
[filename ,pathname]=...uigetfile({'*.bmp';'*.tif';'*.jpg';},'選擇圖片'); %選擇圖片路徑
str=[pathname filename]; % 合成路徑+文件名
im = imread(str); % 讀圖
im = imnoise(im,'gaussian',0,1e-3); % 原圖像 + 白噪聲%同態濾波參數設置
rL = 0.3999; % 低頻增益
rH = 0.71; % 高頻增益
D0 = 1; % 截止頻率
figure,
subplot(121),imshow(im);title('原始圖像')
colormap(jet) % 顏色
shading interp % 消隱
im_e = Homom_filter(im,D0,rL,rH); % 同態濾波
subplot(122),imshow(im_e,[]);title('同態濾波圖像')
colormap(jet) % 顏色
shading interp % 消隱
toc
function im_e = Homom_filter(im,d,rL,rH)
% 同態濾波
%函數輸入:
% im: 輸入的二維圖像矩陣
% d: 截止頻率
% rL 低頻增益
% rH 高頻增益
%函數輸出:
% im_e: 重構濾波圖像if ~isa(im,'double')im = double(im);
end[r c]=size(im); % 輸入圖像維數
% 高斯高通濾波
A=zeros(r,c);
for i=1:rfor j=1:cA(i,j)=(((i-r/2).^2+(j-c/2).^2)).^(.5);B(i,j)=A(i,j)*A(i,j);H(i,j)=(1-exp(-((B(i,j)).^2/d.^2))); % 傳遞函數end
end% 同態濾波器傳遞函數:
H=((rH-rL).*H)+rL;
% 取對數
im_l=log2(im + 1e-5);
% 離散傅里葉變換
im_f=fft2(im_l);
% 濾波
im_nf=H.*im_f;
% DFT反變換
im_n=abs(ifft2(im_nf));
% 指數變換,消除取對數
im_e = exp(im_n); % 濾波矩陣
im_e = uint8(im_e);
總結
以上是生活随笔為你收集整理的MATLAB---同态滤波的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Socket]BSD socket简易
- 下一篇: cygwin下的gcc-4.7.1编译心