matlab圖像增強演算法
1. Matlab怎樣把一個彩色圖像進行簡單的增強
增強圖象中的有用信息,它可以是一個失真的過程,其目的是要增強視覺效果。將原來不清晰的圖像變得清晰或強調某些感興趣的特徵,抑制不感興趣的特徵,使之改善圖像質量、豐富信息量,加強圖像判讀和識別效果的圖像處理方法。
圖像增強按所用方法可分成頻率域法和空間域法。前者把圖像看成一種二維信號,對其進行基於二維傅里葉變換的信號增強。採用低通濾波(即只讓低頻信號通過)法,可去掉圖中的雜訊;採用高通濾波法,則可增強邊緣等高頻信號,使模糊的圖片變得清晰。具有代表性的空間域演算法有局部求平均值法和中值濾波(取局部鄰域中的中間像素值)法等,它們可用於去除或減弱雜訊。
圖像增強的目的是改善圖像的視覺效果,針對給定圖像的應用場合,有目的地強調圖像的整體或局部特性,擴大圖像中不同物體特徵之間的差別,滿足某些特殊分析的需要。其方法是通過一定手段對原圖像附加一些信息或變換數據,有選擇地突出圖像中感興趣的特徵或者抑制(掩蓋)圖像中某些不需要的特徵,使圖像與視覺響應特性相匹配。在圖像增強過程中,不分析圖像降質的原因,處理後的圖像不一定逼近原始圖像。圖像增強技術根據增強處理過程所在的空間不同,可分為基於空域的演算法和基於頻域的演算法兩大類。基於空域的演算法處理時直接對圖像灰度級做運算基於頻域的演算法是在圖像的某種變換域內對圖像的變換系數值進行某種修正,是一種間接增強的演算法。
基於空域的演算法分為點運算演算法和鄰域去噪演算法。點運算演算法即灰度級校正、灰度變換和直方圖修正等,目的或使圖像成像均勻,或擴大圖像動態范圍,擴展對比度。鄰域增強演算法分為圖像平滑和銳化兩種。平滑一般用於消除圖像雜訊,但是也容易引起邊緣的模糊。常用演算法有均值濾波、中值濾波。銳化的目的在於突出物體的邊緣輪廓,便於目標識別。常用演算法有梯度法、運算元、高通濾波、掩模匹配法、統計差值法等。
2. 有誰matlab寫過基於自適應濾波的Retinex圖像增強演算法
根據最後一個公式計算w(x,y), 實際上就是計算梯度水平(水平和垂直方向兩個方向綜合)
I = imread('test3.jpg'); %讀入圖象
subplot(121);imshow(I);
I = double(rgb2gray(I));
[m,n]=size(I);
H1 = [-1 -2 -1
0 0 0
1 2 1];
H2 = [-1 0 1
-2 0 2
-1 0 1];
w0 = (abs(conv2(I,double(H1),'same')) + abs(conv2(I,double(H1),'same')))/2+ones(m,n);
subplot(122);imshow(uint8(w0));
w = 1./w0;
3. 求解下面一段MATLAB代碼,關於直方圖均衡化的圖像增強演算法。
%讀圖像
img=imread('D:\我的文檔\桌面\10096009_0762641.JPG');
subplot(121),imshow(img);
%將RGB分量轉換成HSI,具體見:http://..com/question/320254032.html
img_hsi=rgb2hsi(img);
%--------------------------------------------------------------------------
%ln和DFT處理過程
% img_s=fftshift(fft2(log(img_hsi(:,:,2))));
img_s=log(img_hsi(:,:,2));
img_s=img_hsi(:,:,2);
%H 巴特沃斯高通濾波器處理過程
f=double(img_s);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
nn=5; % 2-grade Butterworth highpass filter
d0=15; % 15,30,80其中以15為例
m=fix(M/2); n=fix(N/2);
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn)); % filter transform function
%h=1./(1+(d./d0).^(2*n))
%h=exp(-(d.^2)./(2*(d0^2)));
result(i,j)=(1-h)*g(i,j);
end
end
result=ifftshift(result);
J1=ifft2(result);
img_s2=uint8(real(J1));
%--------------------------------------------------------------------------
% img_i=fftshift(fft2(log(img_hsi(:,:,3))));
img_i=log(img_hsi(:,:,3));
img_i=img_hsi(:,:,3);
%高斯濾波器
%將S分量的二維不連續Frourier變換的零頻率成分移到頻譜的中心
s=fftshift(fft2(img_i));
[M,N]=size(s); %分別返回s的行數到M中,列數到N中
n=2; %對n賦初值
%GLPF濾波,d0=5,15,30(程序中以d0=30為例)
d0=30; %初始化d0
n1=floor(M/2);n2=floor(N/2);
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2); %點(i,j)到傅立葉變換中心的距離
h=1*exp(-1/2*(d^2/d0^2)); %GLPF濾波函數
s(i,j)=h*s(i,j); %GLPF濾波後的頻域表示
end
end
img_i2=ifft2(ifftshift(s));img_i2=exp(img_i2);img_i2=uint8(real(img_i2));
%--------------------------------------------------------------------------
newImg(:,:,1)=img(:,:,1);newImg(:,:,2)=img_s2;newImg(:,:,3)=img_i2;
subplot(122),imshow(newImg);