编写一个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)
答案 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