gpt4 book ai didi

image - 如何提高图像的强度对比度?

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:07 24 4
gpt4 key购买 nike

我有一张图像,其背景强度对比度非常低。两个箭头之间的第一行是低对比度的行。第二行没问题。请看下图。

enter image description here

原图如下图

enter image description here

我使用以下方法来增强灰度对比度。首先将图像更改为灰色并使用以下方法。

cv::Mat temp;
for (int i = 0; i < 1; i++) // number of iterations has to be adjusted
{
cv::threshold(image, temp, 0, 255, CV_THRESH_BINARY| CV_THRESH_OTSU);//
cv::bitwise_and(image, temp, image);
cv::normalize(image, image, 0, 255, cv::NORM_MINMAX, -1, temp);
}

我的图像在灰度中的对比度稍微高一点,但是在灰度或彩色中有比这更好的方法吗?

enter image description here

最佳答案

我会看看 histogram equalization ,这可能会满足您的需求。基本(全局)均衡甚至 adaptive可以产生很好的效果。可能需要针对自适应方法调整参数(目前使用文档示例中的参数)。

我得到(全局均衡 - 左;自适应均衡 - 右):

enter image description here

均衡完成后,您可能会更幸运地设置阈值(尽管您的示例对比度非常低):

enter image description here

从那里,您可以使用标准轮廓/形状匹配等来尝试找到第一条黑线的位置。

来自

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

raw_img_load = cv2.imread('H1o8X.png')

imgr = cv2.cvtColor(raw_img_load,cv2.COLOR_BGR2GRAY)
clahe = cv2.createCLAHE(clipLimit=30.0, tileGridSize=(8,8))
imgray_ad = clahe.apply(imgr)#adaptive
imgray = cv2.equalizeHist(imgr)#global
res = np.hstack((imgray,imgray_ad))#so we can plot together

plt.imshow(res,cmap='gray')
plt.show()

ret,thresh = cv2.threshold(imgray_ad,150,255,type=cv2.THRESH_BINARY+cv2.THRESH_OTSU)
plt.imshow(thresh,cmap='gray')
plt.show()

编辑:根据@Doleron 的回答,对于这个特定问题,我建议使用fastNlMeansDenoising(在任何直方图均衡之前应用)。但是请注意,对于高分辨率图像/时间敏感图像处理,它可能是一个缓慢的函数。

关于image - 如何提高图像的强度对比度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47523534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com