我使用ii = cumsum(cumsum(image, 2), 1)
计算了给定图像的积分图像;在我的课程中,问题要求我绘制标准化的积分图像,这真的让我很困惑,因为大多数值都会大于255,我会得到一个明亮的图像。那么如何绘制规范化的积分图像?
答案 0 :(得分:0)
只需简单地将图像标准化即可。看起来您正在使用MATLAB,因此只需创建一个新的图像,将0到255之间的值标准化:
ii_norm = 255*(ii - min(ii(:))) / (max(ii(:)) - min(ii(:)));
操作首先假定您在[0,1]
范围内进行规范化,然后在之后缩放到[0,255]
。由于您希望将其显示为图像,请不要忘记将其转换为uint8
:
ii_norm = uint8(ii_norm);
但是,您可以使用imagesc
自动缩放值,以便它们始终符合上述范围。但是,imagesc
将使用颜色贴图显示图像,该颜色贴图使用独特颜色着色强度。我怀疑您可能希望自己显示实际强度值,因此您必须致电colormap
并将其设置为gray
才能执行此操作。此外,您可以使用imshow
将第二个参数设为空,以帮助您进行此缩放:imshow(ii, []);
...实际上,您甚至根本不需要进行缩放。如果你想将图像写入文件,你会的。
只需做:
imagesc(ii); colormap('gray');
% or
%imshow(ii,[]);
...如果是浮点数,上面会自动将图片缩放到[0,255]
或[0,1]
的范围内。
你应该期待的是一个渐变渐增的图像,其中左上角是0或接近零,当你接近右下角时,图像的强度开始增加到完全变白的程度。你接近图像的右下角。请记住,积分图像计算从图像左上角到空间坐标(x,y)
的区域。
此外,根据图像的大小,积分图像值可能会非常快速地填满,因此显示日志标准化强度图像可能也很有用:
imagesc(log(1 + ii)); colormap('gray');
% or
imshow(log(1 + ii), []);
当您从左上角向右下角扫描时,这将为您提供更均匀的强度分布。