I've got an image that I've scanned, but the white paper is not white on the screen. Is there a way to equalize the contract/brightness to make the background whiter?
Update
I've tried the suggested Image._EqualizeHist function from EmguCv:
string file = @"IMG_20120512_055533.jpg";
Image<Bgr, byte> originalColour = new Image<Bgr, byte>(file);
Image<Bgr, byte> improved = originalColour.Clone();
improved._EqualizeHist();
But get an even worse result (also when first gray scaled):
Am I missing other parameters?
I have discussed some techniques here : How can I adjust contrast in OpenCV in C?
Please check it. Below are the results i got when i tried last two methods on your image
1) Thresholding:
Thresholding gives a binary image. If that is what you want you can apply threshold function
2) If grayscale image needed :
Additional :
Morphological closing
also work good in your case
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))
(code in Python API)
Result Below: