【发布时间】:2011-07-07 01:35:21
【问题描述】:
我有一个包含黑色 (0) 和白色 (255) 像素的 8 位图像(存储在一个数组中)。假设我想将图像中的所有黑色像素更改为灰色(比如 120)像素。我可以将黑色变为灰色的最快方法是什么。
我想到了两种方法-
开始检查图像中的每个像素。一旦找到黑色像素,就将其更改为灰色。继续直到图像结束。 (更慢但更容易)
开始检查像素。当发现一个黑色像素时,维护一个计数器来跟踪它。继续递增计数器直到下一个白色像素。然后转到计数器并使用 memset 之类的快速函数将一组黑色像素更改为灰色。 (不确定,但我认为这可能会更快)
我有一个巨大的 1GB 图像,因此方法 1 非常慢。有没有更好(更快)的方法来更改/编辑像素?
【问题讨论】:
-
1 GB 的图像总是会很慢。无论您的代码如何,它都以 RAM 总线带宽运行。
-
您可能会从使用单指令多数据技术作为 SSE 获得一些性能优势。
标签: c++ c image optimization image-processing