I would like to extract logos from golf balls for further image processing. I have already tried different methods.

  1. 我想使用图像的灰度值来定位它们的位置,然后将其剪切出来.由于有许多不同的徽标和图像周围的黑色边框,这种方法不幸失败了.
  2. 作为我的下一个方法,我认为我首先删除黑色背景,然后重复从1开始的过程.但也没有成功,因为在左下角有一个黑色的阴影,这也是用灰度方法识别的"标志".在外面进一步覆盖边界不是一个解决方案,因为否则边界上的标志也会被砍掉,或者只有一半会被检测到.
  3. 我使用了Open CV库的边缘检测算法Canny.检测看起来很有希望,但我无法从检测中仅提取标志,因为高尔夫球的边缘也被识别了.

任何解决方案都是受欢迎的.请原谅我的英语.另外,我在编程方面还是个初学者.也许我的问题有一个非常简单的解决方案,但我要提前感谢您的帮助.

这里有2个示例图像,首先是提取徽标的图像类型,然后是提取后的图像应该是什么样子.

非常感谢.向T致以最美好的问候

enter image description here enter image description here

推荐答案

  • 中间模糊(大内核大小)以估计球/照度
  • 要正常化的划分

照明:

illumination

规格化(并进行了一些调整):

normalized

以大津为门槛的:

otsu

def process(im, r=80):
    med = cv.medianBlur(im, 2*r+1)
    with np.errstate(divide='ignore', invalid='ignore'):
        normalized = np.where(med <= 1, 1, im.astype(np.float32) / med.astype(np.float32))
    return (normalized, med)

normalized, med = process(ball1, 80)
# imshow(med)
# imshow(normalized * 0.8)
ret, thresh = cv.threshold((normalized.clip(0,1) * 255).astype('u1'), 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)
# imshow(thresh)

ball2 illumination

ball2 normalized

ball2 otsu

Python相关问答推荐

Python -根据另一个数据框中的列编辑和替换数据框中的列值

从收件箱中的列中删除html格式

运行终端命令时出现问题:pip start anonymous"

发生异常:TclMessage命令名称无效.!listbox"

PyQt5,如何使每个对象的 colored颜色 不同?'

运输问题分支定界法&

将tdqm与cx.Oracle查询集成

为什么NumPy的向量化计算在将向量存储为类属性时较慢?'

如何并行化/加速并行numba代码?

如何在turtle中不使用write()来绘制填充字母(例如OEG)

用砂箱开发Web统计分析

在Python 3中,如何让客户端打开一个套接字到服务器,发送一行JSON编码的数据,读回一行JSON编码的数据,然后继续?

在Python中调用变量(特别是Tkinter)

使用Python从rotowire中抓取MLB每日阵容

python panda ExcelWriter切换动态公式到数组公式

如何使用正则表达式修改toml文件中指定字段中的参数值

获取PANDA GROUP BY转换中的组的名称

TypeError:';Locator';对象无法在PlayWriter中使用.first()调用

如何在python tkinter中绑定键盘上的另一个回车?

查找数据帧的给定列中是否存在特定值