이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

conv2

2차원 컨벌루션(2-D Convolution)

설명

예제

C = conv2(A,B)는 행렬 AB2차원 컨벌루션을 반환합니다.

예제

C = conv2(u,v,A)는 먼저 벡터 u을 사용하여 A의 각 열을 컨벌루션한 다음, 벡터 v를 사용하여 이 결과의 각 행을 컨벌루션합니다.

예제

C = conv2(___,shape)shape에 따라 컨벌루션의 하위 섹션을 반환합니다. 예를 들어, C = conv2(A,B,'same')은 크기가 A와 동일한, 컨벌루션의 중앙부를 반환합니다.

예제

모두 축소

영상 처리와 같은 응용 프로그램에서는 컨벌루션의 입력값을 출력값과 직접 비교하면 유용할 수 있습니다. conv2 함수를 사용하면 출력값의 크기를 제어할 수 있습니다.

3x3 확률 행렬 A와 4x4 확률 행렬 B를 만듭니다. AB의 전체 컨벌루션(6x6 행렬)을 계산합니다.

A = rand(3);
B = rand(4);
Cfull = conv2(A,B)
Cfull = 6×6

    0.7861    1.2768    1.4581    1.0007    0.2876    0.0099
    1.0024    1.8458    3.0844    2.5151    1.5196    0.2560
    1.0561    1.9824    3.5790    3.9432    2.9708    0.7587
    1.6790    2.0772    3.0052    3.7511    2.7593    1.5129
    0.9902    1.1000    2.4492    1.6082    1.7976    1.2655
    0.1215    0.1469    1.0409    0.5540    0.6941    0.6499

컨벌루션 Csame의 중앙부(크기가 A와 동일한 Cfull의 부분행렬)를 계산합니다. CsameCfull(3:5,3:5)와 같습니다.

Csame = conv2(A,B,'same')
Csame = 3×3

    3.5790    3.9432    2.9708
    3.0052    3.7511    2.7593
    2.4492    1.6082    1.7976

소벨 모서리(Sobel Edge) 찾기 작업에서는 2차원 컨벌루션을 사용하여 이미지와 기타 2차원 데이터에서 모서리를 찾습니다.

안쪽 높이가 1인 2차원 받침대를 만들고 플로팅합니다.

A = zeros(10);
A(3:7,3:7) = ones(5);
mesh(A)

A의 행을 벡터 u와 컨벌루션한 다음 결과 벡터의 행을 벡터 v와 컨벌루션합니다. 이 컨벌루션을 통해 받침대의 가로 모서리가 추출됩니다.

u = [1 0 -1]';
v = [1 2 1];
Ch = conv2(u,v,A);
mesh(Ch)

받침대의 세로 모서리를 추출하려면 uv와 컨벌루션하는 순서를 바꾸십시오.

Cv = conv2(v,u,A);
mesh(Cv)

받침대의 결합된 모서리를 계산하고 플로팅합니다.

figure
mesh(sqrt(Ch.^2 + Cv.^2))

입력 인수

모두 축소

입력 배열로, 벡터나 행렬로 지정됩니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
복소수 지원 여부:

두 번째 입력 배열로, A와 컨벌루션할 벡터나 행렬로 지정됩니다. 배열 B는 크기가 A와 동일하지 않아도 됩니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
복소수 지원 여부:

입력 벡터로, 행 벡터나 열 벡터로 지정됩니다. uA의 각 열과 컨벌루션됩니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
복소수 지원 여부:

두 번째 입력 벡터로, 행 벡터나 열 벡터로 지정됩니다. vA의 열과 컨벌루션된 u의 각 행과 컨벌루션됩니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
복소수 지원 여부:

컨벌루션의 하위 섹션으로, 다음 값 중 하나로 지정됩니다.

  • 'full' — 2차원 전체 컨벌루션을 반환합니다.

  • 'same' — 크기가 A와 동일한, 컨벌루션의 중앙부를 반환합니다.

  • 'valid' — 컨벌루션에서 모서리를 0으로 채우지 않고 계산한 부분만 반환합니다.

출력 인수

모두 축소

2차원 컨벌루션으로, 벡터나 행렬로 반환됩니다. AB가 행렬인 경우 컨벌루션 C = conv2(A,B)의 크기는 size(A)+size(B)-1입니다. [m,n] = size(A), p = length(u), q = length(v)인 경우 컨벌루션 C = conv2(u,v,A)의 행은 m+p-1개이고 열은 n+q-1개입니다.

conv2의 입력 인수 중 하나 이상이 single형인 경우 출력값은 single형입니다. 그렇지 않으면, conv2가 입력값을 double형으로 변환하고 double형 값을 반환합니다.

데이터형: double | single

세부 정보

모두 축소

2차원 컨벌루션(2-D Convolution)

이산 2차원 변수 A와 B에 대해 다음 수식으로 A와 B의 컨벌루션이 정의됩니다.

C(j,k)=pqA(p,q)B(jp+1,kq+1)

p와 q는 A(p,q)와 B(j-p+1,k-q+1)의 유효한 첨자가 되는 모든 값을 차례로 갖습니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

참고 항목

|

R2006a 이전에 개발됨