图像因其表现方式的不同分为连续图像和离散图像两大类。
连续图像∶是指在二维坐标系中连续变化的图像,即图像的像点是无限稠密的,同时具有灰度值(即图像从暗到亮的变化值)。连续图像的典型代表是由光学透镜系统获取的图像,如人物照片和景物照片等,有时又称为模拟图像。
离散图像∶是指用一个数字序列表示的图像。该阵列中的每个元素是数字图像的一个最小单位,称为像素。像素是组成图像的基本元素,是按照某种规律编成系列二进制数码(0和1)来表示图像上每个点的信息,,因此又称为数字图像。
以一个我们身边的简单例子来说,用胶片记录下来的照片就是连续图像,而用数码相机拍摄下来的图像是离散图像。
计算机只能处理数字信号,照片、图纸等的原始信息都是连续的模拟信号,必须将连续的图像信息转化为数字形式。可以把图像看作是一个连续变化的函数,图像上各点的灰度是所在位置的函数,这就要经过数字化的采样与量化。
图像采样就是按照图像空间的坐标测量该位置上像素的灰度值。方法如下∶对连续图像(x,y)进行等间隔采样,在(x,y)平面上,将图像分成均匀的小网格,每个小网格的位置可以用整数坐标表示,于是采样值就对应了这个位置上网格的灰度值。若采样结果每行像素为M个,每列像素为N个,则整幅图像对应于一个M×N数字矩阵。这样就获得了数字图像中关于像素的两个属性∶位置和灰度。位置由采样点的两个坐标确定,也就对应了网格行和列;而灰度表明了该像素的明暗程度。
把模拟图像在空间上离散化为像素后,各个像素点的灰度值仍是连续量,接着就需要把像素的灰度值进行量化,把每个像素的光强度进行数字化,也就是将(x,y)的值划分成若干个灰度等级。
一幅图像经过采样和量化后便可以得到一幅数字图像。通常可以用一个矩阵来表示。
矩阵中的元素称为像素。每一个像素都有x和y两个坐标,表示其在图像中的位置。另外还有一个值,称灰度值,对应于原始模拟图像在该点处的亮度。量化后的灰度值代表了相应的色彩浓淡程度,以256色灰度等级的数字图像为例,一般由8比特(即一个字节)表示灰度值,由0~255对应于由黑到白的颜色变化。对只有黑白二值采用一个比特表示的特定二值图像,就可以用0和1来表示黑白两色。
将连续灰度值量化为对应灰度级的具体量化方法有两类,即等间隔量化与非等间隔量化。根据一幅图像具体的灰度值分布的概率密度函数来进行量化,但是由于灰度值分布的概率函数因图而异,不可能找到一个普遍适用于各种不同图像的最佳非等间隔量化公式,因此,在实际应用中一般都采用等间隔量化来进行量化。
虽然我们处理的是整数,但是在matlab(以及一些其他语言中)数字本身并不是整数。
一幅二值图像的二维矩阵仅由0、1两个值构成,"0"代表黑色,"1"代表白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。
二值图像在Matlab中是一个取值只有0和1的逻辑数组。因而,一个取值只有0和1的uint8类数组,在Matlab中并不认为是二值图像。使用logical函数可以把数值数组转换为二值数组。因此,若A是一个由0和1构成的数值数组,则可使用如下语句创建一个逻辑数组B∶
B=logical(A),
若A中含有除了0和1之外的其他元素,则使用logical函数就可以将所有非零的量变换为逻辑1,而将所有的0值变换为逻辑0。
灰度图像矩阵元素的整数取值范围通常为【0,255】。因此其数据类型一般为8位无符号整数(int8),这就是人们经常提到的256灰度图像。"0"表示纯黑色,"255"表示纯白色,中间的整数数字从小到大表示由黑到白的过渡色。若灰度图像的像素是uinl6类,则它的整数取值范围为【0,65535】。若图像是double类,则像素的取值就是浮点数。规定双精度型归一化灰度图像的取值范围是【0,1】,0代表黑色,1代表白色,0~1之间的小数表示不同的灰度等级。二值图像可以看成是灰度图像的一个特例。
一幅 RGB图像就是彩色像素的一个mxn×3数组,其中每一个彩色像素点都是在特定空间位置的彩色图像相对应的红、绿、蓝三个分量。RGB也可以看成是一个由三幅灰度图像形成的"堆",当将其送到彩色监视器的红、绿、蓝输入端时,便在屏幕上产生了一幅彩色图像。按照惯例,形成一幅 RGB彩色图像的三个图像常称为红、绿或蓝分量图像。分量图像的数据类决定了它们的取值范围。若一幅RGB图像的数据类是double,则它的取值范围就是【0,1】。类似地,uin8类或 uintl6类 RCB图像的取值范围分别是【0,255】或【0,65535】。
索引图像有两个分量,即数据矩阵X和彩色映射矩阵map。矩阵map是一个大小为m×3且由范围在【0,1】之间的浮点值构成的double类数组。map的长度m同它所定义的颜色数目相等。map的每一行都定义单色的红、绿、蓝三个分量。索引图像将像素的亮度值"直接映射"到彩色值。每个像素的颜色由对应矩阵X的值作为指向map的一个指针决定。若X属double类,则其小于等于1的所有分量都指向map的第1行,所有大于1 且小于等于2的分量都指向第2行,依次类推。若X为uin8类或uinl6类图像,则所有等于0的分量都指向map的第1行,所有等于1的分量都指向第2行,依次类推。
Matlab中函数imadjust是对图像进行亮度变换的工具。其语法为
g=imadjust(f,[low_in;high_in],[low_out;high_out],gamma),
此函数将图像f中的亮度值映射到g中的新值,即将low_in 至high_in之间的值映射到low_out至high_out之间的值。参数gamma为调节权重,若 gamma(或分量,,彩色图片gamma为三维行向量)小于1,则映射被加权至更高(更亮)的输出值;若 gamma(或分量)大于1,则映射被加权至更低(更暗)的输出值。
f=imread('tu2.bmp'); %读取原图像
h1=fspecial('laplacian',0); %式(13.3)的滤波器,等价于式(13.5)中参数为0
g1=f-imfilter(f,h1); %中心为-4,c=-1,即从原图像中减去拉普拉斯算子处理的结果
h2=[1 1 1; 1 -8 1; 1 1 1]; %式(13.4)的滤波器
g2=f-imfilter(f,h2); %中心为-8,c=-1
subplot(1,3,1),imshow(f) %显示原图像
subplot(1,3,2),imshow(g1) %显示滤波器(13.3)修复的图像
subplot(1,3,3),imshow(g2) %显示滤波器(13.4)修复的图像
当今时代,信息网络技术在全世界范围内得到了迅猛发展,它极大方便了人们之间的通信和交流。借助于计算机网络,人们可以方便、快捷地将数字信息(如数字化音乐、图像、影视等方面的作品)传到世界各地,而且这种复制和传送几乎可以无损地进行。但是,这样的数据传输并不能保证信息的隐秘性,由此以来,保证网络上传送的信息的安全性便成为一个具有重要意义的问题,国内外的一些学者在不断探索信息的隐秘传输,并取得较为丰硕的成果。
信息隐藏技术是利用人类感觉器官的不敏感(感觉冗余),以及多媒体数字信号本身存在的冗余(数据特性冗余),将秘密信息隐藏于掩护体(载体)中,不被觉察到或不易被注意到,而且不影响载体的感觉效果,以此来达到隐秘传输秘密信息的目的。
现有两幅图片,为了保密,需要将图13.15(a)所示的图像进行加密,然后隐藏在图13.15(b)所示的图像之中,供将来进行传输。
点击下载 【课本 + 源码 】 提取码:92h8