, 예를 들어 나는 사각형이 프로그램은 X/Y-좌표이미지 테두리를 프로그래밍 방식으로 감지하는 방법은 무엇입니까? 나는 이미지의 가장자리를 감지하는 프로그램을 찾고 있어요
예 감지 :에서
alt text http://img709.imageshack.us/img709/1341/22444641.png
, 예를 들어 나는 사각형이 프로그램은 X/Y-좌표이미지 테두리를 프로그래밍 방식으로 감지하는 방법은 무엇입니까? 나는 이미지의 가장자리를 감지하는 프로그램을 찾고 있어요
예 감지 :에서
alt text http://img709.imageshack.us/img709/1341/22444641.png
을 그것의 소리, 당신은 단지 blob extraction algorithm을 원한다. 그 후, x/y에 대한 최저/최고 값은 모서리의 좌표를 제공합니다.
네,하지만 먼저 개체의 내부 픽셀을 개체의 테두리 픽셀과 구별하기 위해 경계 검출기를 적용해야한다고 생각합니다. – Andres
내 게시물 이후에 작성된 댓글로 판단하면 위와 같은 이미지가 있고 채워진 다각형의 모서리 좌표가 필요합니다. 내 다음 질문은 항상 볼록 할 것 같습니까? –
경계를 사용하여 수행 할 작업에 따라 영역의 가장자리 값만 확인하려는 경우 Connected Components Region이라는 알고리즘을 사용하십시오. 알고리즘을 사용하기 전에 지역의 가치를 알아야합니다. 이것은 국경을 돌아 다니며 바깥 지역을 모을 것입니다. 외부 선 만 감지하려고하는 경우 이미지의 그라디언트가 나타나며 선이있는 위치가 표시됩니다. 이렇게하려면 Prewitt, Sobel 등과 같은 가장자리 감지 필터로 이미지를 콘볼 루션하십시오.
Opencv과 같은 이미지 처리 라이브러리를 사용할 수 있습니다. 어떤 C + + 또는 파이썬 있습니다. 캐니 에지 감지와 같은 가장자리 감지 기능을 찾아야합니다. 물론 이것은 이미지 처리에 대한 다이빙을 필요로합니다. 예제 이미지는 감지하기 쉽고, 이미지가 얼마나 시끄럽고 다양합니까?
shape recognition algorithm은 어떤 종류의 단색 테두리를 제공하면 도움이 될 수 있으며 배경색은 단색입니다.
매우 간단한 가장자리 감지기입니다. 바이너리 이미지에 적합합니다. 그것은 단지 image.pos [1,1] = image.pos [1,1] - image.pos [1,2]와 같은 수평 픽셀과 수직 픽셀의 차이를 계산하고 수직 차이에 대해서도 동일합니다. 값 0..255 범위에서 정규화해야한다는 점에 유의하십시오.
하지만! 프로그램이 필요하면 Adobe Photoshop을 사용하십시오.
코드는 C#으로 작성되었습니다. 백분율 클래스
static public BitmapData SetImageToProcess(Bitmap image)
{
if (image != null)
return image.LockBits(
new Rectangle(0, 0, image.Width, image.Height),
ImageLockMode.ReadWrite,
image.PixelFormat);
return null;
}
에서
public void SimpleEdgeDetection()
{
BitmapData data = Util.SetImageToProcess(image);
if (image.PixelFormat != PixelFormat.Format8bppIndexed)
return;
unsafe
{
byte* ptr1 = (byte *)data.Scan0;
byte* ptr2;
int offset = data.Stride - data.Width;
int height = data.Height - 1;
int px;
for (int y = 0; y < height; y++)
{
ptr2 = (byte*)ptr1 + data.Stride;
for (int x = 0; x < data.Width; x++, ptr1++, ptr2++)
{
px = Math.Abs(ptr1[0] - ptr1[1]) + Math.Abs(ptr1[0] - ptr2[0]);
if (px > Util.MaxGrayLevel) px = Util.MaxGrayLevel;
ptr1[0] = (byte)px;
}
ptr1 += offset;
}
}
image.UnlockBits(data);
}
방법 당신은 너무 일반적으로하지 않고 더 많은 정보 요청 더 설명 또는 알고리즘을 필요로합니다.
경계! = xy 좌표. 귀하의 질문을 명확히하십시오. 또한 어떤 언어 및 플랫폼에 대해 질문하십니까? –
SVG와 비슷하지만, 그래픽 요소의 외부 좌표/경계를 갖고 싶습니다. ! [alt text] [1] [1] : http://img31.imageshack.us/img31/5449/76190433.png – user237060
참고 : 코드를 원하지 않아 더 많은 프로그램을 원합니다! – user237060