2011-07-06 28 views
3

C# (AForge 사용)에서 webcamera를 사용하고 있습니다. 또한 기본 배경이 있습니다. 현재 이미지와 배경의 차이점을 추출하고 기본 배경에없는 개체 만 포함하는 새 이미지를 만들어야합니다. 예를 들어 웹 카메라 앞에서 손을 움직이면 그 손만을 출력해야합니다 (나머지 백 그라운드는 흰색). 픽셀을 픽셀 단위로 비교하면 잡음이 많기 때문에 추한 결과를 얻습니다. 차이에 대한 임계 값을 사용하여 시도했지만 결과는 여전히 매우 나쁩니다. 아마 거기에 몇 가지 필터 또는 알려진 알고리즘이 어떻게 생각합니까? 어떤 도움이라도 대단히 감사 할 것입니다.C에서 두 이미지의 차이 추출 #

+0

Kinect SDK를 사용할 수 없습니까? http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/ 어쩌면 적어도이 문제를 해결하는 방법을 알 수 있습니다. –

+0

Kinect 장치 용 SDK가 아닙니까? 적어도 그것은 SDK 설명에서 그렇게 말합니다. 단일 웹캠 만 사용하고 있습니다. 사실, CustomFrameDifferenceDetector 클래스라고하는 AForge에서 필터를 찾았지만 사용 방법에 대한 충분한 설명서가 없습니다. 적어도 나는 아직 그것을 찾을 수 없었다. –

+0

확실하지 않습니다. 그냥 손 움직임을 추적하고 싶을 때 생각했습니다. :) –

답변

0

항상 두 이미지의 회색 명암 이미지를 비교해 볼 수 있습니다. 웹캠이 고정되어 있다고 가정하면 (그렇지 않은 경우 픽셀 이동을 더 많이 조정해야하기 때문에) 이미지를 회색조로 변환하고 이미지가 다를 것으로 생각되는 임계 값을 가질 수 있습니다.

int threshold = 30; 
PixAvg1[i,j] = (Pix1.R + Pix1.G + Pix1.B)/3 
PixAvg2[i,j] = (Pix2.R + Pix2.G + Pix2.B)/3 
if (Math.Abs(PixAvg1[i,j] - PixAvg2[i,j+1])>threshold) 
    difPixel == true; 

임계 값은 원하는 픽셀 사이의 허용치입니다. 그 값은 이미지의 밝기의 차이에서 올 수 있습니다.

커버하는 일부 픽셀이 일치하기 때문에 선명하지 않은 결과를 얻지 만 원하는 경우 추가 스캔을 실행하고 일부 종류의 영역 채우기를 수행 할 수 있습니다.