6.3彩色图像处理
彩色图像处理分成三个主要类别:
- 颜色变换
- 单独彩色平面的空间处理
- 颜色向量处理
为了使独立的彩色分量和以向量为基础的处理都相同,必须满足两个条件:首先,该处理必须对向量和坐标都可用;其次,对向量的每个分量的运算必须独立于其他分量。
例如:在图6.10(a)中,平均值可以通过对邻域内的所有像素的灰度级求和,并且用邻域内的像素总数去除得到。在图6.10(b)中,平均值通过对邻域内的全部向量求和,并用邻域内的向量总数去除每一个分量。但平均向量的每一个分量都是图像中相应分量的像素的和。若平均分别是在图像的每个分量上完成的,然后形成彩色向量,则会得到相同结果。
6.4 彩色变换
-
图6.11举例说明了用图形发指定映射函数的一个简单而有效的方法。图6.11(a)示出了一种变换,它是通过三次样条插值得到。图6.11©和图6.11(d)分别提供了更复杂的线性和三次样条插值方法。线性插值使用如下命令实现:
z = interplq(x, y, xi)
它返回一个列向量,该向量包括在点xi处使用一维函数z线性插值的值。列向量x和y指定控制点的水平和垂直坐标。x的元素必须单调递长。z的长度等于xi的长度,例如:
>>z = interplq([0 255]',[0 255]',[0: 255]')
产生一个有着256个元素的一一映射,以连接控制点(0,0)和(255,255),即z=[0 1 2…255]’。
类似地,三次样条插值使用spline函数实现:
z = spline(x, y, xi)
变换函数的说明可以按图形方式操作控制点来交互地产生,这些控制点是函数interpiq和spline的输入并实时地在被处理的图像上显示变换函数的结果。ice(交互彩色编辑)函数可准确地做到这一点,其语法为
g = ice(‘Property Name’,‘Property Value’,…)
其中,'Property Name’和’Property Value’必须成对出现,并且这些点表示由相应输入对所组成的模式的重复。表6.4列出了ice函数中的正确搭配。
关于’watie’参数,当显式或默认地选择’on’时,输出g是处理后的图像。在这种情况下,ice将控制处理,包括光标,因而在命令窗口不必键入任何命令,直到函数关闭,这时最后的结果就是图像g。当选择’off’时,g为处理后的图像的句柄,并且控制会立即返回到命令窗口;因此,在函数ice扔处于活动状态时,可以键入新的命令。为了用句柄g获得图像的属性,我们使用get函数
h = get(g)
6.5彩色图像的空间滤波
6.5.1彩色图像平滑
-
单色图像的平滑(空间平均)可以通过空间掩模中的相应系数(全是1)去乘所有像素的值,并用掩模中元素的总数去除来实现。
-
彩色图像平滑:
图像1为原始图像
图像10~12为图像1的红,绿,蓝,分量图像
图像6~8为图像1色调,饱和度和亮度的分量图像
图像2为图像1平滑后的结果
图像5为图像1经过rgb2hsi函数变换得到的
6.5.2 彩色图像锐化
-
彩色图像锐化
锐化一幅图像,可使用拉普拉斯算子滤波器掩模
>>lapmask = [1 1 1;1 -8 1; 1 1 1];
然后,使用如下命令计算并显示增强后的图像:
>>fen = imsubtract(fb, imfilter(fb, lapmask,'replicate')); >>imshow(fen)
注意水滴,叶脉,花杂的黄色中心和前景中的绿色植物等的锐化增强效果。
6.6 在RGB向量空间直接处理
基于单独彩色平面的处理不等于直接在RGB向量空间中的处理。
6.6.1 使用梯度的彩色边缘检测
-
用函数colorgrad进行RGB边缘检测
[VG,A,PPG] = colorgrad(fc);
得到图像:
6.6.2 RGB向量空间中的图像分割
-
分割通过函数colorseg实现,其语法为:
S = colorseg(method,f,T,parameters)
其中,method不是’euclidean’就是’mahalanobis’,f是待分割的RGB图像,T是前边描述过的阈值。若选择’euclidean’,则输入参数是m,若选择’mahalanobis’,则输入参数是m和C。参数m是一个在上面描述过的向量m,它的形式不是行就是列,并且C是3x3协方差矩阵C。输出s是一幅二值图像(和原始图像同样大小),在未通过阈值测试的点包含0,在通过了阈值测试的点包含1。1表示从基于彩色内容的f中分割的区域。
colorseg函数:
第9章 形态学图像处理
9.1 预备知识
9.1.1 集合论中的基本概念
- 并补不差
9.1.2 二值图像,集合和逻辑运算符
f1= imread('c:\图像\二值图像1.png');
f2= imread('c:\图像\二值图像2.png');
figure,imshow(f1)
figure,imshow(f2)
figure,imshow(~f1)
figure,imshow(f1&f2)
figure,imshow(f1|f2)
figure,imshow(f1&~f2)
-
图像1,2位两幅二值图像
图像3为图像1的补集
图像4为图像1和图像2的合集
图像5为图像1和图像2的交集
图像6为图像1和图像2的差集
9.2 膨胀和腐蚀
膨胀和腐蚀运算是形态学图像处理的基础。
9.2.1 膨胀
- 膨胀是在二值图像中“加长”或“变粗”的操作。这种特殊的方式和变粗的程度由一个称为结构元素的集合控制。数学上,膨胀定义为集合运算。A被B膨胀,记为\(A \oplus B\)定义为:
$$ A \oplus B=\left\{z |(\hat{B})_{z} \cap A \neq \varnothing\right\} $$
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200626101143570.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTAxNjM3,size_16,color_FFFFFF,t_70)](https://imgchr.com/i/Z2BVm9)
-
IPT函数imdilate执行膨胀运算。其基本的调用语法为
A2 = imdilate(A, B)
其中,A和A2都是二值图像,B是指定结构元素的由0和1组成的矩阵。
A = imread('c:\图像\膨胀样本.tif'); B = [0 1 0; 1 1 1; 0 1 0]; A2 = imdilate(A,B); figure,imshow(A) figure,imshow(A2) B = [1 1 1; 1 1 1; 1 1 1]; A2 = imdilate(A,B); figure,imshow(A2) B = [0 0 0; 0 0 0; 0 0 0]; A2 = imdilate(A,B); figure,imshow(A2) B = [1 0 0; 0 1 0; 0 0 1]; A2 = imdilate(A,B); figure,imshow(A2)
图像1为原图像,图像2为膨胀之后的图像。图像3,4,5分别为
B = [1 0 0; 0 1 0; 0 0 1]
B = [1 1 1; 1 1 1; 1 1 1];
B = [0 0 0; 0 0 0; 0 0 0];
变换之后的图像。
9.2.2 结构元素的分解
-
膨胀满足结合律,即
A ⊕ ( B ⊕ C ) = ( A ⊕ B ) ⊕ C A \oplus(B \oplus C)=(A \oplus B) \oplus C A⊕(B⊕C)=(A⊕B)⊕C
结合律很重要,因为计算膨胀所需要的时间正比于结构元素中的非零像素的个数。例如,考虑一个大小为5 x 5且其元素为1的数组膨胀