Как настроить контраст в OpenCV в C?
Я просто пытаюсь настроить контрастность / яркость в изображении в сером масштабе, чтобы выделить белые на этом изображении с помощью Opencv в C. Как я могу это сделать? есть ли функция, которая делает эту задачу в OpenCV?
оригинальное изображение:
изменен изображения:
спасибо заранее!
2 ответов
Я думаю, что вы можете регулировать контрастность двумя способами:
но когда я попробовал это с вашим изображением, результат был не таким, как вы ожидали. Проверьте это ниже:
2) порог :
здесь я сравнил каждое значение пикселя ввода с произвольным значением (которое я взял 127
). Ниже приведена логика, которая имеет встроенную функцию в opencv. But remember, output is Binary image, not grayscale as you did.
If (input pixel value >= 127):
ouput pixel value = 255
else:
output pixel value = 0
и ниже результат, который я получил:
для этого вы можете использовать пороговая функция или сравнить функции
3) если вы обязаны получить изображение в оттенках серого в качестве вывода, сделайте следующее:
(код находится в OpenCV-Python, но для каждой функции соответствующие функции C доступны в opencv.itseez.com)
for each pixel in image:
if pixel value >= 127: add 'x' to pixel value.
else : subtract 'x' from pixel value.
('x' - произвольное значение.) Таким образом, увеличивается разница между светлыми и темными пикселями.
img = cv2.imread('brain.jpg',0)
bigmask = cv2.compare(img,np.uint8([127]),cv2.CMP_GE)
smallmask = cv2.bitwise_not(bigmask)
x = np.uint8([90])
big = cv2.add(img,x,mask = bigmask)
small = cv2.subtract(img,x,mask = smallmask)
res = cv2.add(big,small)
и ниже получен результат:
вы также можете проверить алгоритм OpenCV CLAHE. Вместо того чтобы выравнивать гистограмму глобально, она разбивает изображение на плитки и выравнивает их локально, а затем сшивает их вместе. Это может дать гораздо лучший результат.
С вашим изображением в OpenCV 3.0.0:
import cv2
inp = cv2.imread('inp.jpg',0)
clahe = cv2.createCLAHE(clipLimit=4.0, tileGridSize=(8,8))
res = clahe.apply(inp)
cv2.imwrite('res.jpg', res)
дает что-то очень приятное
подробнее об этом здесь, хотя это не супер полезный: http://docs.opencv.org/3.1.0/d5/daf/tutorial_py_histogram_equalization.html#gsc.tab=0