同态滤波 matlab代码,同态滤波处理光照不均匀图像Matlab代码
里面是同態濾波處理圖像代碼,可供讀者參考
clear all;
% 裝載圖片,將yourimage換成你要處理的圖片
img= imread('無標.png');
%img=img0(:,:,1);
% 顯示這個圖片
J=rgb2gray(img);
figure,imshow(J);
title('灰度圖');
figure,imhist(J);
figure,imshow(img);
title('Original Image');
% 構造一個高斯濾波器
f_high = 1.0;
f_low = 0.4;
% 得到一個高斯低通濾波器
gauss_low_filter = fspecial('gaussian', [7 7], 1.414);
matsize = size(gauss_low_filter);
% 由于同態濾波是要濾出高頻部分,
% 所以我們得把這個低通濾波器轉換成一個高通濾波器.
% f_high 和 f_low 是控制這個高通濾波器形態的參數.
gauss_high_filter = zeros(matsize);
gauss_high_filter(ceil(matsize(1,1)/2) , ceil(matsize(1,2)/2)) = 1.0;
gauss_high_filter = f_high*gauss_high_filter - (f_high-f_low)*gauss_low_filter;
% 顯示高通濾波期的頻率響應
figure,freqz2(gauss_high_filter);
colormap(jet(64));
% 利用對數變換將入射光和反射光部分分開
log_img = log(double(img));
% 將高斯高通濾波器與對數轉換后的圖象卷積
high_log_part = imfilter(log_img, gauss_high_filter, 'symmetric', 'conv'); % 顯示卷積后的圖象
figure,imshow(uint8(255*((high_log_part-1.5)/(2.4-1.5))),[]);
title('巴特沃斯高通濾波結果');
% 由于被處理的圖象是經過對數變換的,我們再用冪變換將圖象恢復過來
high_part = exp(high_log_part);
minv = min(min(high_part));
maxv = max(max(high_part));
rimg(:,:,1)=(high_part(:,:,1)-minv(1,1,1))/(maxv(1,1,1)-minv(1,1,1));
總結
以上是生活随笔為你收集整理的同态滤波 matlab代码,同态滤波处理光照不均匀图像Matlab代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql获取总列数
- 下一篇: SheevaPlug是什么,有什么用途