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*384、150*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);