Python:从图像沿边框切出区域

时间:2018-08-25 02:37:48

标签: python image image-processing scipy analysis

我应使用哪些功能(以及如何使用它们)裁剪出该图像的中心部分?我只想选择密度较小的部分,而不是密集的边界。

谢谢!

最后,我想对第二个图像中概述的区域中的小圆圈/点(单元格)进行计数,或者计算密度较低的部分的面积。我以前用ImageJ手工绘制了该区域,但这是一个非常繁琐的过程,包含很多图像。

Original

Area traced

我目前正在研究Scipy,但是它们很大,我真的不知道该如何处理。如果有人将我指向正确的方向,那就太好了!

1 个答案:

答案 0 :(得分:1)

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

首先,我修剪了您的图像以消除多余的垃圾:

enter image description here

然后,我所做的步骤是:

  • 丢弃Alpha /透明度通道
  • 由于没有有用的颜色信息,请转换为灰度
  • 标准化以拉伸对比度并使所有像素在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