如何通过保持原始值将太大的图像重新调整为小图像

时间:2014-04-22 14:54:14

标签: matlab image-processing

我有一张尺寸为< 2559x3105 uint16> 的灰度图像。当我尝试打开这张图片时,我发出警告称它太大了。我已尝试imresize()函数使其小< 512x512 uint8> 的大小。当我绘制原始图像并重新调整图像大小时,重新调整大小后强度会降低。我想重新调整原始图像的大小而不改变其像素值。有没有解决方案?

4 个答案:

答案 0 :(得分:0)

阅读docs并使用最近邻法。也就是说,

resized = imresize(original, scale, 'nearest')

这不会使用插值。缺点当然是边缘可能是锯齿状的。

答案 1 :(得分:0)

如果您希望将最终图片保留为uint8,我认为您需要先使用uint16uint8图片转换为im2uint8图片 - < / p>

uint8_image = im2uint8(uint16_image);

然后,您可以在imresize上申请uint8_image

但是,如果您不希望最终图片为uint8类型,则可以直接使用imresize并保留数据类型,即调整后的图片将为{ {1}}输入。

答案 2 :(得分:0)

听起来您的16位图像使用线性代码,而生成的8位图像需要进行伽马校正。如果是这种情况,您可以使用imadjust gamma参数1 / 2.2来生成更亮的图像。

答案 3 :(得分:0)

使用imshow显示警告时是否收到警告?它是否会说“图像大到适合屏幕,调整到xx%”?如果是这样,那么你可以简单地忽略警告。否则,您可以设置'InitialMagnification' imshow参数来调整图形大小,但不能调整图像本身。