Я очень новый программист (это мое второе упражнение), и меня попросили сменить изображение (из Галактики) на синусоидальный сдвиг. Я пытался написать программу, чтобы сделать это следующим образом:Обработка изображений в matlab
Моя программа:
GalaxyImage = imread('hs-2013-06-a-web.jpg');
image(GalaxyImage)
GalaxyImage=double(GalaxyImage)/255;
image(Sess2GalaxyIm(GalaxyImage));
Моя функция:
function [GalaxySlanted] = Sess2GalaxyIm(GalaxyImage)
A = 20;
k = 3;
Y = size(GalaxyImage, 1);
X = size(GalaxyImage, 2);
max_shift = ceil(A*2);
GalaxySlanted = zeros(Y, X+max_shift, 3);
for y=1:Y
local_shift = ceil(A*sind(k*y));
local_x = 1:X;
local_x = local_x + local_shift;
GalaxySlanted(y, local_x, :)=GalaxyImage(y, :, :);
end
end
В тот момент, когда я запускаю его, кажется, просто смещать мой образ на постоянную сумму, и я не понимаю, почему.
Можете ли вы указать, что делает синусоидальный сдвиг и почему ваш код не работает? – Acorbe
@Acorbe Это сдвиг оси x синусоидальной волной, создающий искаженное изображение (прямые в y становятся синусоидальными волнами в y). После запуска моего кода изображение кажется неизменным, кроме него все смещено вправо, а черный прямоугольник теперь слева. – user3120143