2014-07-21 1 views
0

임계 값 이미지와 원본 이미지의 차이를 얻으려고합니다. 둘 다 회색 음영입니다. 내 논리는 임계 값 이미지와 원본 이미지간에 차이가 없다면 임계 값이 없다는 것을 의미합니다.두 이미지 간의 차이에 대한 부울 값 가져 오기

차이점이 없으면 카메라로 만든 사용자 인터페이스에 "0"을 출력하고 차이점이있을 경우 "0"을 출력합니다. "1"을 출력합니다.

AbsDiff 메서드를 사용하여 시도해 보았지만 MatchTemplate 메서드를 사용해 보았지만 둘 다 작동하지 않았고 아이디어가 없습니다.

나는 인터넷을 수색했으며 많은 도움이 될만한 것을 찾지 못했습니다. 누구든지 전에 이런 짓을 한 적이 있습니까? 누구든지 내가해야 할 것에 관해서 어떤 조언을 가지고 있습니까?

+0

RGB 값의 차이점을 찾으십니까? 일부 줄 바꿈이 게시물에 도움이됩니다. – JDong

+0

그들은 그레이 스케일 이미지입니다. 나는 @JDong을 지정해야한다고 생각합니다. – nboch12

답변

1

필자는 emgu CV에 익숙하지 않지만이 유형의 비교를 수행하기 위해 이미지의 각 픽셀을 반복하고 두 이미지간에 다른 이미지가 있으면 '같지 않음'을 반환합니다.

(편집 : 논리적으로 이것은 이미지의 각 픽셀을 반복하고 있습니다. 효율성은 높이기 위해 두 개의 이미지 버퍼 (즉, 크기 너비 * 높이 * BytesPerPixel)를 얻고 memcmp을 사용하십시오. memcmp은 두 개의 대형 버퍼를 비교할 때 얻을 수있는 최적의 솔루션이라고 생각하면 합리적입니다.

또한 특성화하지 않을 것입니다. 이것은 '차이에 대한 수치'를 얻는 것입니다. 당신이 그것을 좋아할 때, 저는 숫자 값의 범위를 생각합니다 : 0은 그들이 동등 함을 의미하고, 작은 숫자는 약간 다름을 의미하며, 큰 숫자는 매우 다른 것을 의미합니다. 찾고있는 것이 모두 0 또는 1이면 숫자 값이 아닌 부울입니다. 부울 값 'equal'/ 'equal equal'을 얻는 것은 두 이미지가 얼마나 다른지를 정량화하는 것보다 훨씬 쉽습니다.

+0

픽셀 단위로 작업하는 것을 피하려고했는데, 느리게 프레임 속도를 느리게하지 않습니까? – nboch12

+0

프로젝트에 대해 많이 알려주지 않았으므로 확실하게 말할 수는 없습니다. 어떤 방법을 선택하든 원본 이미지와 대상 이미지의 모든 단일 픽셀을 반복해야합니다. 저전력 CPU를 사용하고 있다면, 내가 설명한 것처럼 CPU를 사용하여 전용 비디오 하드웨어를 가지고 있다면이 솔루션을 오프로드 할 수있는 최상의 솔루션이 아닐 수도 있습니다. 즉, 먼저이 솔루션을 구현하고 작동 시키십시오. 속도는 매우 빠르며 더 이상 갈 필요가 없습니다. –

+0

나는 모스 부호를 깜빡 거리는 깜박이는 LED를 탐지하려고 시도하고있다. 그리고 그 모스 부호를 해독하여 사용자 인터페이스에 출력하므로 누구나 모스를 알지 않아도 사용할 수있다. 프레임 속도는 느린 프레임 속도이므로 느린 메시지를 릴레이해야하기 때문에 문제가됩니다. 도와 주셔서 대단히 감사합니다. 제안한대로 할 것이고 픽셀 단위로 검토하고 어떻게 진행되는지 확인할 것입니다. – nboch12

1

내 emguCV 지식은 광범위하지 않지만 차이점 마스크를 만들려면 emguCV의 Cmp 방법을 사용하고 실제로 차이가 있는지 확인하려면 CountNonzero을 사용해 보았습니다.

관련 문제