2012-03-28 2 views
1

OCR 기반 iPhone 응용 프로그램에서 회색 음영 이미지를 가져 와서 흑백으로 임계 값을 지정하여 텍스트를 찾습니다 (opencv 사용). 흰색 배경에 검정색 텍스트가있는 이미지의 경우이 기능을 사용할 수 있습니다. 이미지가 검정색 바탕에 흰색 텍스트 인 경우 역 임계 값으로 자동 전환하는 문제가 있습니다. 어두운 배경에서 가벼운 텍스트인지 아니면 그 반대인지를 결정하기 위해 이미지를 검사하기 위해 널리 사용되는 알고리즘이 있습니까? 누구나 깨끗한 작업 방법을 추천 할 수 있습니까? 아이폰 카메라의 그레이 스케일 이미지로만 작업한다는 것을 명심하십시오.이미지 픽셀 강도를 확인하는 방법

고마워요.

+1

검은 색 비율의 흰색 픽셀 백분율을 비교하십시오. –

+0

그레이 스케일 이미지를 사용하고 있으므로 순수한 검정색과 순수한 검정색을 비교할 수 없습니다. 아래에 내 솔루션을 게시했습니다. –

답변

1

나는이 시점에서 그레이 스케일 IplImage을 취급하고 있기 때문에, 나는 할 수 없었다 검정 또는 흰색 픽셀 수를 계산하지만 주어진 "밝기"임계 값보다 높은 픽셀 수를 계산해야합니다. 난 그냥 덜 비싸지 만 여전히 나에게 충분한 결정을 내리는 데 충분한 정보를 제공하므로 국경 픽셀을 사용했습니다.

IplImage *image; 
int sum = 0; // Number of light pixels 
int threshold = 135; // Light/Dark intensity threshold 

/* Count number of light pixels at border of image. Must convert to unsigned char type to make range 0-255. */ 
// Check every other pixel of top and bottom 
for (int i=0; i<(image->width); i+=2) { 
    if ((unsigned char)image->imageData[i] >= threshold) { // Check top 
     sum++; 
    } 
    if ((unsigned char)image->imageData[(image->width)*(image->height) 
         - image->width + i] >= threshold) { // Check bottom 
     sum++; 
    } 
} 

//Check every other pixel of left and right Sides 
for (int i=0; i<(image->height); i+=2) { 
    if ((unsigned char)image->imageData[i*(image->width)] >= threshold) { // Check left 
     sum++; 
    } 
    if ((unsigned char)image->imageData[i*(image->width) + (image->width) - 1] >= threshold) { // Check right 
     sum++; 
    } 
} 

// If more than half of the border pixels are light, use inverse threshold to find dark characters 
if (sum > ((image->width/2) + (image->height/2))) { 
    // Use inverse binary threshold because background is light 
} 
else { 
    // Use standard binary threshold because background is dark 
} 
+0

조명이나 노출이 변함에 따라 문제가되는 고정 임계 값을 여전히 사용하고 있습니다. –

+0

아니요 밝거나 어두운 배경인지 확인하는 것입니다. 실제 이진 임계 값은 적응 형 이진 임계 값에 대해 Otsu 메서드를 구현하는 별도의 메서드에서 수행됩니다. –

+0

"이미지"는 무엇입니까? UIImage가 나타나지 않습니다 ....? – xaphod

0

모든 픽셀을 살펴보고 밝거나 어둡지 않은지 확인합니다. 어두운 픽셀 수가 밝은 픽셀보다 클 경우 그림을 반전해야합니다.

밝기 따지기하는 방법은 여기를 봐 : Detect black pixel in image iOS

을 그리고 그 반전있는 UIImage를 그리는 방법은 다음과 같습니다

[imyImage drawInRect:theImageRect blendMode:kCGBlendModeDifference alpha:1.0]; 
관련 문제