使用matlab 讀取Lena.bmp圖像,並將其顯示爲:
1、原始圖像
2、左右翻轉的圖像
3、上下翻轉的圖像
4、放大一倍的圖像
5、顯示其直方圖
6、圖像向右下方平移半個圖像長寬的距離
MATLAB通過imread函數讀入標準格式圖像文件,得到描述圖像的數值數組,然後通過image、imagesc命令以這些數值數組爲參數就可以在MATLAB Figure窗口座標軸下顯示圖像,通過axis、colormap命令可以設置座標軸比例和色彩表。
一、MATLAB中利用函數imread來實現圖像文件的讀取操作,格式如下:
- A=imread(‘文件名’,文件格式)。
- [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('放大一倍');%標題