數字圖像處理及MATLAB實現實驗三——圖像基本運算


1.圖像的點運算

1.內容:

對一灰度圖像,通過選擇不同的灰度變換函數s=T(r)實現圖像的灰度變換范圍線性擴展和非線性擴展,以及圖像的灰度倒置和二值化

2.實驗方法:

1.選擇一幅圖像lena.jpg,設置輸入輸出變換的灰度級范圍,a=0.3,b=0.6,c=0.1,d=0.9。
2.設置非線性擴展函數的參數c=2。
3.采用灰度倒置變換函數s=255-r進行圖像變換。
4.設置二值化圖像的閾值,分別為level=0.4,level=0.7參考程序如下。

%1.圖像的點運算
%內容:對一灰度圖像,通過選擇不同的灰度變換函數s=T(r)實現圖像的灰度變換范圍線性擴展和非線性擴展,以及圖像的灰度倒置和二值化
%實驗方法:
% 1.選擇一幅圖像lena.jpg,設置輸入輸出變換的灰度級范圍,a=0.3,b=0.6,c=0.1,d=0.9% 2.設置非線性擴展函數的參數c=2% 3.采用灰度倒置變換函數s=255-r進行圖像變換。
% 4.設置二值化圖像的閾值,分別為level=0.4,level=0.7參考程序如下。
I=imread('lena.jpg');
figure;
subplot(1,3,1);
imshow(I);
title('原圖');
J=imadjust(I,[0.3;0.6],[0.1;0.9]);%設置灰度變換的范圍
subplot(1,3,2);
imshow(J);
title('線性擴展');
I1=double(I);%將圖像轉換為double類型
I2=I1/255;%歸一化此圖像
C=2;
K=C*log(1+I2);%求圖像的對數變換
subplot(1,3,3);
imshow(K);
title('非線性擴展');
M=255-I;
figure;
subplot(1,3,1);
imshow(M);
title('灰度倒置');
N1=im2bw(I,0.4);%將此圖像二值化,閾值為0.4
N2=im2bw(I,0.7);%將此圖像二值化,閾值為0.7
subplot(1,3,2);
imshow(N1);
title('二值化閾值0.4');
subplot(1,3,3);
imshow(N2);
title('二值化閾值0.7');

2.圖像的代數運算 

內容:

采用正確的圖像代數運算方法,分別實現圖像圖像疊加,混合圖像的分離和圖像的局部顯示效果 

1.選取兩幅大小一樣的灰度圖像iena.jpg和rice.jpg,將兩幅圖像進行加法運算,結果如圖。

I=imread('lena.jpg');
I=rgb2gray(I);
J=imread('rice.png');
I=im2double(I);%將圖像轉換為double圖像
J=im2double(J);
K=I+0.3*J;%兩幅圖像相加
subplot(1,3,1);
imshow(I);
title('人物圖');
subplot(1,3,2);
imshow(J);
title('背景圖');
subplot(1,3,3);
imshow(K);
title('相加后的圖');
imwrite(K,'lena.jpg');

2.選取一幅混合圖像,如上述得到的lena.jpg,將混合圖像與背景圖像做減法運算,程序如下。

A=imread('lena.jpg');B=imread('rice.png');
C=A-0.3*B;%混合圖減去背景圖
subplot(1,3,1);
imshow(A);
title('混合圖');
subplot(1,3,2);
imshow(B);
title('背景圖');
subplot(1,3,3);
imshow(C);
title('分離后的圖');

3.選取一幅尺寸為256*256像素的灰度圖,如lena.jpg.設置掩模模板,對於需要保留下來的區域,掩模圖像的值為1,而在被抑制掉的區域掩模圖像的值置為0。

A=imread('lena.jpg');
A=rgb2gray(A);
A=im2double(A);
subplot(1,3,1);
imshow(A);
title('原圖');
B=zeros(256,256);
B(40:200,40:200)=1;
subplot(1,3,2);
imshow(B);
K=A.*B;
subplot(1,3,3)
imshow(K);
title('局部圖');

 

 

3.圖像的縮放

 將圖片比例放大至1.5倍、0,7倍,非比例放大至420*384、150*180像素

%將圖片比例放大至1.5倍、0,7倍,非比例放大至420*384150*180像素
A=imread('lena.jpg');
B1=imresize(A,1.5);%比例放大至1.5倍
subplot(1,4,1);
imshow(B1);
B2=imresize(A,[420 384]);%非比例放大至420*384像素
subplot(1,4,2);
imshow(B2);
C1=imresize(A,0.7);%比例放大至0.7倍
subplot(1,4,3);
imshow(C1);
C2=imresize(A,[150, 180]);%非比例放大至150*180像素
subplot(1,4,4);
imshow(C2);

 

 

4.圖像的旋轉

 設置圖像旋轉的角度分別為45和90度,采用圖像旋轉函數imrotate對圖像進行旋轉

%設置圖像旋轉的角度分別為45和90度,采用圖像旋轉函數imrotate對圖像進行旋轉
I=imread('lena.jpg');
J=imrotate(I,45);%圖像采用逆時針旋轉,默認采用最近鄰插值法進行插值處理
K=imrotate(I,90);%默認旋轉出界的部分不被截出
subplot(1,3,1);
imshow(I);
subplot(1,3,2);
imshow(J);
subplot(1,3,3);
imshow(K);

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM