gpt4 book ai didi

python - OpenCV:打破组件之间的单像素桥

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

我想对单词图像进行阈值处理并将其拆分为连接的组件(字母)。由于先前的透视变换或分辨率不佳,可能会在字母之间形成单个像素桥。

组件可能相对较薄,这就是为什么简单的腐 eclipse +膨胀可能会破坏它们。

是否有一种简单的方法可以侵 eclipse 单个像素桥,而无需为桥创建侵 eclipse 内核的所有可能排列?

例1:单词是Pflegt,字母Pfl相连

enter image description here enter image description here

示例 2:这更严重,CCL 似乎也将甚至不接触面部的区域标记为相同(尽管是 4-connected)。

enter image description here enter image description here

来源:

# Label image
ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
connectivity = 4
num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(thresh, connectivity, cv2.CV_32S)

# Map component labels to hue val
label_hue = np.uint8(179 * labels / np.max(labels))
blank_ch = 255 * np.ones_like(label_hue)
labeled_img = cv2.merge([label_hue, blank_ch, blank_ch])

# cvt to BGR for display
labeled_img = cv2.cvtColor(labeled_img, cv2.COLOR_HSV2BGR)

最佳答案

因此,实现起来有点棘手,尤其是更严重的图像,但根据我处理此类像素化图像的经验,unsharp mask总是有帮助。所以这就是我的尝试:

import numpy as np
import cv2

image = cv2.imread("U:/SO/cca.png")
imgray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Unsharp mask here
gaussian = cv2.GaussianBlur(imgray, (7, 7), 10.0)
unsharp_image = cv2.addWeighted(imgray, 2.5, gaussian, -1.5, 0, imgray)
cv2.imwrite("cca_2_unsharp.jpg", unsharp_image)

unsharp_image = cv2.erode(unsharp_image, np.ones((3,3), np.uint8), iterations=1)

ret,thresh = cv2.threshold(unsharp_image, 127, 255, cv2.THRESH_BINARY +
cv2.THRESH_OTSU)
cv2.imwrite("cca_2_thresh.jpg", thresh)

connectivity = 4
num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(thresh,
connectivity, cv2.CV_32S)


# Map component labels to hue val
label_hue = np.uint8(179 * labels / np.max(labels))
blank_ch = 255 * np.ones_like(label_hue)
labeled_img = cv2.merge([label_hue, blank_ch, blank_ch])

# cvt to BGR for display
labeled_img = cv2.cvtColor(labeled_img, cv2.COLOR_HSV2BGR)
cv2.imwrite("cca_2_res.jpg", labeled_img)

结果:

Result 1

Result 2

如您所见,更严重 图像的效果仍然相对不佳。在我的试验中,我不需要对第一张图像进行侵 eclipse ,但它不会对结果产生太大影响。我将尝试其他一些方法并更新我的答案。让我知道你的想法!

关于python - OpenCV:打破组件之间的单像素桥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53758619/

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