2012-05-12 1 views
10

스캔 한 이미지가 있지만 화면에 흰색 종이가 아닙니다. 백그라운드를 더 밝게 만들기 위해 계약/밝기를 동일하게 만드는 방법이 있습니까?opencv를 사용하여 이미지의 대비 및 밝기를 어떻게 조정합니까?

내가 EmguCv에서 제안 된 Image._EqualizeHist 기능을 시도했습니다

업데이트 :

string file = @"IMG_20120512_055533.jpg"; 
Image<Bgr, byte> originalColour = new Image<Bgr, byte>(file); 

Image<Bgr, byte> improved = originalColour.Clone(); 
improved._EqualizeHist(); 

을하지만 더 나쁜 결과를 (첫번째 회색 스케일도 때) 얻을 :

다른 매개 변수가 누락 되었습니까?

+1

스택 오버플로는 무료 이미지 호스팅 서비스를 제공합니다. 도구 모음에서 이미지 버튼을 클릭하고 웹의 다른 곳에서 컴퓨터에 로컬로 호스팅되는 이미지를 가리 키기 만하면됩니다. 이렇게하면 실제로 이미지 복사본을 업로드하고 미러링하므로 외부 소스가 다운 된 경우에도 항상 사용할 수 있습니다. 게시 한 이미지를 이미 전환했지만 미래를 염두에 두어야합니다. –

+0

왜 그런지 모르겠지만 평등 주의자는 그런 경우에 더 나쁜 결과를 낳습니다. 나도 때때로이 문제가 생깁니다 .. –

답변

18

나는 여기에 몇 가지 기술을 설명했다 : How can I adjust contrast in OpenCV in C?

그것을 확인하시기 바랍니다.

임계 화 바이너리 이미지를 제공합니다 : 아래는 내가 이미지

1) 임계 화에 마지막으로 두 가지 방법을 시도 할 때 내가 가진 결과입니다.

enter image description here

이 추가 :

Morphological closing은 또한 당신의 경우

을 좋은 일이 당신이 그레이 스케일 이미지가를 필요한 경우 threshold function

2) 을 적용 할 수 원하는 경우

img = cv2.imread('home.jpg',0) kernel1 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5)) close = cv2.morphologyEx(gray,cv2.MORPH_CLOSE,kernel1) div = np.float32(gray)/(close) res = np.uint8(cv2.normalize(div,div,0,255,cv2.NORM_MINMAX)) 

(파이썬 API 코드) 아래

결과 : 나는 AdaptiveThreshold을 사용하는 것이 좋습니다

enter image description here

+1

+1 나는 당신의 대답을 정말 좋아합니다. – karlphillip

+1

감사합니다 !!!!! –

+0

@AbidRahmanK : 나와 코드를 공유해 주시겠습니까? –

5

equalizeHist라고합니다. 나는 그 이름을 에구에서 알지 못하지만, 결과는 정확히 당신이 필요로하는 것 - 더 밝은 배경과 더 어두운 텍스트 -이어야합니다.

는 단순히 캐니을 적용 할 수있다 (이미지 강조 기법 매우 다른)만을 에지를 추출 EDIT. 시작을 위해 두 개의 임계 값을 20과 60으로 선택하고 가장자리 이미지가 잘 보일 때까지 이들 사이에 3 : 1의 비율로 유지 (또는 감소)하십시오.

5

. 이미지의 모든 픽셀에 대해 로컬 인접 임계 값을 수행하여 작동합니다 (그라데이션 배경이있는 경우 이미지에서보다 약간 더 강합니다). blockSize 매개 변수는 인접 지역의 크기이며 처리 된 픽셀 값은 평균 인접 값에서 param1을 뺀 값보다 커야합니다.

import cv 
im = cv.LoadImage("9jU1Um.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE) 
cv.AdaptiveThreshold(im, im, 255, cv.CV_ADAPTIVE_THRESH_MEAN_C, 
            cv.CV_THRESH_BINARY, blockSize=31, param1=15) 
cv.ShowImage('image', im) 
cv.WaitKey(0) 
-1

어느 쪽이든, 당신은 또한 모든 각 픽셀을 확인할 수 있습니다 여기에

enter image description here

(이것은 C로 변환하는 것은 매우 쉬워야한다) 파이썬에서 작업을 수행하는 방법이다. 정의 된 값보다 작 으면 0으로 설정하고 정의 값을 초과하면 255로 설정하십시오.