이미지에 빨간색 영역을 인식하는 작업이 있으며 최대 정확도가 필요합니다. 그러나 원본 이미지의 품질은 상당히 나쁩니다. cvThreshold를 사용하여 감지 된 빨간색 영역이있는 마스크의 노이즈를 최소화하려고합니다. 불행히도 예상되는 효과는 없습니다. 회색 유물이 유지됩니다. 여기에 같은 시간에 C# EmguCV/OpenCV "cvThreshold"비정상적인 동작 - 임계 값 결과가 없습니다.
//Converting from Bgr to Hsv
Image<Hsv, Byte> hsvimg = markedOrigRecImg.Convert<Hsv, Byte>();
Image<Gray, Byte>[] channels = hsvimg.Split();
Image<Gray, Byte> hue = channels[0];
Image<Gray, Byte> saturation = channels[1];
Image<Gray, Byte> value = channels[2];
Image<Gray, Byte> hueFilter = hue.InRange(new Gray(0), new Gray(30));
Image<Gray, Byte> satFilter = saturation.InRange(new Gray(100), new Gray(255));
Image<Gray, Byte> valFilter = value.InRange(new Gray(50), new Gray(255));
//Mask contains gray artifacts
Image<Gray,Byte> mask = (hueFilter.And(satFilter)).And(valFilter);
//Gray artifacts stays even if threshold (the third param.) value is 0...
CvInvoke.cvThreshold(mask, mask, 100, 255, THRESH.CV_THRESH_BINARY);
mask.Save("D:/img.jpg");
는 그것을 잘 작동합니다 - 저장된 이미지는 순수한 백색 :
#region test
Image<Gray,Byte> some = new Image<Gray, byte>(mask.Size);
some.SetValue(120);
CvInvoke.cvThreshold(some, some, 100, 255, THRESH.CV_THRESH_BINARY);
some.Save("D:/some.jpg");
#endregion
마스크 임계 예를 들어 이전 : http://dl.dropbox.com/u/52502108/output.jpg
: http://dl.dropbox.com/u/52502108/input.jpg마스크 임계 값 예 후
미리 감사드립니다. 콘스탄틴 B.
어딘가에 이미지를 게시 할 수 있습니까? – sinelaw
업로드 됨. 위의 링크를 참조하십시오. – user1582682
이미지가 동일하고 아무것도 빨간색입니다. 입력 이미지로 수행 할 작업을 더 잘 설명 할 수 있습니까? – sinelaw