数字图像的基本运算

数字图像的基本运算

实验任务

  • 用数字运算符合实现图像的加减乘运算。
  • 用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)
    • B = imrotate(A,angle,method,bbox)
      • bbox参数用于指定输出图像属性:
        • ’crop’: 通过对旋转后的图像B进行裁剪, 保持旋转后输出图像B的尺寸和输入图像A的尺寸一样。
        • ‘loose’: 使输出图像足够大, 以保证源图像旋转后超出图像尺寸范围的像素值没有丢失。 一般这种格式产生的图像的尺寸都要大于源图像的尺寸。

代数运算函数

函数名 功能描述
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变为灰度图像。

猜你喜欢

转载自blog.csdn.net/guoxuan_chn/article/details/70341527