数字图像处理——数字图像的基本运算(实验)

 

使用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('原图直方图');%标题

 

数字图像处理——数字图像的基本运算(实验)_第1张图片

[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('向右下方平移半个图像长宽的距离');%标题

数字图像处理——数字图像的基本运算(实验)_第2张图片

figure,imshow(lena);          %建立窗口,显示放大后的图
title('原图');%标题
J3=imresize(lena,2);
figure,imshow(J3);          %建立窗口,显示放大后的图
title('放大一倍');%标题

数字图像处理——数字图像的基本运算(实验)_第3张图片

 

 

你可能感兴趣的:(#,图像处理)