数字图像的基本运算
实验任务
- 用数字运算符合实现图像的加减乘运算。
- 用IPT函数实现图像的加减乘运算。
- 实现图像的缩放。
- 实现图像的旋转。
设计函数
imresize
- 功能 :改变图像的大小。
- 函数原型 :
- B = imresize(A,m)
- B = imresize(A,m,method)
- B = imresize(A,[mrows ncols],method)
- PS :
- mrersize函数使用由参数method指定的插值运算来改变图像的大小。
- method的几种可选值:
- ’nearest’(默认值)最近邻插值
- ‘bilinear’双线性插值
- ‘bicubic’双三次插值
- B = imresize(A,m)表示把图像A放大m倍
- B = imresize(…,method,h)中的h可以是任意一个FIR滤波器(h通常由函数ftrans2、fwind1、fwind2、或fsamp2等生成的二维FIR滤波器)。
imrotate
- 功能 :对图像进行旋转操作。
- 函数原型 :
- B = imrotate(A,angle)
- B = imrotate(A,angle,method)
- B = imrotate(A,angle,method,bbox)
- PS :
- B = imrotate(A,angle)
- 将图像A(图像的数据矩阵)绕图像的中心点旋转angle度, 正数表示逆时针旋转, 负数表示顺时针旋转。返回旋转后的图像矩阵。
- B = imrotate(A,angle,method)
- 使用method参数可以改变插值算法,method参数可以为下面这三个值:
- ’nearest’:最邻近线性插值(Nearest-neighbor interpolation)
- ‘bilinear’: 双线性插值(Bilinear interpolation)
- ‘bicubic’: 双三次插值(或叫做双立方插值)(Bicubic interpolation)
- 使用method参数可以改变插值算法,method参数可以为下面这三个值:
- B = imrotate(A,angle,method,bbox)
- bbox参数用于指定输出图像属性:
- ’crop’: 通过对旋转后的图像B进行裁剪, 保持旋转后输出图像B的尺寸和输入图像A的尺寸一样。
- ‘loose’: 使输出图像足够大, 以保证源图像旋转后超出图像尺寸范围的像素值没有丢失。 一般这种格式产生的图像的尺寸都要大于源图像的尺寸。
- bbox参数用于指定输出图像属性:
- B = imrotate(A,angle)
代数运算函数
函数名 | 功能描述 |
---|---|
Imabsdiff | 两幅图像的绝对差值 |
Imadd | 两幅图像的加法 |
Imlincomb | 计算两幅图像的线性组合 |
Immultiply | 两幅图像的乘法 |
Imsubtract | 两幅图像的减法 |
源代码
...读取图片
f = imread('./test.TIF');
g = imread('./test.tif');
...info=imfinfo('./logo.tif');
...转化为二进制,即灰度图
f = rgb2gray(f);
g = rgb2gray(g);
...初始化,即相同长度的数组
[M, N] = size(g);
f2g = imresize(f ,[M,N] ,'nearest');
...减法
fg = f2g - g;
imshow(fg);
f_g = imsubtract(f2g,g);
imshow(f_g);
...加法
fg = f2g + g;
imshow(fg);
f_g = Imadd(f2g,g);
imshow(f_g);
...乘法
fg = f2g * g;
imshow(fg);
f_g = Immultiply(f2g,g);
imshow(f_g);
...旋转
f_g = imrotate(A,angle,method)
imshow(f_g);
后语
imshow()函数只能显示最后一次调用,当有很多imshow()被调用时。图像的运算有两种方法。一种为符号运算,一种为函数方法,不过效果是一样的。同时要注意,图像纬度的问题。只有三维的BRG图像才能用rgb2gray变为灰度图像。