在Matlab下降低图像质量

时间:2009-10-05 09:26:10

标签: image matlab image-processing compression resolution

问候, 我试图找到一种简单的方法来操作图像,这样我就可以将它的质量从8位降低到3位。

实现这一目标最简单的方法是什么? 干杯

3 个答案:

答案 0 :(得分:4)

如果要对其进行线性缩放,只需将每个像素值除以255/7(即如果原始图像存储在矩阵I中,则让低分辨率图像J = I /(255/7))。

更新:由于我的缩放常数错误。

以下是一个例子:

Results

答案 1 :(得分:2)

如果您的图像在MATLAB中存储为uint8类型,则像素值的范围为0到255.要将值限制为仅3位精度(因此仅使用数字0到7),您可以按以下示例缩放数据:

>> data = uint8([0 23 128 200 255]);  % Create some data of type uint8
>> scaledData = data*(7/255)

scaledData =

    0    1    4    5    7

>> class(scaledData)

ans =

uint8

请注意,即使缩放值限制在0到7的范围内,存储它们的变量仍然是uint8数据类型,因为这是最小的MATLAB。未使用的高位只是0。

根据您将缩放后的图像数据输出到文件的方式(如果您想这样做),您可以将存储值的精度降低到8位以下(例如PNG files can store 4-bit types )。

答案 2 :(得分:1)

int8是Matlab中最小的整数值。通过向右移动图像中任何像素的任何值,您只能在int8中使用8位中的3位。

如果您可以访问定点工具箱,则可以使用简单表示法使用numerictype个对象:

T = numerictype(s,w)

相关链接。来自Matlab的手册:

  

T = numerictype(s,w)创建一个   带定点的numerictype对象:   未指定的缩放,签名属性   值s和字长w。