문제

이것이 프로그래밍과 관련이 없다는 것을 알고 있지만 Convolution 행렬이 PHP GD 기능에 어떻게 작동하는지 알아야합니다. Google에서 많이 검색했지만 잘 설명하는 것을 찾을 수 없습니다.

도움이 되었습니까?

다른 팁

작업은 각 픽셀을 주변 픽셀의 가중 평균으로 대체하며, 여기서 가중치는 행렬에 의해 주어집니다. 다음은 예제 Convolution 매트릭스입니다.

1 1 1
1 1 1
1 1 1

이것이하는 일은 각 픽셀을 해당 픽셀을 중심으로 한 3x3 블록의 평균 값으로 바꾸는 것입니다. 또 다른 것이 있습니다 :

0 0 0
0 1 0
0 0 0

이 매트릭스는 아무것도하지 않고 원래 백을 제공합니다.

무게도 부정적 일 수 있습니다. 이 행렬은 픽셀 옆에 픽셀의 평균값을 빼냅니다.

 0 -1  0
-1  4 -1
 0 -1  0

컨볼 루션 매트릭스를 사용하면 미세 조정 흐름과 날카로운 효과를 수행 할 수 있습니다. 충분히 큰 경우 컨볼 루션 매트릭스를 사용하여 필터의 방향성 및 주파수 응답을 조정할 수 있습니다. 그러나 일반적으로 빠른 멍청한 흐름과 선명도에 사용됩니다.

PHP에 대해 구체적으로는 알지 못하지만 일반적으로 컨볼 루션 매트릭스는 특정 종류의 이미지 처리 효과를 구현하는 데 사용됩니다.

GD의 PHP 매뉴얼에서 가져온 간단한 예제 http://www.php.net/manual/en/function.imageconvolution.php:

다음과 같은 매트릭스가 있다고 가정 해 봅시다.

$M = array(array( 2,  0,  0),
           array( 0, -1,  0),
           array( 0,  0, -1));

해당 컨볼 루션 매트릭스를 이미지에 적용하면 이미지의 (x, y)에 위치한 각 픽셀에 대해 출력의 해당 픽셀이 다음과 같습니다.

$I = $in_image;
$out_image[x,y] = $I[x-1,y-1]*$M[0][0] + $I[x,y-1]*$M[0][1] + $I[x+1,y-1]*$M[0][2]
                + $I[x-1,y]  *$M[1][0] + $I[x,y]  *$M[1][1] + $I[x+1,y]  *$M[1][2]
                + $I[x-1,y+1]*$M[2][0] + $I[x,y+1]*$M[2][1] + $I[x+1,y+1]*$M[2][2];

다시 말해, 컨볼 루션 매트릭스는 각 결과 픽셀을 소스 픽셀과 주변 픽셀의 선형 조합으로 계산하는 데 사용됩니다.

디바이저 매개 변수는 전체 결과를 무언가로 나누는 데 사용되며 (일반적으로 행렬의 모든 값의 합입니다) 오프셋은 최종 출력 값에 상수 항을 추가하는 데 사용됩니다.

Convolution 행렬은 이미지의 픽셀의 각 채널에서 독립적으로 작동합니다.
그래서 당신은 배워야합니다 채널 첫 번째.
그런 다음 Photoshop이 있으면이 매트릭스를 대화식으로 "재생"할 수 있습니다. 메뉴 필터-> 기타-> 사용자 정의로 이동하십시오. 행렬의 중앙 항목은 현재 픽셀을 나타내며, 다른 모든 것은 주변 픽셀을 나타냅니다. 그리고 바닥의 "스케일"값을 잊지 마십시오.
이 매트릭스가 작동하는 방식을 쉽게 이해할 수 있다고 생각합니다.
당신은 이것을 볼 수 있습니다 여기. Convolution 행렬도 설명합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top