继最后一个问题:read big image file as an array in python
由于我笔记本电脑的内存限制,我想用 python 生成器实现图像分割算法,它可以一次读取每个像素,而不是整个图像。
我的笔记本电脑是 Window 7(64 位操作系统),配备 4G 内存和 Intel(R) Core (TM) i7-2860 QM CPU,我正在处理的图像超过 2G。我要应用的算法是分水岭分割:http://scikits-image.org/docs/dev/auto_examples/plot_watershed.html
我能找到的唯一类似的例子是http://vkedco.blogspot.com/2012/04/rgb-to-gray-level-to-binary-python.html ,但我需要的不仅仅是一次转换一个像素值。我需要考虑近像素之间的关系。我能怎么做?
对我有什么想法或提示吗?提前致谢!
最佳答案
由于 RGB 到灰度级的转换操作纯粹是本地的,流式处理方法是微不足道的;像素的位置无关紧要。 Watershed 是一项全局性的行动。一个像素可以显着改变输出。您有多种选择:
- 编写 Watershed 的实现,它适用于图 block 并在图像的许多遍上进行迭代。这对我来说听起来很难。
- 使用局部方法进行分割(即阈值化)。
- 买一台内存更大的电脑。 RAM 很便宜,您可以将大量内存放入桌面系统。
关于python - 用python生成器实现图像分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11689620/