如何在同一图像中美白背景和消隐网格 [英] How to whiten background and blaken grid in a same image

查看:268
本文介绍了如何在同一图像中美白背景和消隐网格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的图像。我想使用HoughLine检测但图像太暗而无法识别线条。有没有办法可以使背景变白并使网格变黑?我可以应用openCV或python中的算法吗?谢谢

I have an image like this. I wan to use HoughLine detection but the image is too dark to recognize the line. Is there a way that can whiten the background and blacken the grid? Is there any algorithms in openCV or python that I can apply? Thank you

推荐答案

我首先尝试扩大图像,然后将它放在中间,这样我就得到了背景。使用原始的灰色图像来分配背景,我得到了前景(即网格)。然后做一些其他步骤,我得到这样的结果。

I try to dilate the image first, then medianBlur it, so I get the background. Use the original gray image to sub the background, I get the frontground ( that is the grids). Then do some other steps, I get the result like this.

代码如下:

#!/usr/bin/python3
# 2017.10.04 19:37:43 CST

filename = "data/paper.png"
img = cv2.imread(filename)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

## do morph-dilate-op
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5))
dilated = cv2.morphologyEx(gray, cv2.MORPH_DILATE, kernel)
diff1 = 255 - cv2.subtract(dilated, gray)

## do medianBlur
median = cv2.medianBlur(dilated, 15)
diff2 = 255 - cv2.subtract(median, gray)

## do normalize 
normed = cv2.normalize(diff2,None, 0, 255, cv2.NORM_MINMAX )

## save the result 
dst = np.hstack((gray, normed))
cv2.imwrite("result_paper1.png", dst)
res = np.hstack((gray,dilated, diff1,  median, diff2, normed))
cv2.imwrite("result_paper2.png", res)

这篇关于如何在同一图像中美白背景和消隐网格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆