2013-06-27 1 views
0

누군가가 날 현명한 열의 정보를 읽고 추출하는 데 도움을 줄 수 있습니까?이미지 행을 현명하고 열 단위로 읽는 알고리즘?

제 노력은 뮤지컬 오점에서 정보를 추출하는 것입니다.

예 음악 구멍이 이미지 :

Image

이미지 용 구멍이 여러 줄로 이루어져, I 데이터가 순차적으로 구멍이 막기 추출 할 필요가있다.

코드 스 니펫과 함께 나를 도울 수 있습니까? 알고리즘을 행 단위로 추출하려면?

답변

2

당신이 무엇을해도 이미지의 정보가 "행/열 현명한"것으로 추출됩니다. 이미지가 픽셀, 즉 작은 정사각형으로 분석된다는 것을 명심하십시오. 그리고이 모든 작은 사각형을 하나씩 읽습니다.

이미지 처리에서 어려운 부분은 특정 기하학적 문제를 다루는 것입니다. 예 : 링크에서 스템브 중 하나와 같이 복잡한 모양을 읽는이 줄부터 추출합니다.

간단한 알고리즘을 제공하는 코드 (C# .NET으로 작성)가 있습니다. 하나의 변수 (readVertically)에 영향을줌으로써 행별로 또는 행별로 열을 읽습니다. 나는 당신을 도울 수있는 좋은 소개라고 생각합니다 :

private void readImage(string imagePath) 
{ 
    Bitmap imageBitMap = (Bitmap)Bitmap.FromFile(imagePath); 

    bool readVertically = true; //This flag tells where the image will be analysed vertically (true) or horizontally (false) 

    int firstVarMax = imageBitMap.Width; //Max. X 
    int secondVarMax = imageBitMap.Height; //Max. Y 
    if (!readVertically) 
    { 
     firstVarMax = imageBitMap.Height; 
     secondVarMax = imageBitMap.Width; 
    } 

    for (int firstVar = 0; firstVar < firstVarMax; ++firstVar) 
    { 
     for (int secondVar = 0; secondVar < secondVarMax; ++secondVar) 
     { 
      //Color of the given pixel. Here you can do all the actions you wish (e.g., writing these pixels to other file) 
      if (readVertically) 
      { 
       Color pixelColor = imageBitMap.GetPixel(firstVar, secondVar); 
      } 
      else 
      { 
       Color pixelColor = imageBitMap.GetPixel(secondVar, firstVar); 
      } 
     } 
    } 
} 
+0

코드를 가져 주셔서 대단히 감사합니다. 그것은 코드를 수정하는 데 도움이되었습니다. 'byte pixel = pixelColor.B; ' – hirosht

+1

내가 원하는 것을 개발하는 데 도움이되었음을 기쁘게 생각합니다. – varocarbas

관련 문제