首页 > 解决方案 > 如何用OpenCV增强图片中的局部亮度

问题描述

我是 python 新手,我正在做一些研究,以通过 python 自动从 Bite-Wing 射线照相中找到问题。

我这里有一张照片。 在此处输入图像描述

我想增强图片右半部分的亮度,因此我可以得到一个完整的二值化图像。

但是网上的解决方案只能增强图片的对比度。

这是我的代码,我想知道我可以改进什么?也许我可以改变阈值?

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('299.jpg',0)
img = cv2.equalizeHist(img)

clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(img)
res = np.hstack((img, cl1))

img = cl1

ret1,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)

ret2,th2 = cv2.threshold(img,100,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)


blur = cv2.GaussianBlur(img,(5,5),0)
ret3,th3 = cv2.threshold(blur,100,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)


images = [img, 0, th1,
          img, 0, th2,
          blur, 0, th3]
titles = ['Original Noisy Image','Histogram','Global Thresholding (v=127)',
          'Original Noisy Image','Histogram',"Otsu's Thresholding",
          'Gaussian filtered Image','Histogram',"Otsu's Thresholding"]

for i in range(3):
    plt.subplot(3,3,i*3+1),plt.imshow(images[i*3],'gray')
    plt.title(titles[i*3]), plt.xticks([]), plt.yticks([])
    plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256)
    plt.title(titles[i*3+1]), plt.xticks([]), plt.yticks([])
    plt.subplot(3,3,i*3+3),plt.imshow(images[i*3+2],'gray')
    plt.title(titles[i*3+2]), plt.xticks([]), plt.yticks([])
plt.show()

标签: python-3.xopencv

解决方案


推荐阅读