同態濾波的原理框圖
matlab**:
clear,clc;
img = imread('tape.png');
l = size(img); % 計算影象大小
if numel(l)>2 %判斷影象是否是彩色影象
gray = rgb2gray(img); % 影象灰度變換
else
gray = img;
endgray = double(gray);
[m, n] = size(gray);
rl = 0.5; % 高頻增益
rh = 0.8; % 低頻增益
c = 0.5; % 調節濾波器函式的斜面的銳化係數
d0 = 50; % 截止頻率
n = 1; % 濾波器的階數
i1 = log(gray + 1);
f1 = fft2(i1);
h1 = zeros(m,n);
n1 = floor(m/2);
n2 = floor(n/2);
for i = 1:m
for j = 1:n
d(i,j) = sqrt(( (i-n1).^2 + (j-n2).^2));
a = rh - rl;
b = power( d(i,j)/d0, 2*n);
c = 1 - exp(-c*b);
h1 = a * c + rl;
endendi2 = ifft2(h1.*f1);
i3 = real(exp(i2));
i3 = img_normal(i3);
ih1 = uint8(i3*256);
figure(1);
subplot(121); imshow(gray,); title('原始影象');
subplot(122); imshow(ih1,); title('濾波後影象');
function temp = img_normal(img)
%% 函式功能:歸一化輸入影象
% 輸出為【0,1】之間的double資料
img = round(img); % 將影象四捨五入為整數
img_max = max(max(img));
img_min = min(min(img));
[row, col] = size(img);
temp = zeros(row, col);
for i = 1:row
for j = 1:col
temp(i,j) = double((img(i,j) - img_min)/(img_max - img_min));
endendend
同態濾波及其實現
一 同態濾波 對於一幅由物理過程產生的影象f x,y 可以表示為照射分量i x,y 和反射分量r x,y 的乘積。0因為該性質是乘性的,所以不能直接使用傅利葉變換對i x,y 和r x,y 進行控制,因此可以先對f x,y 取對數,分離i x,y 和r x,y 令z x,y ln f x,y ln ...
同態濾波的補充說明
之前介紹過同態濾波的計算公式 本文為一些補充說明。實際應用中,經常碰到這樣一類影象,它們的灰度動態範圍很大,即 黑的部分很黑,白的部分很白,使用者感興趣的中間一部分灰度級範圍又很小,分不清物體的灰度層次和細節。遇到這種情況,一般的灰度線性變換沒法解決問題,因為擴充套件灰度級雖然可以提高影象的反差,但...
巴特沃斯濾波與同態濾波
為了處理手機加速度計感測器資料。function butterworth1d butterworthfilter input1d,d 0,n butterworthfilter 此處顯示有關此函式的摘要 此處顯示詳細說明 1 h x 1 d d 0 2n input1d 輸入一維訊號 d 0 20 ...