如何在不使用内置函数的情况下在matlab中翻转图像?

时间:2020-04-07 23:41:08

标签: image matlab grayscale flip

编写一个MATLAB代码,该代码可读取灰度图像并生成原始图像的翻转图像。enter image description here 我正在尝试这段代码,但没有给我正确的翻转图像。将不胜感激。谢谢

clear all
clc
a=imread('pout.tif');
[r,c]=size(a);
for i=r:-1:1
  k=1;
for j=1:1:c 
    temp=a(k,j);
    result(k,j)=a(i,j);
    result(i,j)=temp;
     k=k+1;
  end
end
 subplot(1,2,1), imshow(a)
 subplot(1,2,2),imshow(result) 

2 个答案:

答案 0 :(得分:2)

您对索引所做的事情还不清楚。您还应该为结果预先分配内存。

clear all
clc
a=imread('pout.tif');
[r,c]=size(a);
result = a; % preallocate memory for result
for i=1:r
    for j=1:c
        result(r-i+1,j)=a(i,j);
    end
end
subplot(1,2,1), imshow(a)
subplot(1,2,2),imshow(result)

答案 1 :(得分:1)

您可以使用基本索引来翻转矩阵。二维情况(灰度图像):

a = a(:,end:-1:1); % horizontal flip
a = a(end:-1:1,:); % vertical flip
a = a(end:-1:1,end:-1:1); % flip both: 180 degree rotation

对于3D情况(彩色图像),请添加第三个索引:

a = a(:,end:-1:1,:); % horizontal flip
相关问题