2013-02-17 4 views
0

Git 저장소의 GPUImage를 사용하여 일부 필터를 이미지에 적용하고 있습니다. 나는 가장자리 감지 필터 (나는 CannyEdgeDetectionFilter를 특별히 사용하고 있음)가 검은 색 바탕에 흰색 가장자리를 칠한다는 것을 알아 차렸다. 누구나 흰색 배경에 검은 색 가장자리를 만드는 방법을 알고 있습니다. (또는 내가 그 라이브러리에서 필요로하는 유일한 필터이기 때문에 헤비급이 아닐 수도 있습니다.흰 가장자리가있는 GPUImage CannyEdgeDetection 필터?

감사합니다. 토니.

답변

0

GPUImageColorInvertFilter는 GPUImage와 함께 제공되며 필요한 것을해야합니다.

0

개렛 (Garrett)이 시사 하듯이 원하는 필터 결과를 얻기 위해 필터의 색상을 반전시킬 수 있습니다. 그러나, 그것은 체인에 또 다른 필터를 도입 할 것이고 속도를 늦출 수 있습니다.

GPUImageSketchFilter를 사용하여 Sobel 가장자리 감지 필터의 역함수를 얻을 수 있습니다. 두 필터 사이의 유일한 차이점은 프래그먼트 셰이더의 두 번째 줄부터 마지막 ​​줄까지입니다. 반환되는 색상은 가장자리 강도 대신 1.0에서 가장자리 강도를 뺀 값입니다.

gl_FragColor = vec4(vec3(1.0 - sumTest * pixelTest), 1.0); 

당신은 복사 할 수 있습니다 : 같은 일이 캐니 에지 검출 여기를 수행 할 수 있습니다

만 당신은 그 쉐이더의 마지막 행에 대해 다음이 하나로 GPUImageWeakPixelInclusionFilter을 교체해야합니다 Canny 가장자리 감지 필터의 모든 코드와 함께이 필터의 나머지 코드를 모두 붙여 넣은 다음 GPUmageWeakPixelInclusionFilter 대신 사용자 정의 필터 클래스를 사용하도록 Canny 필터를 변경하고 사용자 정의 Canny 가장자리 감지기에 직접 필터를 붙여 넣으십시오 이름.

Canny 가장자리 감지 필터 사용에 대한 경고 : 전체 4 단계 Canny 과정을 수행하므로 Sobel 가장자리 감지 필터가 훨씬 많은 메모리를 사용하는 것보다 훨씬 느립니다. thresholded edge detection 필터 중 하나를 사용하여 훨씬 적은 비용으로 Canny 결과를 합리적으로 근사 할 수 있습니다.

+0

감사합니다. @Brad. 비록 속도가 더 빠르지 만 속도에 너무 신경 쓰지 않습니다. 내 목표는 기본적으로 사진을 선 그림으로 렌더링하는 것입니다. 이미지를 캔버스에 물리적으로 페인팅하는 선구자입니다. 나는 임계 값 가장자리 감지 필터 중 하나를 시도했지만 거기에 여분의 소리가 많이 나는 것처럼 보였다. 나는 필터를 사용자 정의하지 않았지만 아이디어를 제공 할 것입니다. 감사! – Tony

+0

@ 토니 (Thony) - 사진의 경우 최대 관심사는 아마도 메모리 사용량 일 것이므로 많은 수의 렌더 패스가 필요한 것이면 골칫거리가 될 수 있습니다. 여는 필터를 사용하여 임계 값의 가장자리 감지에서 일부 잡음을 제거 할 수 있습니다 (또는 닫을 때, 때로는 두 개가 섞여 있음). –

+0

@BradLarson은 videoCam에 임계 가장자리 감지 필터를 적용하는 것이 가능하지만 흑백 대신 가장자리와 배경에 내 자신의 RGB를 지정할 수 있어야합니까? – Yadnesh

관련 문제