gpt4 book ai didi

python - 如何使用 OpenCV 从扫描图像中去除阴影?

转载 作者:太空狗 更新时间:2023-10-29 20:40:25 32 4
gpt4 key购买 nike

我想在使用 OpenCV 进行图像二值化之前去除阴影。我尝试过 Otsu Method 和自适应阈值化,但是对于有大面积阴影区域的图像,这两种方法不会给出好的结果。

有更好的解决方案吗?提前致谢。

[Sample image ] 1

[Sample image ] 2

最佳答案

由于您没有指定任何语言,我假设使用 Python 来说明。

一个不错的起点可能是采用我在 this answer 中展示的方法并将其扩展为使用多个 channel 。

类似的东西

import cv2
import numpy as np

img = cv2.imread('shadows.png', -1)

rgb_planes = cv2.split(img)

result_planes = []
result_norm_planes = []
for plane in rgb_planes:
dilated_img = cv2.dilate(plane, np.ones((7,7), np.uint8))
bg_img = cv2.medianBlur(dilated_img, 21)
diff_img = 255 - cv2.absdiff(plane, bg_img)
norm_img = cv2.normalize(diff_img,None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8UC1)
result_planes.append(diff_img)
result_norm_planes.append(norm_img)

result = cv2.merge(result_planes)
result_norm = cv2.merge(result_norm_planes)

cv2.imwrite('shadows_out.png', result)
cv2.imwrite('shadows_out_norm.png', result_norm)

非规范化结果如下:

enter image description here

归一化后的结果:

enter image description here

关于python - 如何使用 OpenCV 从扫描图像中去除阴影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44752240/

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