6

我正在为生物医学成像课程做一个项目(注意:这是一门非编程课程,所以寻求编程帮助不是作弊。在规划方面寻求概念帮助是作弊。)我需要在哪里操作图像使用不同的数学变换。我正在用 C 语言编写,所以它可以尽可能快。我已经完成了数学变换的代码,但我意识到我不知道如何将灰度 .png 文件转换为二维矩阵/数组以进行计算,并且我不知道如何显示 .png文件在 C. 有人可以帮助我吗?

我正在尝试将“image.png”图像转换为二维数组,其中数组中的每个条目的值介于 0 - 255 之间,并与“image.png”中的每个像素对应。我还想将一个二维数组转换为一个新的“image_two.png”文件,其中每个条目对应于图像中的一个像素,值在 0 - 255 之间。

我是一个有点新的程序员。我在 python 编程方面有扎实的基础,但 C 对我来说是新的。我做了很多研究,我发现很多人都在谈论使用“这个库”“那个库”,或者“这个库”,但是我如何在 C 中使用下载的库?作为 python 程序员,这对我来说是陌生的领域:(

我正在使用 Ubuntu 12.04

重申:

  • 您如何将灰度 .png 图像读取为 C 中的二维数组/矩阵?

  • 如何在 C 中将二维数组/矩阵显示为灰度图像?

  • 您如何在 C 代码中使用下载的库(特别是针对上述两个问题)?我发现了如何使用这些库。

编辑:我仍然无法弄清楚如何从 .png 文件中创建灰度 2d 数组以及如何从灰度 2d 矩阵中创建 .png 文件。其他人可以帮忙吗?

4

2 回答 2

4

您可以使用更通用的图像处理库,您可能会发现它更易于使用。我推荐 FreeImage http://freeimage.sourceforge.net/。请参阅手册的像素访问部分以访问像素数据。然后,您可以直接使用它或将其复制到您自己的矩阵中。

于 2013-04-28T02:48:17.740 回答
3

要在 Linux 中安装库,通常您将使用包管理器。例如,在 Debian(包括 Ubuntu)中,您可能会这样做:

$ apt-cache search libpng

您将根据运行此命令的结果决定要安装哪个包,然后您将运行

$ sudo apt-get install <package-name>

此命令可能会安装png.h在 gcc 搜索路径中已包含的位置。这意味着要png.h在您的程序中使用,您所要做的就是包含它。

#include <png.h>

跳到libpng 手册的第 3 章,了解如何阅读 png 文件。

于 2013-04-27T22:37:58.197 回答