树莓派上的图像处理

信息处理 卷积 图像分割
2022-02-22 11:36:09

Raspberry Pi 上的开源图像处理功能有哪些选择?

所以,我指的是老式处理,使用诸如开/关/腐蚀/膨胀/阈值/卷积等运算符。

我不是在寻找基于神经网络的处理。

如果它具有 Python 接口,则可以加分,但 C 也可以。

在 1990 年代,我在大学里使用 Scil Image 来制作这些东西,我想知道它的现代等价物是什么?

2个回答

Python 有很多用于图像处理的导入库,它们运行在支持 Linux 的平台上,例如树莓派。

Pi 与基于 ARM 的处理器一起运行,该 CPU 的每个限制(尤其是 SIMD 浮点操作)也是图像处理的限制。

Pi 还配备了专用的硬件 GPU,可用于加速某些图像处理(计算机图形)功能(除了其图像/视频编码和解码功能)

Pi 还带有内置的相机接口,可以使用可用的 Python 库对相机数据进行原始处理。

我会推荐三种方法:

  1. 首先尝试您自己的实现,特别是如果您有一段时间没有编写图像处理代码。
  2. 谷歌“Python 图像处理库”。有很多选择,您知道足以选择适合您的。首先选择简单性和可用性。
  3. 在 Pi 上安装 OpenCV。不用担心性能;Pi 可以完成您需要的大部分工作。
  4. 查看除 OpenCV 之外的其他 3rd 方图像处理库。

许多年前,我使用自己编写的算法在 PC104 处理器卡上编写了一个简单的对象跟踪应用程序。我相信 RPi 4 可能会超过旧的 PC104 处理器。

对图像处理完全陌生的人应该找到像 ImageJ 这样的简单应用程序来修补不同的处理技术,看看他们做了什么。培养对什么有效和什么无效的直觉是一个好的开始。但听起来你已经有经验了。

只要你能把一张图片做成一个数组,你就可以写出各种传统的视觉算法。这是值得做的。我采访了许多求职者,他们吹嘘自己在现代图像处理、机器学习等方面的技能,但他们无法回答有关基本图像处理技术的简单问题。有些人对某个特定的包非常熟悉,但对底层功能的理解不够充分,无法发挥很大作用——当然也达不到他们期望的薪水。

您可以在 Raspberry Pi 上运行 OpenCV。如果您有旧的 Pi,请考虑获取具有更多内存的最新版本。

https://www.learnopencv.com/install-opencv-4-on-raspberry-pi/

你会发现很多与 OpenCV 相关的资源。免费。它对许多人有用。有一本关于它的 O'Reilly 书。但是从长远来看,OpenCV 是否适合您最好留待另一个讨论。当心那些说你必须学习 OpenCV,每个人都使用它等的人。我在这个领域已经很长时间了,我只是建议在接近 OpenCV 或任何其他软件包时要小心。

OpenCV 的拥护者“了解”并使用了多年,但可能不知道底层算法是如何工作的。这实际上没关系——我们不必对每种图像处理算法的工作方式或某些开源贡献者如何决定实现这个或那个功能都同样感兴趣。使用高级函数是在相对较短的时间内修改许多算法的好方法。

还有其他开源图像处理包。我建议找一些,确定最简单的,可以满足你的需要并且可以在 Pi 上运行,然后就不用了。仅仅为了使用某些库的一小部分功能而在安装过于复杂的情况下苦苦挣扎可能会令人沮丧。

ImageJ 简单且可扩展,您会认识到其中的一些功能。 https://imagej.nih.gov/ij/

我会提到一些其他的指导方针。学习图像处理不仅仅是选择一个函数库。

即使您只是处理一些个人项目,也要设置一些基本规格。例如,假设您要编写一个图像处理函数的管道,这些函数可以获取图像,去除一些噪声,然后计算对象的数量。问问自己你可以允许这个处理多长时间。那就试一试吧!例如,如果您希望它在 250 毫秒内运行,但需要 600 毫秒,那么一些简单的优化很有可能会有所帮助:只处理部分图像;简化形态算子;之类的。

重复前面的一点:从简单开始。看看你是否可以将图像放入内存。尝试运行现成的应用程序。花一点时间阅读像 Gonzalez & Woods 这样的教科书,一步一步地学习。

选择您现在无法处理的图像处理应用程序,并逐步创建更完整的解决方案。

了解一些有关相机和镜头的知识。一点点!例如,如果您可以将 0.5 米长的物体放入图像中,那么相机需要移动到哪里才能以相同的方向适应 1.25 米长的物体?

另外,请随时给我发私信或在评论中开始对话。我的大多数 StackOverflow 答案都与让人们在该领域入门有关。