我有一个漫画页面的灰度图像,其中包含几个对话气泡(=语音气球等),这些气泡是白色背景的封闭区域和内部包含文本的纯黑色边框,即类似的东西:
我想检测这些区域并创建一个掩码(二进制就可以),它将覆盖对话气泡的所有内部区域,即:
相同的图像,掩盖覆盖,完全清晰:
所以,我对算法的基本思想是这样的:
检测文本的位置 - 在每个气泡中至少生成一个像素.稍微扩张这些区域并应用阈值以获得更好的起跑地; 我做过这部分:
使用泛光填充或某种图形遍历,从在步骤1中检测为像素内部气泡的每个白色像素开始,但是处理初始图像,淹没白色像素(应该在气泡内)并停止暗像素(应该是边框或文本).
使用某种binary_closing操作来移除气泡内的暗区(即与文本对应的区域).这部分工作正常.
到目前为止,第1步和第3步都有效,但我正在努力完成第2步.我目前正在使用scikit-image,我没有看到任何现成的算法,如洪水填充.显然,我可以使用像广度优先遍历这样的微不足道的东西,基本上就像这里建议的那样,但是在Python中完成时它真的很慢.我怀疑在ndimage或scikit-image 中复杂的形态学内容如binary_erosion或generate_binary_structure,但我很难理解所有形态学术语,基本上我如何用它来实现这样的自定义泛滥填充(即从第1步开始,在原始图像上工作图像并产生输出以分离输出图像).
我愿意接受任何建议,包括OpenCV等建议.