Python:沿着边界从图像中裁剪出区域

标签 python image image-processing scipy analysis

我应该使用什么函数(以及如何使用它们)来裁剪该图像的中心部分?我只想选取密度较低的部分,而不是密集的边界。

谢谢!

最后,我想计算这些区域中的小圆圈/点(单元格),或者计算第二张图像中概述的密度较低部分的面积。我之前曾使用 ImageJ 通过手动绘制区域来完成此操作,但对于大量图像来说,这是一个非常乏味的过程。

Original

Area traced

我目前已经看过 Scipy,但它们很大,我真的不知道如何解决这个问题。如果有人能指出我正确的方向,那就太好了!

最佳答案

在 Python 中,我需要花费更长的时间,但我只是在命令行上使用 ImageMagick 尝试了一些想法,它安装在大多数 Linux 发行版上,并且在 macOS 上免费提供和 Windows。

首先,我修剪了您的图像以去除无关的垃圾:

enter image description here

然后,我所做的步骤是:

  • 放弃 Alpha/透明度 channel
  • 转换为灰度,因为没有有用的颜色信息,
  • 标准化以拉伸(stretch)对比度并使所有像素在 0-255 范围内,
  • 查找单元格的阈值
  • 用周围 49x49 像素的平均值替换每个像素(框模糊)
  • 阈值再次定为 90%

该命令在终端/命令提示符中如下所示:

convert blobs.png -alpha off -colorspace gray -normalize -threshold 50% -statistic mean 49x49 -threshold 90%  result.png

结果是:

enter image description here

如果这种方法看起来对您的其他图片很有前途,我们可以很快制定出 Python 版本,所以请告诉我。

当然,如果您知道有关图像的其他有用信息可以帮助改善情况...例如,也许您知道边缘的密度总是较高。

<小时/>

如果有人想查看中间步骤,这里是灰度缩放和标准化后的图像:

enter image description here

这是模糊后的效果:

enter image description here

关于Python:沿着边界从图像中裁剪出区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013574/

相关文章:

python - 读取 csv 中带有逗号和引号的字段,其中逗号是分隔符 - pyspark

python - 获取两个日期之间的月份列表

image - 如何从 git bash 运行 textcleaner imagemagick 脚本

python - 如何从二进制骨架化图像中找到分支点

Python 3 : I am trying to find find all green pixels in an image by traversing all pixels using an np. 数组,但无法解决索引错误

Python 服务器 : Chrome Extension SSL certificate

c# - WPF 按钮中的图像在运行时不可见

html - 圆像方

python-3.x - 为什么sorted(contour)[0]与sorted(contour)[:1]不同

image-processing - 如果整个地面实况是黑色的,则医学图像分割