在巴西,有一种称为 DNV 的表格(在葡萄牙语中的“Born Alive Declaration”之后)。我在一家巴西政府机构工作,该机构每年从全州每家医院收到超过 50 万份此类药物。
我正在尝试检测复选框字段上的标记。我从“性别”字段开始,其中包含 M(男性)、F(女性)或 I(忽略)的复选框。
我已经能够使用 OpenCV 自信地找到字段和复选框:
我猜有更多暗像素的复选框区域是被标记的区域,即使图像质量非常低,它也能在 99% 的时间内工作。
if sum(checkbox1) < sum(checkbox2):
return "M"
else:
return "F"
Run Code Online (Sandbox Code Playgroud)
有时这会失败:一个人会告诉“女性”复选框被标记,但由于sum(checkbox1)是 577,065 和sum(checkbox1)605,880,计算机说它是一个男孩。
我已经尝试使用几种方法和值与形态变换相结合的阈值操作(在几种组合中侵蚀和扩张并使用许多内核形状和大小)并得到这个:
sex_field = cv2.fastNlMeansDenoising(cv2.blur(sex_field, (3, 3)), 30, 30, 15, 50)
_, sex_field = cv2.threshold(~sex_field, 127, 255, 0)
sex_field = ~cv2.morphologyEx(sex_field, cv2.MORPH_CLOSE,
np.ones((3, 3), np.uint8), iterations=3)
Run Code Online (Sandbox Code Playgroud)
问题cv2.fastNlMeansDenoising是贵。是否有更轻量级的算法对这个用例有用?
| 归档时间: |
|
| 查看次数: |
1584 次 |
| 最近记录: |