亲宝软件园·资讯

展开

Matlab函数实现图像垂直镜像

IsComputer 人气:0

Matlab相关函数知识:

  • clc 清屏

  • close all 清除变量

  • clear all 关闭窗口

  • rgb2gray 将RGB图像或颜色图转换为灰度图 

  • size(A)  [在这里只考虑A为图像]  

      • B = imresize(A,[300 300]) 将A图像调整为300*300大小,返回图像B

      • [m n] = size(A) 返回图片像素的向量[m n],这里也就是图像的像素矩阵
  • imshow(I,[]) 显示灰度图像I,根据I中的像素值范围对显示进行转换,它使用[min(I(:)) max(I(:))]作为显示范围。将I中的最小值显示为黑色,将最大值显示为白色。

  • X = zeros(sz1,...,szN) 返回由零组成的 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。

      • 例如:zeros(2,3) 将返回一个 2×3 矩阵。
  • 图像合并:其实就是将图片按矩阵排列后,形成一个新的图像

      • [A B]:A图和B图水平拼接在一起,可以理解成是矩阵的一行

      • [A B;C D]:这是一个两行的矩阵,把四幅图拼在一起,其中A与B、C与D皆是水平拼接在一起,它们各自拼接的图片又组成一个2*1的矩阵

实例:

例1:将下图转为灰度图像,实现垂直镜像

 

 

 

结果:

clc;
clear all;
close all;
A = imread('f.jpg');
I = rgb2gray(A);
[s1 s2] = size(I);
S = zeros(s1,s2);
for m = 1:s1
    for n = 1:s2
        S(m,n) = I(s1-m+1,n);
    end
end
figure;
subplot(211),imshow(I,[]),title('原图');
subplot(212),imshow(S,[]),title('垂直镜像');

  

理解:

S(m,n) = I(s1-m+1,n) 
要搞清楚s1表示第几行,把上述图片比作矩形,相当于宽,那么我们在做垂直镜像时,观察到其实每一个像素点的列不变,行发生了变化,可以自己举一个对称的小例子感受一下,一定要注意s1才是最大行数

例2:将以下四幅图像的尺寸均重新规定为300*300,并按照如下排列方式整合为一幅图像。

 

clc;
clear all;
close all;
P1 = imread('01.jpg');
P2 = imread('02.jpg');
P3 = imread('03.jpg');
P4 = imread('04.jpg');
f1 = imresize(P1,[300 300]);
f2 = imresize(P2,[300 300]);
f3 = imresize(P3,[300 300]);
f4 = imresize(P4,[300 300]);
I = [f1 f2;f3 f4];
figure;
imshow(I);

 

 

加载全部内容

相关教程
猜你喜欢
用户评论