(100天2小时第三十一天)图像处理基础(一)

一、图像的数字化

1.两个重要指标

空间分辨率:是描述一幅图像中像素密度的一种方式,同时也是图像空间中可辨别的最小细节。

灰度分辨率:是指灰度值的单位幅度上包含的灰度级数,即在灰度级数中可分辨的最小变化。

2.对比度

对比度是指一幅图像中灰度反差的大小,用于表示图像在灰度层级上的差异。指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量。

                                          

 

根据该公式,当图像明暗之间的差异越大时(对比度的值趋于1),对比度越大,图像越清晰,色彩也越鲜明。当图像明暗之间的差异越小时(对比度的值趋于0),对比度越小,整个图像的清晰度、细节、灰度层次表现就会越差。

 

二、数字图像的概念

一幅图像可以定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,而在任何一对空间坐标(x,y)处的幅值f称为图像在该点处的强度或灰度。当x,y和f是有限的离散数值时,称为数字图像。

一幅数字图像是使用有限数量的点对一幅二维图像的表达,一般用二维函数f(x,y)表示。

 

三.图像的取样和量化

    取样:对坐标值进行数字化称为取样。就是把一幅连续图像在空间上分割成M×N个网格,每个网格用一亮度值来表示。一个网格称为一个像素。M×N的取值满足采样定理。

      

一般M,N与L都取2的整数次幂,M=2^m,N=2^n,L=2^k

   采样间隔越大,所得图像像素数越少,空间分辨率低;采样间隔越小,所得图像像素数越多,空间分辨率高,图像质量好,但数据量大。

量化:对幅值数字化称为量化。就是把采样点上对应的亮度连续变化区间转换为单个特定数码的过程。量化后,图像就被表示成一个整数矩阵。每个像素具有两个属性:位置和灰度。位置由行、列表示。灰度表示该像素位置上亮暗程度的整数。此数字矩阵M×N就作为计算机处理的对象了。灰度级一般为0-255(8bit量化)。

      

四、读取图像、显示图像

1.imread:读取图像

2.imshow:显示一幅图像

3.imtool:显示一幅图像,支持鼠标悬停时,图像灰度值的查询。

4.bitshift:二进制的左移乘法/右移除法,都可以完成灰度级的调整,灰度重新量化

bitshift函数实现数据位移操作。bitshift(A,B)函数第二个参数为正,则对A的二进制数左移。第二个参数为负,则右移。bitshift(A,n,N),N表示移位后的数据最多只有N为,若超过N位,多余的位将被丢弃。例如bitshift(255,1),它的结果是510;bitshift(255,1,8)的结果是254。因为255转化为二进制数为11111111,向左移一位就为111111110,但是最多位数是8位,所以把最左边那位丢弃,最后就是11111110,十进制数就是254。

5.bitand:按位与函数

例1:

I=imread('tu4.png');
imshow(I)
I2=I/16;
imtool(I2,[])
I3=bitshift(I,-4);
I4=bitand(I,240);
whos

 

例2

figure,imshow(I, [])%自动调整数据的范围以便于显示.

figure, imshow(I, [100 160])

%使用 I 中的最小值作为黑色,使用最大值作为白色。介于 low 和 high 之间的值显示为灰色的中间色调。

I = imread('tu4.png');
imshow(I)
figure,imshow(I, [])%自动调整数据的范围以便于显示.
figure, imshow(I, [100 160])
%使用 I 中的最小值作为黑色,使用最大值作为白色。介于 low 和 high 之间的值显示为灰色的中间色调。

 

例3

grayslice:减少图中的彩色数目

I1 = imread('tu5.png');
I2 = grayslice(I1,128); figure, imshow(I2,gray(128));%grayslice减少图中的彩色数目
I3 = grayslice(I1,64); figure, imshow(I3,gray(64));
I4 = grayslice(I1,32); figure, imshow(I4,gray(32));
I5 = grayslice(I1,16); figure, imshow(I5,gray(16));

 

例4

对于显示double型图像遇到些问题,总结如下:

1、在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从uint8型变成double型。

2、如果直接运行imshow(I),我们会发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0~ 1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0~255范围。

I = imread('tu4.png');
D = double(I);
D2 = im2double(I);
figure,
subplot(2,2,1), imshow(D);
subplot(2,2,2), imshow(D2);
subplot(2,2,3), imshow(D, []);
subplot(2,2,4), imshow(D2, []);

 

double与im2double的区别:

double 就是简单地把一个变量类型转换成double类型,数值大小不变;

比如 a=6   是个unit8类型的话,double(a)的结果还是6,不过现在这个6是double类型的。

函数im2double将输入转换成double类型。如果输入是 uint8 unit16 或者是二值的logical类型,则函数im2double 将其值归一化到0~1之间,当然就是double类型的了。如果输入本身就是double类型,输出还是double类型,并不进行归一化。

 

五、图像质量

1.图像噪声:可以理解为妨碍人们感觉器官理解所接收的信息的因素。

2.图像质量评价

六、邻接性、连通性、区域和边界

4—邻接:上下左右相同即可连接

8—邻接:上下左右斜对角

m—邻接:先上下左右,有不进行斜对角邻接。上下左右无再找斜对角

 

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页