2010-05-14 2 views
1

.net에서 이미지 비교를 위해 코드 또는 알고리즘 (패턴 인식 사용)을 공유 할 수 있습니까?.net에서 이미지 비교를위한 패턴 인식

다른 해상도와 질감의 두 이미지를 비교해야하며 차이점을 찾아야합니다. 지금은 C#을

// Load the images. 
Bitmap bm1 = (Bitmap) (Image.FromFile(txtFile1.Text)); 
Bitmap bm2 = (Bitmap) (Image.FromFile(txtFile2.Text)); 

// Make a difference image. 
int wid = Math.Min(bm1.Width, bm2.Width); 
int hgt = Math.Min(bm1.Height, bm2.Height); 
Bitmap bm3 = new Bitmap(wid, hgt); 

// Create the difference image. 
bool are_identical = true; 
int r1; 
int g1; 
int b1; 
int r2; 
int g2; 
int b2; 
int r3; 
int g3; 
int b3; 
Color eq_color = Color.Transparent; 
Color ne_color = Color.Transparent; 
for (int x = 0; x <= wid - 1; x++) 
{ 
    for (int y = 0; y <= hgt - 1; y++) 
    { 
     if (bm1.GetPixel(x, y).Equals(bm2.GetPixel(x, y))) 
     { 
      bm3.SetPixel(x, y, eq_color); 
     } 
     else 
     { 
      bm1.SetPixel(x, y, ne_color); 
      are_identical = false; 
     } 
    } 
} 

// Display the result. 
picResult.Image = bm1; 

    Bitmap Logo = new Bitmap(picResult.Image); 
    Logo.MakeTransparent(Logo.GetPixel(1, 1)); 
    picResult.Image = (Image)Logo; 

//this.Cursor = Cursors.Default; 
if ((bm1.Width != bm2.Width) || (bm1.Height != bm2.Height)) 
{ 
    are_identical = false; 
} 
if (are_identical) 
{ 
    MessageBox.Show("The images are identical"); 
} 
else 
{ 
    MessageBox.Show("The images are different"); 
} 

//bm1.Dispose() 
// bm2.Dispose() 

를 사용하여 두 이미지의 차이를 확인하는 코드를했지만 두 이미지가 같은 해상도이며, 일부 그림자 size.if 하나 개의 이미지에있다 (하지만이 개 이미지는 동일) 경우이 비교 그것은 이미지 간의 차이를 보여줍니다 ... 그래서 패턴 인식을 사용하여 비교하려고합니다.

+0

"Hurray"라고 외치는 소리를 내며 다른 회사가 여전히 고심하고있는 메가 이미지 검색 엔진을 만드는 경우가 있습니다. – nkrkv

답변

0

nailxx가 말했듯이 "100 % 작동하는 무료 코드"또는 그 밖의 것이 없습니다. 몇 년 전에 저는 "얼굴 인식"앱을 구현하는 것을 도왔습니다. 우리가 사용한 것들 중 하나는 "Locale binary pattern"이었습니다. 그다지 쉽지는 않지만 꽤 좋은 결과를주었습니다. 여기에 대한 논문 찾기 : Local binary patterns 편집 : 나는 요즘 사용했던 종이를 찾을 수 없으며, LBP 자체에서 더 짧고 고정되어 있으며 텍스처와 함께 사용하는 방법이 아니라는 것을 알고 있습니다. .

0

귀하의 요청은 실제로는 과학적인 (엔지니어링조차도 안됨) 작업입니다. 기본 명백한 알고리즘은 다음

  1. 은 어떻게 든 모두 비교 이미지에있는 모든 개체를 선택합니다. 이 부분은 비교적 간단하며 여러 가지 방법으로 해결할 수 있습니다.

  2. 모든 개체를 비교하십시오. 이 부분은 과학자들이 이동, 회전, 크기 조정 등을 할 수 있다는 사실을 고려한 것입니다. :) 그러나 이것은 고정 된 수의 개체를 인식해야하는 경우에 해결할 수 있습니다. '원', '삼각형', '직사각형', '선'과 같습니다.