0
Matlab에서 이미지에 'I'와 두 개의 길이를 사용하는 함수를 작성하고 'I'와 동일한 크기의 이미지를 'I'로 변환했습니다. 길이 항목. 수행되는 변환은 주기적입니다. 즉, 변환 된 픽셀이 I의 차원 중 하나를 넘어서 d 픽셀로 이동하면이 차원과 관련된 축의 d 위치에 배치됩니다.Matlab의 코드 벡터화
이 함수는 두 개의 for 루프를 사용하며 더 빠른 방법으로 실행되도록 벡터화하려고합니다. 다음과 같이
function [ output ] = translated(I,horizontal_translation, vertical_translation)
output=I;
[H , W]=size(I);
sx=horizontal_translation; sy=vertical_translation;
for i=1:H
for j=1:W
if i+sx>H
i_=mod(i+sx,H);
else
i_=i+sx;
end
if j+sy>W
j_=mod(j+sy,W);
else
j_=j+sy;
end
output(i_,j_)=I(i,j);
end
end
end
modulo 함수를 호출 할 필요가 없습니다. 단지 [sy : W 1 : sy-1]'뿐입니다. 또한 H와 W가 반대 인 것처럼 보입니까? –