【问题标题】:How to re size a too big image into small by keeping original values如何通过保持原始值将太大的图像重新调整为小图像
【发布时间】:2014-04-23 04:20:57
【问题描述】:
我有一个尺寸为 的灰度图像。当我尝试打开此图像时,我收到警告说它太大了。我已尝试使用 imresize() 函数使其尺寸 small。当我绘制原始图像和重新调整大小的图像时,重新调整大小后强度会降低。我想在不改变其像素值的情况下重新调整原始图像的大小。有什么解决办法吗?
【问题讨论】:
标签:
matlab
image-processing
【解决方案1】:
如果您想将最终图像保留为uint8,我认为您需要先使用im2uint8 将uint16 图像转换为uint8 图像 -
uint8_image = im2uint8(uint16_image);
那么你可以在uint8_image上申请imresize。
但是,如果您不希望最终图像是uint8 类型,您可以直接使用imresize,它会保留数据类型,即调整大小的图像将是uint16 类型。
【解决方案2】:
阅读docs 并使用最近邻法。也就是说,
resized = imresize(original, scale, 'nearest')
这不会使用插值。缺点当然是边缘可能是锯齿状的。
【解决方案3】:
听起来您的 16 位图像使用线性代码,而生成的 8 位图像需要进行伽马校正。如果是这种情况,您可以使用 imadjust 和 1/2.2 的 gamma 参数来生成更亮的图像。
【解决方案4】:
当您使用imshow 显示它时是否收到警告?它是否说“图像变大以适应屏幕,调整为 xx%”之类的内容?如果是这样,那么您可以简单地忽略该警告。否则,您可以设置imshow 的'InitialMagnification' 参数来调整图形大小,但不能调整图像本身。