주요 콘텐츠

im2col

영상 블록을 열로 재배열

설명

B = im2col(A,[m n])은 크기가 m×n인 슬라이딩 영상 이웃을 0으로 채우기 없이 열로 재배열하고, 결합된 열을 행렬 B로 반환합니다.

예제

B = im2col(A,[m n],blockType)blockType 인수를 사용하여 블록이 개별 블록인지 아니면 슬라이딩 이웃인지도 지정합니다.

개별 블록 처리의 경우, im2col 함수는 필요한 경우 영상 A를 채웁니다. 채우기 값에 대한 자세한 내용은 항목을 참조하십시오.

B = im2col(A,"indexed",[m n],blockType)A를 인덱스 영상으로 해석합니다.

예제

모두 축소

행렬을 만듭니다.

A = reshape(linspace(0,1,16),[4 4])'
A = 4×4

         0    0.0667    0.1333    0.2000
    0.2667    0.3333    0.4000    0.4667
    0.5333    0.6000    0.6667    0.7333
    0.8000    0.8667    0.9333    1.0000

값을 열 방향으로 재배열합니다.

B = im2col(A,[2 2])
B = 4×9

         0    0.2667    0.5333    0.0667    0.3333    0.6000    0.1333    0.4000    0.6667
    0.2667    0.5333    0.8000    0.3333    0.6000    0.8667    0.4000    0.6667    0.9333
    0.0667    0.3333    0.6000    0.1333    0.4000    0.6667    0.2000    0.4667    0.7333
    0.3333    0.6000    0.8667    0.4000    0.6667    0.9333    0.4667    0.7333    1.0000

평균을 계산합니다.

M = mean(B)
M = 1×9

    0.1667    0.4333    0.7000    0.2333    0.5000    0.7667    0.3000    0.5667    0.8333

값을 원래의 행 방향으로 재배열합니다.

newA = col2im(M,[1 1],[3 3])
newA = 3×3

    0.1667    0.2333    0.3000
    0.4333    0.5000    0.5667
    0.7000    0.7667    0.8333

입력 인수

모두 축소

영상으로, 2차원 회색조 영상, 2차원 이진 영상 또는 2차원 인덱스 영상으로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

블록 크기로, 요소를 2개 가진 벡터로 지정됩니다. m은 블록의 행 개수이고 n은 열 개수입니다.

블록 유형으로, 슬라이딩 이웃을 나타내려면 "sliding"으로 지정되고 개별 블록을 나타내려면 "distinct"로 지정됩니다.

출력 인수

모두 축소

영상 블록으로, m*n개 행을 갖는 숫자형 행렬 또는 논리형 행렬로 반환됩니다. 열의 개수는 영상 블록이 개별 블록인지 슬라이딩 이웃인지에 따라 달라집니다. B의 각 열에는 열 벡터로 형태 변경된 A의 블록 또는 이웃이 포함됩니다.

  • 개별 블록 처리의 경우, BA에 있는 m×n개 블록과 동일한 개수의 열을 가집니다. 예를 들어, A의 크기가 [mm nn]인 경우 B(mm/m)*(nn/n)개의 열을 갖습니다.

  • 슬라이딩 이웃 처리의 경우, BAm×n개 이웃과 동일한 개수의 열을 갖습니다. 예를 들어, A의 크기가 [mm nn]인 경우 B((mm-m+1)*(nn-n+1))개의 열을 갖습니다.

행렬 B의 열 순서는 영상 A를 열 방향으로 순회하여 결정됩니다. 예를 들어 AA = [A11 A12; A21 A22]로 배열된 개별 블록 Aij로 구성된 경우, B = [A11(:) A21(:) A12(:) A22(:)]입니다.

  • 개별 블록 처리의 경우, im2col은 필요한 경우 A에 0을 채워서 크기가 m×n의 정수 배수가 되도록 합니다. A의 데이터형이 uint8, uint16 또는 logical인 경우, 채우기 값은 0입니다. 다른 데이터형의 경우 채우기 값은 A가 인덱스 영상으로 해석되는지 여부에 따라 달라집니다.

    • A가 인덱스 영상으로 해석되는 경우 채우기 값은 1입니다.

    • A가 인덱스 영상으로 해석되지 않는 경우 채우기 값은 0입니다.

  • im2colB의 열을 정렬하여 reshape에 따라 형태를 변경하여 행렬을 형성할 수 있도록 합니다.

    예를 들어, B의 각 열에 대한 스칼라를 반환하는 sum(B)와 같은 함수를 사용한다고 가정해 보겠습니다. 다음 호출을 사용하여 결과를 크기가 (mm-m+1)×(nn-n+1)인 행렬에 직접 저장할 수 있습니다.

    B = im2col(A,[m n],"sliding");
    C = reshape(sum(B),mm-m+1,nn-n+1);

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | |