【发布时间】:2011-04-29 21:32:36
【问题描述】:
CompVision 再次在我的应用程序中处理 jpeg 图像。只是因为我对MFC 和ATL 有点熟悉,所以我使用CImage 来访问像素值。
根据我的需要,我在初始化期间计算图像的亮度矩阵。函数是这样的(Image是我自己的类名,不重要,亮的是float[][]):
void Image::fillBrightnessMatrix(){
COLORREF val;
for(int i=0;i<width;i++){
for(int j=0; j<height;j++){
val=src.GetPixel(i,j);
bright[i][j]=rgb_to_L(val);
}
}
}
其中 src 是 CImage 类的实例,rgb_to_L - 一些计算颜色亮度的函数。
检查我的应用程序的性能,我发现GetPixel 是最昂贵的操作,它显着(实际上,比任何其他操作慢约 700 倍)减慢了图像的整个初始化。 问题是,您可以建议使用哪个库来快速访问单个像素值?除了加载 jpeg 图像和访问单个像素之外,我不需要任何其他操作。性能很重要,因为我的应用程序可以处理大约 3000 张图像,我等不及要数小时才能得到结果。
【问题讨论】:
-
如果您只是解码 JPEG 比特流中 MCU 的 DC 值,您甚至不需要执行(非常)昂贵的 iDCT 来计算像素值 - DC 是平均 YCbCr整个 MCU 的值,您可以对图像而不是每个像素求和/平均。
标签: c++ image-processing jpeg computer-vision