Как перевернуть изображение в Matlab без использования встроенных функций? - PullRequest
1 голос
/ 08 апреля 2020

Напишите код MATLAB, который считывает изображение в оттенках серого и генерирует перевернутое изображение исходного изображения. введите описание изображения здесь Я пытаюсь этот код, но не дает правильного перевернутого изображения. Помощь будет очень признателен. Спасибо

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 ]

2 голосов
/ 08 апреля 2020

Что вы делаете с индексами, вроде неясно. Вы также должны предварительно выделить память для результата.

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 голос
/ 08 апреля 2020

Вы можете использовать индексирование basi c, чтобы перевернуть матрицу. 2D-кейс (серое изображение):

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-кейса (цветное изображение) добавьте 3-й индекс ::

a = a(:,end:-1:1,:); % horizontal flip
...