matlab 同态滤波
生活随笔
收集整理的這篇文章主要介紹了
matlab 同态滤波
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
處理圖片:
代碼:
clear all clc %參數聲明 rH = 1; rL = 0.1; c = 0.2;%介于rH和rL之間 D0 = 0.2;image = imread('3.bmp'); [M, N] = size(image); %取對數 img_log = log(double(image) + 1);%平移到中心,判斷語句代替指數計算 img_py = zeros(M, N); for i = 1:Mfor j= 1:Nif mod(i+j, 2) == 0img_py(i,j) = img_log(i, j);elseimg_py(i,j) = -1 * img_log(i, j);endend end% 對填充后的圖像進行傅里葉變換 img_py_fft = fft2(img_py);%同態濾波函數 img_tt = zeros(M, N); deta_r = rH - rL; D = D0^2; m_mid=floor(M/2);%中心點坐標 n_mid=floor(N/2); for i = 1:Mfor j =1:Ndis = ((i-m_mid)^2+(j-n_mid)^2);img_tt(i, j) = deta_r * (1-exp((-c)*(dis/D))) + rL;end end%濾波 img_temp = img_py_fft.*img_tt;%反變換,取實部,絕對值 img_temp = abs(real(ifft2(img_temp)));%指數化 img_temp = exp(img_temp) - 1;%歸一化處理 max_num = max(img_temp(:)); min_num = min(img_temp(:)); range = max_num - min_num; img_after = zeros(M,N,'uint8'); for i = 1 : Mfor j = 1 : Nimg_after(i,j) = uint8(255 * (img_temp(i, j)-min_num) / range);end end figure imshow(image), title('原圖像'); figure imshow(img_after), title('變換后'); imwrite(img_after,'同態濾波.png');運行:
總結
以上是生活随笔為你收集整理的matlab 同态滤波的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【职场日语】日文简历模板
- 下一篇: matlab人脸追踪,求大神帮助我这个菜