작은 이미지를 0으로 채우려고하면 큰 이미지와 크기가 같아집니다. 예를 들어
%Start with rows:
if size(I1,1) > size(I2,1) %I1 has more rows so pad I2
pad = zeros (size(I1,1) - size(I2,1), size(I2,2));
I2 = [I2 ; pad]; %Append the rows of zeros to the bottom of I2
else %I2 has more rows so pad I1
pad = zeros (size(I2,1) - size(I1,1), size(I1,2));
I1 = [I1 ; pad]; %Append the rows of zeros to the bottom of I1
%Pad the columns
if size(I1,2) > size(I2,2) %I1 has more rows so pad I2
pad = zeros (size(I2,1), size(I1,2) - size(I2,2));
I2 = [I2 , pad]; %Append the columns of zeros to the left of I2
else %I2 has more rows so pad I1
pad = zeros (size(I1,1), size(I2,2) - size(I1,2));
I1 = [I1 , pad]; %Append the columns of zeros to the left of I1
내가 테스트하지 않은 그래서 당신은 어쩌면 크기 (I2,2)처럼 완벽한 치수를 얻기 위해 약간의 바이올린해야 할 수도 있지만 - 크기 (I1,2) + 1 대신 크기의 (I2,2) - 크기 (I1,2), 그런 종류의 것.
하지만 먼저 무엇을 하려는지 논리를 파악해야합니다. 응용 프로그램에서 0으로 채우는 것이 의미가 없을 수 있습니다. 또한 내 코드 패드는 아래쪽과 왼쪽에 붙어 있지만 이미지가 중앙에 위치하도록 모든 부분을 패드 할 수 있습니다.
출처
2012-04-17 07:11:25
Dan
+1 좋은 설명입니다. 다른 대안은 더 큰 이미지를 더 작은 이미지 크기로 자르는 것입니다. –
그래, 자르기는 가능하지만 정보가 손실 될 가능성이 적습니다. 그러나 패딩 (padding)이나 0이 아닌 다른 옵션이 있습니다. 어쩌면 이미지를 가장자리 나 다른 외삽 형태로 반사 할 수 있습니다. 그러나 완전히 맥락입니다. – Dan
이미지 처리 도구 상자를 사용하면 대신'padarray'를 사용할 수 있습니다. – Jonas