數字圖像處理——數字圖像的基本運算(實驗)

 

使用matlab 讀取Lena.bmp圖像,並將其顯示爲: 

 1、原始圖像 

 2、左右翻轉的圖像 

 3、上下翻轉的圖像 

 4、放大一倍的圖像 

 5、顯示其直方圖 

 6、圖像向右下方平移半個圖像長寬的距離


MATLAB通過imread函數讀入標準格式圖像文件,得到描述圖像的數值數組,然後通過image、imagesc命令以這些數值數組爲參數就可以在MATLAB  Figure窗口座標軸下顯示圖像,通過axis、colormap命令可以設置座標軸比例和色彩表。

一、MATLAB中利用函數imread來實現圖像文件的讀取操作,格式如下:

  1. A=imread(‘文件名’,文件格式)。
  2. [X,map]=imread(‘文件名’): X代表索引圖像的數據矩陣,map爲顏色映射表。

通常情況下,通過imread讀取的大多數圖像都是8位的。把這些圖像加載在內存中時,MATLAB就將其存儲在unit8類型的矩陣中。此外,MATLAB還支持16位的PNG和TIFF圖像,用戶讀取這些圖像時,MATLAB就將其存儲在unit16類型的矩陣中。

對索引圖像來說,即使圖像矩陣本身爲unit8或unit16類型,imread函數讀取顏色映射表後將其存在一個雙精度浮點類型的矩陣中。


二、圖像讀入及顯示應用示例。

 

 

 

lena=imread('E:\圖像處理\lena.bmp');%輸入圖像
subplot(2,3,1)%兩行三列 第1個
imshow(lena)%顯示原始圖像
title('原始圖像')%標題

J1=flip(lena,1);%原圖像的垂直鏡像
subplot(2,3,3)%兩行三列 第3個
imshow(J1)%垂直翻轉圖
title('垂直翻轉圖像')%標題

J2=flip(lena,2);%原圖像的水平鏡像
subplot(2,3,2)%兩行三列 第2個
imshow(J2)%水平翻轉圖
title('水平翻轉圖像')%標題

subplot(2,3,5)%兩行三列 第5個
imhist(lena);%直方圖
title('原圖直方圖');%標題

 

[r,c]=size(lena);%計算圖的大小,r表示行,c表示列
dst=zeros(r,c);%建立r×c的0矩陣(平移結果矩陣),初始化爲零(黑色)
dx=128;%平移的x方向的距離,這裏是豎直方向
dy=128;%平移的y方向的距離,這裏是水平方向
tras=[1 0 dx;0 1 dy;0 0 1];         %平移變換矩陣
for i=1:r
    for j=1:c
        temp=[i;j;1];               %灰度圖I要平移變換的點,這裏用矩陣表示
        temp=tras*temp;             %矩陣相乘,得到三行一列的矩陣temp,即平移後的矩陣
        x=temp(1,1);                %把矩陣temp的第一行第一列的元素給x   
        y=temp(2,1);                %把矩陣temp的第二行第一列的元素給y 
        if(x>=1&&x<=r)&&(y>=1&&y<=c)%判斷所變換後得到的點是否越界
            dst(x,y)=lena(i,j);     %得到平移結果矩陣,點(x,y)是由點(i,j)平移而來的,有對應關係
        end
    end
end
figure,imshow(uint8(dst));          %建立窗口,顯示平移後的圖
title('向右下方平移半個圖像長寬的距離');%標題

figure,imshow(lena);          %建立窗口,顯示放大後的圖
title('原圖');%標題
J3=imresize(lena,2);
figure,imshow(J3);          %建立窗口,顯示放大後的圖
title('放大一倍');%標題

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章