彩色图像平滑处理主要算法的分析和实现.doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date彩色图像平滑处理主要算法的分析和实现彩色图像平滑处理主要算法的分析和实现 数字图像处理题目:彩色图像平滑处理主要算法的分析和实现 学院: 理学院 姓名: xxx 学号: 日期: 2009-6-3 彩色图像平滑处理主要算法的分析和实现摘要:本文主要讲述彩色图像的平滑处理,首先给出彩色图像平滑处理的算法数学模型及其彩色图像平滑处理的步骤,然后再举例说明其数学模型在实际的图像处理中的应用。通过本文读者可以对彩色图像的平滑处理有一定的了解,并且能够在日常生活中加以运用。关键词:平滑处理一:彩色图像处理基础(预备知识)我们把彩色图像处理细分成三个主要类别:(1)颜色变换。 它主要用于处理每个彩色平面的像素,该处理严格地以像素值为基础,而不是以它们的空间坐标为基础;(2)单独彩色平面的空间处理。它主要对各个彩色平面进行空间滤波;(3)颜色向量处理。它主要同时处理彩色图像的所有分量。因为全彩色图像至少有三个分量,彩色像素实际上是向量。 令c代表RGB彩色空间中的任意向量: 该公式表明c的分量是一幅彩色图像在一个点上的RGB分量。彩色分量是坐标的函数,表示为对一个大小为的图像来说,有个这样的向量,其中,和。在某些情况下,无论是一次处理彩色图像的一个平面,还是作为向量来处理,都会得到相同的结果。然而,它并不总是如此。为了使独立的彩色分量和以向量为基础的处理都相同,必须满足两个条件:首先,该处理必须对向量和标量都可用;其次,对向量的每个分量的运算必须独立于其他分量。二:彩色图像平滑处理的算法数学模型 单色图像的平滑(空间平均)可以通过空间掩膜中的相应系数(全是1)去乘所有像素的值,并用掩膜中元素的总数去除来实现。用空间掩膜平滑来处理彩色图像,该处理用处理灰度图像的相同方法来表达,只是代替单个像素。令表示彩色图像中以为中心的邻域的一组坐标。在该邻域中RGB向量的平均值是其中,是邻域中像素的数量。它遵从向量加属性,即我们意识到该向量的每个分量都将作为我们希望得到的结果,该结果是对每一个分量图像执行邻域平均获得的,使用的是标准的灰度级邻域处理。从而我们可以得出这样的结论:用邻域平均的平滑可以在独立分量的基础上进行。若邻域平均直接在彩色向量空间进行,则其结果是相同的。三:彩色图像平滑的步骤用于图像平滑的IPT线性空间滤波器是用函数fspecial产生的,该函数带有三个选项之一:average、disk和gaussian。一旦产生了滤波器,就可使用函数imfilter执行滤波。概念上,使用线性空间滤波器平滑RGB彩色图像fc的步骤如下:1.提取三幅分量图像:2.分别对每幅分量图像滤波。3.重建滤波后的RGB图像四:彩色图像平滑的举例说明例 (a) (b) (c) (d)图4.1 (a)RGB图像,(b)到(d)分别是红、绿、蓝分量图像(aa) (bb) (cc)图4.2 从左到右:图4.1(a)的色调、饱和度和亮度分量图像 (aaa) (bbb) (ccc)图4.3 (aaa)分别平滑R、G和B图像平面得到的平滑后的RGB图像;(bbb)仅平滑HSI图像的亮度分量后的结果;(ccc)平滑所有三个HSI分量后 的结果图4.1(a)显示了一幅RGB图像,(b)到(d)是其RGB分量图像,它们是用彩色图像平滑的步骤来提取的。图4.2(aa)到(cc)显示了(a)的三个HIS分量图像,它们是使用函数rgb2hsi得到的。 图4.3(aaa)显示了图(a)所示图像平滑后的结果,平滑使用了带有replicate选项的imfilter函数和大小像素的average滤波器。平均滤波器较大,足以产生有意义的模糊度。选择该尺寸的滤波器目的在于,证明在RGB空间的平滑和仅用被变换到HSI空间后图像的亮度分量达到的结果之间的不同。两种滤波后的结果是十分不同的。例如,除图像有点模糊外,图4.3中花杂的顶部还出现了绿色边缘。原因很简单,即色调和饱和度分量没有变化,而平滑处理使得亮度分量的值变化得以减少。合乎逻辑的情况是用相同的滤波器去平滑所有三个分量。然而,这将改变色调和饱和度之间的相对关系,从而产生无意义的颜色,如图4.3(ccc)所示。一般来说,当掩膜的尺寸减小时,对RGB分量图像进行滤波和对同一幅HSI图像的亮度分量进行滤波时,得到的差别也减小了。>> fc=imread ('test.jpg');>> fr=fc(:, :, 1);>> fg=fc(:, :, 2);>> fb=fc(:, :, 3);>> imshow(fc)>> figure, imshow(fr)>> figure, imshow(fg)>> figure, imshow(fb)>> h=rgb2hsi(fc);>> H=h(:, :, 1);>> S=h(:, :, 2);>> I=h(:, :, 3);>> figure, imshow(H)>> figure, imshow(S)>> figure, imshow(I)>> w=fspecial('average', 25);>> I_filtered=imfilter(I, w, 'replicate');>> H_filtered=imfilter(H, w, 'replicate');>> S_filtered=imfilter(S, w, 'replicate');>> R_filtered=imfilter(fr, w, 'replicate');>> G_filtered=imfilter(fg, w, 'replicate');>> B_filtered=imfilter(fb, w, 'replicate');>> f=cat(3, R_filtered, G_filtered, B_filtered);>> h=cat(3, H, S, I_filtered);>> f1=hsi2rgb(h);>> f1=min(f1,1);>> f2=cat(3, H_filtered, S_filtered, I_filtered);>> figure, imshow(f)>> figure, imshow(f1)>> figure, imshow(f2) -