1. 程式人生 > 其它 >matlab實現影象增強的基本操作(含程式碼)

matlab實現影象增強的基本操作(含程式碼)

 

(1)γ校正:由於數字顯示裝置的非線性轉換特徵,使得影象的顯示與原始場景相比較而言發生偏暗或偏亮的現象,這個時候就可以採用γ校正進行處理,使影象的顯示等於或接近原始場景。消除影象噪聲是影象增強、恢復的內容之一。

(2)影象平滑去噪:在常見的影象處理軟體中,都提供了常用的除噪功能,其中,空間域的平滑操作最常見。在Matlab中可以實現均值濾波和中值濾波。

(3)影象銳化:影象銳化的目的是突出影象的細節,或者是增強被模糊的細節,這種模糊是在資料獲取過程中,由於操作失誤導致或經過特殊方法處理後的結果。在matlab中可以實現在空間域的影象銳化,根據一階和二階微分運算元,設計不同的模板,對影象進行微分計算。

γ校正

使用自帶的imadjust函式實現:

I=imread('D:\lab2\pic1.jpg')

I1=imadjust(I,[0 1],[0 1],0.5);!最後一個引數為gamma值,根據需要矯正的影象進行確定
figure(1);subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(I1);

 

影象平滑去噪

影象銳化

建立一階微分運算元函式,單獨存在一個的.m檔案中

%建立一階微分運算元函式,單獨存在一個的.m檔案中
function G=sharpen1(F,Dx,Dy) [m,n]=size(F); %獲取影象大小 [N,N]=size(Dx); %獲取模板大小 h
=(N+1)/2; for i=1:m for j=1:n if((i<h)||(j<h)||(i>m-h+1)||(j>n-h+1)) G(i,j)=double(F(i,j)); %影象不能被處理的區域 continue; end T=double(F(i-h+1:i+h-1,j-h+1:j+h-1)); T1=Dx.*T; T2=Dy.*T; X1=sum(T1(:)); X2=sum(T2(:)); G(i,j)=sqrt(X1^2+X2^2); end end %將計算結果調整到[0,255]的範圍 Min = min(G(:)); Max = max(G(:)); s
=255/(Max-Min); G = uint8((G-Min)*s);

新建一個test檔案,呼叫一階微分運算元函式實現各種一階微分運算元,處理準備好的影象,程式碼如下:

 

clear;
F=imread('building.jpg')subplot(2,3,1),imshow(F);

%水平微分運算元 Dx=[1 2 1;0 0 0;-1 -2 -1]; Dy=zeros(3,3); G=sharpen1(F,Dx,Dy); subplot(2,4,2),imshow(G); %垂直微分運算元 Dx=zeros(3,3); Dy=[1 0 -1;2 0 -2;1 0 -1]; G=sharpen1(F,Dx,Dy); subplot(2,3,3),imshow(G); %sobel微分運算元 Dx=[]; Dy=[1 0 -1;2 0 -2;1 0 -1]; G=sharpen1(F,Dx,Dy); subplot(2,3,3),imshow(G); %priwitt微分運算元

 

 

 

 後續將繼續更新