史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

如JPEG2000压缩比并指定一个目标

我昨天看一些文档,看到我已经忘记的东西。当你写一个如JPEG2000图像文件使用imwrite,您可以指定所需的压缩比。

好的,那听起来很有趣。让我们尝试用辣椒的形象。

rgb = imread (“peppers.png”);imshow (rgb)标题(原始图像的)

我们开始适度压缩比为10吗?

imwrite (rgb,“peppers_10.j2k”,“CompressionRatio”10);imshow (“peppers_10.j2k”)标题(目标压缩比:10的)

看起来是一样的。

不过,等等。让我们确保在压缩比是什么意思,我们的意见一致。虽然我们,让我们检查输出文件来验证实际的比率。

这张照片是3的内存存储格式为每个像素的颜色值,而且每个颜色值存储使用1个字节。所以总数量的内存字节来表示图像的行数乘以列数乘以3。

大小(rgb)
ans = 384 512 3
num_mem_bytes = prod (ans)
num_mem_bytes = 589824

现在让我们找出我们刚刚创建的如JPEG2000文件的大小。

s = dir (“peppers_10.j2k”);num_file_bytes = s.bytes
num_file_bytes = 58384

压缩比是两个数的比。

r = num_mem_bytes / num_file_bytes
r = 10.1025

这是非常接近指定的目标。

让我们压缩图像的20倍。

imwrite (rgb,“peppers_20.j2k”,“CompressionRatio”,20)imshow (“peppers_20.j2k”)标题(“目标压缩比:20”)

我还很少看到区别。我们拨打100。

imwrite (rgb,“peppers_100.j2k”,“CompressionRatio”,100)imshow (“peppers_100.j2k”)标题(“目标压缩比:100”)

现在变得很糟糕。让我们放大一个地区更紧密地和比较。

次要情节(1、2、1)imshow (rgb) xlim (440 [310]) ylim([130])标题(“原始”次要情节(1、2、2)imshow (“peppers_100.j2k”)xlim(440年[310])ylim([130])标题(“目标压缩比:100”)

我们能多么极端?让我们尝试1000。

imwrite (rgb,“peppers_1000.j2k”,“CompressionRatio”,1000)clf imshow (“peppers_1000.j2k”)标题(“目标压缩比:1000”)

这很难看。但是文件有多大?我们接近目标了吗?

s = dir (“peppers_1000.j2k”);s.bytes
ans = 545
num_mem_bytes / s.bytes
ans = 1.0822 e + 03

最后图片仅使用545字节存储!这是一个压缩比约1082。

我知道如JPEG2000中使用一些医学成像系统,和我也听说美国国会图书馆的使用它。

你使用如JPEG2000吗?如果是这样,请留下你的评论。我想听到您的应用程序。




发表与MATLAB®R2016a

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。