conv2
2차원 컨벌루션(2-D Convolution)
설명
예제
2차원 컨벌루션(2-D Convolution)
영상 처리와 같은 응용 프로그램에서는 컨벌루션의 입력값을 출력값과 직접 비교하면 유용할 수 있습니다. conv2
함수를 사용하면 출력값의 크기를 제어할 수 있습니다.
3×3 확률 행렬 A
와 4×4 확률 행렬 B
를 만듭니다. A
와 B
의 전체 컨벌루션(6×6 행렬)을 계산합니다.
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
의 부분행렬)를 계산합니다. Csame
은 Cfull(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
2차원 받침대 모서리 추출
소벨 모서리(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)
받침대의 세로 모서리를 추출하려면 u
및 v
와 컨벌루션하는 순서를 바꾸십시오.
Cv = conv2(v,u,A); mesh(Cv)
받침대의 결합된 모서리를 계산하고 플로팅합니다.
figure mesh(sqrt(Ch.^2 + Cv.^2))
입력 인수
A
— 입력 배열
벡터 | 행렬
입력 배열로, 벡터나 행렬로 지정됩니다.
데이터형: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
복소수 지원 여부: 예
B
— 두 번째 입력 배열
벡터 | 행렬
두 번째 입력 배열로, A
와 컨벌루션할 벡터나 행렬로 지정됩니다. 배열 B
는 크기가 A
와 동일하지 않아도 됩니다.
데이터형: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
복소수 지원 여부: 예
u
— 입력 벡터
행 벡터 또는 열 벡터
입력 벡터로, 행 벡터나 열 벡터로 지정됩니다. u
는 A
의 각 열과 컨벌루션됩니다.
데이터형: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
복소수 지원 여부: 예
v
— 두 번째 입력 벡터
행 벡터 또는 열 벡터
두 번째 입력 벡터로, 행 벡터나 열 벡터로 지정됩니다. v
는 A
의 열과 컨벌루션된 u
의 각 행과 컨벌루션됩니다.
데이터형: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
복소수 지원 여부: 예
shape
— 컨벌루션의 하위 섹션
'full'
(디폴트 값) | 'same'
| 'valid'
컨벌루션의 하위 섹션으로, 다음 값 중 하나로 지정됩니다.
'full'
— 2차원 전체 컨벌루션을 반환합니다.'same'
— 크기가A
와 동일한, 컨벌루션의 중앙부를 반환합니다.'valid'
— 컨벌루션에서 모서리를 0으로 채우지 않고 계산한 부분만 반환합니다.
출력 인수
C
— 2차원 컨벌루션(2-D Convolution)
벡터 | 행렬
2차원 컨벌루션으로, 벡터나 행렬로 반환됩니다. A
와 B
가 행렬인 경우 컨벌루션 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의 컨벌루션이 정의됩니다.
p와 q는 A(p,q)와 B(j-p+1,k-q+1)의 유효한 첨자가 되는 모든 값을 차례로 갖습니다.
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
사용법 관련 참고 및 제한 사항:
shape
가'full'
(디폴트 값)이면 입력값A
와B
는 비어 있지 않아야 하고 그중 하나만 tall형 배열이 될 수 있습니다.shape
가'same'
또는'valid'
이면B
는 tall형 배열일 수 없습니다.u
와v
는 tall형 배열일 수 없습니다.
자세한 내용은 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
이 함수는 GPU 배열을 완전히 지원합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
사용법 관련 참고 및 제한 사항:
입력 벡터
u
와v
는 분산 배열이 아니어야 합니다.
자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)