【问题标题】:crop out dark area from an image with shallow stripes on it从带有浅条纹的图像中裁剪出黑暗区域
【发布时间】:2021-07-01 22:38:24
【问题描述】:

我正在尝试移除具有一些浅条纹的图像的暗区。为了清楚起见,我附上图片: original imagethreshold image

我通过do_, th = cv2.threshold(gray, 67, 255, cv2.THRESH_TOZERO)尝试用灰度级阈值,但结果不满意。

请指教。 谢谢。

【问题讨论】:

  • 您没有向我们提供太多信息。你知道更多关于inage的事情吗?黑暗区域可能总是在右侧吗?可能总是有3个地区吗?或者更多?或更少?区域总是矩形的吗?
  • 嗨,马克,黑暗区域可能在左侧或右侧。基本上是三个区域,飞镖区域最大,但每个区域的大小不固定。图像区域实际上来自圆柱形电池的投影,因此它看起来像矩形但不完全是因为每个电池的投影方向略有不同。如果我们能以某种方式获得黑暗和浅水区域之间的界限,我会很棒。
  • 灰色区域的上部部分具有比黑色区域的下部低的强度值。这对于找到一个合适的阈值来掩盖黑色区域将是一个巨大的问题。请提供所需输出的草图或类似内容。
  • 我基本上想裁剪掉暗区,因为我的 ROI 是这张图片左侧的浅部分。更具体地说,浅的部分有两个区域,我的ROI是整个图片中间的那个。所以,如果我们能找到浅区域和飞镖区域之间的边界,我会裁剪图像并用背景颜色填充剩余的区域。

标签: image-processing computer-vision


【解决方案1】:

如果您使用np.mean(image, axis=1) 对所有行取平均值(或总和),同样使用np.mean(image, axis=0) 对列取平均值,您将得到这个结果,这将使您能够找到区域的边缘:只要它们是矩形的并且与图像的边缘对齐。

【讨论】:

  • 我用类似的方法裁剪了原始图像(X方向),我绝对可以对Y方向做同样的事情。我可能也可以对每一行或每一列执行此操作,但挑战是:如何对数据进行分组以根据值(灰度)找到拆分点。因为我们要处理数千张不同灰度的图像,所以很难使用固定值对数据进行分组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
  • 2019-01-31
  • 2021-03-09
  • 1970-01-01
相关资源
最近更新 更多