图像处理技术之分辨率与压缩

一 图像分辨率

数码图像有两大类,一类是矢量图,也叫向量图;另一类是点阵图,也叫位图。矢量图比较简单,它是由大量数学方程式创建的,其图形是由线条和填充颜色的块面构成的,而不是由像素组成的,对这种图形进行放大和缩小,不会引起图形失真。

图像分辨率(DPI):

图像分辨率是指每英寸图像内的像素点数。图像分辨率是有单位的,叫像素每英寸。分辨率越高,像素的点密度越高,图像越逼真(这就是为什么做大幅的喷绘时,要求图片分辨率要高,就是为了保证每英寸的画面上拥有更多的像素点)。例如:dpi=400,即每英寸有400个像素点。

计算公式:物理尺寸(英寸)=像素尺寸/ DPI1英寸=25.4mm

4040317daebc6bc50333bd737c4b0bf4.png

由图像像素计算出输出尺寸(打印输出):

如图,图像像素尺寸是2480X3505,分辨率是300,换成mm尺寸:

宽=2480*25.4/300=209.97mm,

高=3505*25.4/300=296.76mm,

计算结果是A4的尺寸。

通常在进行图像处理时,不需要考虑分辨率的问题,只考虑像素点和尺寸。

一般Bitmap new出来的对象分辨率是96,计算机屏幕分辨率也是96,。

二 图像压缩

 b79ce8017e992f74d08355d4ed3dee97.png07cbbe74cc2eefd7b4cef84535e026f8.png

如图,某TIFF图像尺寸是2480X3505,没有压缩,文件占用磁盘大小24.9M,

位深度等于24,说明是RGB三通道彩色图像,每个像素点每通道占用8bit,

1 byte =8bit,共24 bit(3byte),总共像素=2480X3505,

占用字节数=2480X3505*3=26077200字节,比图示少一些字节,主要是文件还存储了其他文件头与尺寸等信息。根据分辨率,可以计算出是A4图幅,一张A4图像,如果不压缩存储,占用磁盘空间是24.9M。实际应用中,为了节省存储空间,对图像进行压缩后存储,查看图像时,再解压缩呈现图像。如果是灰度图:占用字节数=2480X3505=8692400字节,约9M,如果是二值图:占用字节数=2480X3505/8=1086550字节,约1M。

以上存储数据都是未压缩的文件尺寸。

图像压缩方式

压缩类别

压缩方式

优点

缺点

无损数据压缩

行程长度编码(RLE)

熵编码法(LZW)

能够比较好地保存图像的质量、

可以100%还原图像颜色数据

压缩比低、

储存空间大

有损数据压缩

色度抽样、

变换编码、

分形压缩

压缩比高、

存储空间小

损失颜色信息

各图像格式压缩方式对比

图像格式

后缀名

压缩方式

适用情形

压缩类别

压缩比

备注

BMP

.bmp

RLE

灰度图、二值图

无损

约3:1


无压缩

全部

无损



PNG

.png

LZ77\无压缩

全部

无损

 约2:1

Ziv和Lempel于1977年发表的算法被后人称为LZ77算法。

1978年,二人又发表了续篇,被命名为LZ78的压缩算法。

JPG

.jpg

离散余弦变换(DCT)

全部

有损

10:1到40:1以上

压缩比因压缩质量而变化,最佳压缩质量是75%,

要求RGB三通道颜色

JPG2000

.jpf

小波变换

全部

无损、有损

可达到100:1

存在版权和专利问题,未广泛应用

TIFF

.tif

LZW

全部

无损

约2:1

1984年,Welch这个人研究了LZ78算法的变种,因为是W在Z和L两人之后研究出来的,因此叫LZW算法。(专利2003年到期)

RLE

灰度图、二值图

无损

约3:1


CCITT3\CCITT4

二值图

无损

约100:1


jpg

全部

有损

10:1到40:1

要求RGB三通道颜色(XP系统一般打不开该格式文件)

 JBIG

全部



ISO JBIG.

JP2000

全部



JPEG2000

QQ技术交流群:318860399

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“一次编写,随处运行” Intel HTML5技术研讨会

HTML5 是一种开放标准。通过使用此标准,开发人员只需编写一次程序,即可在任何地方运行。 这一跨平台方法能够显著增加开发人员的总体潜在受众,同时在不同屏幕尺寸上为用户带来更一致的体验。因此,HTML5 是应用程序开发领域的未来趋…

当代年轻人,都有些不成文的规定?

全世界只有3.14 % 的人关注了爆炸吧知识面对海量信息,我们不可能有时间去一一筛选,导致我们看到的总是局部。包括公众号,看似可以随便关注,但是你的选择其实是有限空间的。你可以关注更多资讯、干货十足的公号主动和别人分享有趣的…

flash文件制作笔记

在uboot串口台输入printenv 可以分区以及其他信息,如下 hisilicon # printenv bootdelay1baudrate115200ethaddr00:00:23:34:45:66bootfile"uImage"UPDATEnetupdate JVS-HI3518ES-8188 0x83FFF000 0x780000 0x80000filesize1B0000fileaddr82000000netmask…

未检测到正确安装的网络适配器_电脑网络适配器有感叹号怎么解决?

今天有位女性乎友问:我家的电脑之前一直没装宽带,主要是家人怕影响学习,不过上周就涨了,电脑终于连上网线,但没办法上网,还发现电脑设备管理器中网络适配器出现黄色感叹号。对于电脑的网络适配器感叹号问题…

Android之Launcher分析和修改5——HotSeat分析

今天主要是分析一下Launcher里面的快捷方式导航条——HotSeat,一般我们使用手机底下都会有这个导航条,但是如果4.0的Launcher放到平板电脑里面运行,默认是没有HotSeat的,刚好我这里的运行环境类似平板,系统默认把HotSe…

使用Spectre.Console创建漂亮的控制台应用程序

前言你是否厌倦了控制台应用程序默认的简陋界面&#xff1f;这时&#xff0c;你可以试试引用Nuget包Spectre.Console。打印使用帮助首先&#xff0c;我们可以设置控制台应用程序可以执行的命令&#xff1a;static async Task<int> Main(string[] args) {var app new Com…

Boosting集合算法详解(一)

本文是关于聚类算法的第二篇K-means&#xff0c;感兴趣的同学可以前往http://ihoge.cn/2018/clustering.html 阅读完整版。 二、K-means 1. 算法步骤 <1> 选择KK个点作为初始质心 <2> Repeat: <3> 将每个点指派到最近的质心,形成K" role="pre…

一款不错的网站压力测试工具webbench

webbench最多可以模拟3万个并发连接去测试网站的负载能力  1、适用系统&#xff1a;Linux  2、编译安装&#xff1a; wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gztar zxvf webbench-1.5.tar.gzcd webbench-1.5make && make installUnbun…

WindowsPhone8可缩放图片控件的实现

xaml中添加: <ViewportControl x:Name"viewport" DoubleTap"OnDoubleTap"ManipulationStarted"OnManipulationStarted" ManipulationDelta"OnManipulationDelta" ManipulationCompleted"OnManipulationCompleted" Viewpo…

python导入自定义模块_Python3 导入自定义的包

什么是包&#xff1f; 要想知道什么是包&#xff0c;得先了解一下模块的概念。 模块是一个包含所有你定义的函数和变量的文件&#xff0c;其后缀名是 .py。模块可以被别的程序引入&#xff0c;以使用该模块中的函数等功能。 知道了模块&#xff0c;那紧接着看看包&#xff1a; …

Android之ComponentName的用法

ComponentName(组件名称)是用来打开其他应用程序中的Activity或服务的、 ComponentName,顾名思义,就是组件名称,通过调用Intent中的setComponent方法,我们可以打开另外一个应用中的Activity或者服务。 实例化一个ComponentName需要两个参数,第一个参数是要启动应用的包…

Linux入门之进程管理(4)之进程与文件

Linux入门之进程管理(4)之进程与文件前面使用进程相关命令管理工具都是根据进程编号或者进程名称及其其它属性信息来查看和处理相关进程的&#xff0c;但是在某些情况下&#xff0c;想要查看某个文件或者某个设备被哪些进程所使用&#xff0c;使用ps、pgrep等命令查询的是不够准…

巧用Hive自带函数进行多字段分别去重计数统计

巧用Hive自带函数进行多字段分别去重计数统计 1-group by 和 distinct 大前提&#xff1a;大表统计能使用group by就不要使用distinct&#xff01;&#xff01; 尤其是在数据量非常大的时候&#xff0c;distinct会将所有的统计信息加载到一个reducer里取执行&#xff0c;这就是…

初识MASA Blazor

MASA Blazor是一个Blazor的UI组件库。就像大家写前端熟知的Bootstrap, Ant Design一样。MASA Blazor官网地址&#xff1a;https://blazor.masastack.comMASA Blazor Github地址&#xff1a;https://github.com/BlazorComponent/MASA.BlazorMASA Blazor Pro演示地址&#xff1a;…

Thread.sleep还是TimeUnit.SECONDS.sleep

刚看到TimeUnit.SECONDS.sleep()方法时觉得挺奇怪的&#xff0c;这里怎么也提供sleep方法&#xff1f;public void sleep(long timeout) throws InterruptedException {if (timeout > 0) {long ms toMillis(timeout);int ns excessNanos(timeout, ms);Thread.sleep(ms, ns…

win7技巧

win7鼠标右键菜单清理 win7右键菜单设置 |浏览&#xff1a;7659|更新&#xff1a;2014-03-04 14:23|标签&#xff1a; windows7 鼠标 1234567分步阅读虽然我们现在打开某个软件都是双击解决完事&#xff0c;但是偶尔我们需要右键属性的时候&#xff0c;可以看到右键菜单拖拖拉拉…

shell基础一

Shell支持自定义变量。 定义变量 定义变量时&#xff0c;变量名不加美元符号&#xff08;$&#xff09;&#xff0c;如&#xff1a; variableName"value" 注意&#xff0c;变量名和等号之间不能有空格&#xff0c;这可能和你熟悉的所有编程语言都不一样。 同时&…

python画方波_python实现周期方波信号频谱图

在学习傅里叶变换的时候遇到了求周期方波信号频谱图的例子&#xff0c;在书上和网上查阅了一些资料&#xff0c;发现大都是讨论的都是下图左边的周期信号的频谱&#xff0c;课程老师的PPT中也只列出了另一种周期信号频谱图的结论&#xff0c;没有在进行傅里叶变换&#xff0c;自…