我必须使用 PNG 格式读取数百张 RGB 图像。我只需要一种颜色(红色、绿色或蓝色),现在我正在做这样的事情:
A = imread(file);
A = A(:, :, 1);
我想知道是否可以只读取一种颜色的值,以加快读取速度。我需要这个操作尽可能快。
我必须使用 PNG 格式读取数百张 RGB 图像。我只需要一种颜色(红色、绿色或蓝色),现在我正在做这样的事情:
A = imread(file);
A = A(:, :, 1);
我想知道是否可以只读取一种颜色的值,以加快读取速度。我需要这个操作尽可能快。
就像@carandraug 提到的那样,octave 没有提供这样的方法。您已经发布了最简单的选项。Octave 使用ImageMagick作为后端来读取图像文件。这里没有太大的优化空间。
此外,如果您确实需要加快阅读大量图像的速度,您可能需要寻找替代阅读方法或实现自己的阅读方法。一个好的起点是libpng的源代码。另一个想法是首先将您的 RGB png 转换为未压缩的简单 bmp。让您选择的另一个快速程序处理转换图像的过程。例如在内存驱动器中创建bmp,并使用低级命令(fread)从八度音程读取它们。这种策略可以在某种程度上进行优化。但只有当我们谈论很多图像时,它们才值得付出努力。