2019-05-04 12:28:03 Dujing2019 阅读数 389
  • Kaggle 神器:XGBoost 从基础到实战

    主讲老师冒老师为计算机博士,现在中科院从事科研教学工作,十余年机器学习教学经验,主持国家级科研项目3项,研究方向为机器学习、计算机视觉及多媒体处理。 XGBoost是"极端梯度提升"(eXtreme Gradient Boosting)的简称。XGBoost源于梯度提升框架,但是能并行计算、近似建树、对稀疏数据的有效处理以及内存使用优化,这使得XGBoost至少比现有梯度提升实现有至少10倍的速度提升。XGBoost可以处理回归、分类和排序等多种任务。由于它在预测性能上的强大且训练速度快,XGBoost已屡屡斩获Kaggle各大竞赛的冠军宝座。

    39272 人正在学习 去看看 AI100讲师

数字图像处理—彩色图像处理

(五) 彩色图像的空间滤波

彩色图像滤波的目标就是同时达到三个目的:削弱噪声,保护色调和保护边缘或细节信息。下面主要讨论的就是彩色图像的平滑处理和锐化处理。

5.1 彩色图像的平滑处理

平滑单色图像的一种方法是定义相应的系数是 1 的模板,用空间模板的系数去乘所有像素的值,并用模板中元素的总数去除。用空间掩膜平滑来处理彩色图像,该处理用处理灰度图像的相同方法来表达,只是代替单个像素。

令 Sxy表示彩色图像中以(x,y)为中心的邻域的一组坐标。在该邻域中,RGB向量的平均值是:
在这里插入图片描述
其中,K 是邻域中像素点的数量。附加向量的特性是:
在这里插入图片描述
该向量的每个分量都作为将要得到的结果,结果是用每个分量图像执 邻域平均获得的,使用的是上边提到的滤波器模板。因此,得出这样的结论:用邻域平均的平滑可以在每个图像平面的基础上执行。如果邻域平均直接在彩色向量空间执行,那么结果是相同的

概念上,平滑 RGB彩色图像fc时,线性空间滤波由下面的步骤组成

1.抽取 3 个分量图像:

fR= I(:,:,1);
fG = I(:,:,2);
fB = I(:,:,3);

2.分别过滤每个分量图像。例如,令w = fspecial(‘average’, 25)表示用fspecial产生的平滑滤波器,平滑分量图像:

fR_filtered = imfilter(fR, w, ‘replicate’);
fG__filtered = imfilter(fG, w, ‘replicate’);
fB_filtered = imfilter(fB, w, ‘replicate’);

也可以对这三个图像分量一起处理:

fc_filtered = imfilter(I, w, ‘replicate’);

3.重建滤波过的 RGB图像:

fc_filtered = cat(3, fR_filtered, fG_filtered, fB_filtered)

因为可以在 MATLAB中使用与单色图像相同的语法来执行 RGB图像的线性滤波, 所以可以把前三步合并为一步:

fc_filtered = imfilter(fc, w, ‘replicate’);

编写代码:

rgb_image=imread('D:\数字图像处理\第六章学习\flower6.tif');       %加载彩色图像
fR = rgb_image(:, :, 1);       %提取R通道分量图像
fG = rgb_image(:, :, 2);       %提取G通道分量图像
fB = rgb_image(:, :, 3);       %提取B通道分量图像
subplot(2, 2, 1), imshow(rgb_image);title('(a)原图像');
subplot(2, 2, 2), imshow(fR);title('(b)红色分量图');
subplot(2, 2, 3), imshow(fG);title('(c) 绿色分量图');
subplot(2, 2, 4), imshow(fB) ;title('(d)蓝色分量图');  

代码运行效果如下:

接下来,用尺寸为 25×25 像素的相同滤波器滤波亮度分量。平均滤波器已足够大,可以产生有意义的模糊度。选择这个尺寸的滤波器,是为了演示在 RGB 空间中进行平滑处理的效果,与在 RGB 空间被变换到 HSI 空间后,只使用图像的亮度分量达到类似结果之间的不同之处。

编写代码:

rgb_image=imread('D:\数字图像处理\第六章学习\flower6.tif');
fR = rgb_image(:, :, 1);
fG = rgb_image(:, :, 2);
fB = rgb_image(:, :, 3);
w = fspecial('average', 25);
fR_filtered = imfilter(fR, w, 'replicate');      %平滑红色分量图像
fG_filtered = imfilter(fG, w, 'replicate');      %平滑绿色分量图像 
fB_filtered = imfilter(fB, w, 'replicate');      %平滑蓝色分量图像
fc_filtered = cat(3,fR_filtered,fG_filtered,fB_filtered);   %将这四个句子可以改为:fc_filtered = imfilter(f, w, 'replicate');
subplot(1,2,1);imshow(rgb_image);title('(a)RGB图像');
subplot(1,2,2);imshow(fc_filtered,'Border','tight');title('(b)平滑 R、G、B 图像平面得到的 RGB 图像');

代码运行效果如下:

编写代码:

fc=imread('D:\数字图像处理\第六章学习\flower6.tif');
h = rgb2hsi(fc);
H = h(:, :, 1);
S = h(:, :, 2);
I = h(:, :, 3);
w = fspecial('average', 25);
I_filtered = imfilter(I, w, 'replicate');
h=cat(3,H,S,I_filtered);      %cat函数是拼接数组的函数,这里将在第3维上进行拼接。
f=hsi2rgb(h);                      
subplot(1,2,1);imshow(fc);title('(c)RGB图像');
subplot(1,2,2);imshow(f);title('(d)仅对HIS相等图像的亮度分量进行平滑的结果');

代码运行效果如下:


编写代码:

fc=imread('D:\数字图像处理\第六章学习\flower6.tif');
h = rgb2hsi(fc);
H = h(:, :, 1);
S = h(:, :, 2);
I = h(:, :, 3);
w = fspecial('average', 25);
H_filtered = imfilter(H, w, 'replicate');
S_filtered = imfilter(S, w, 'replicate');
I_filtered = imfilter(I, w, 'replicate');
h=cat(3,H_filtered,S_filtered,I_filtered);   %构造多维数组,即合并3分量图像为一副彩色图像
f=hsi2rgb(h);
subplot(1,2,1);imshow(fc);title('(e)RGB图像');
subplot(1,2,2);imshow(f);title('(f)平滑所有三个 HIS 分量的结果 ');

代码运行效果如下:


实验总结

显然,滤波后的两种结果不同。例如,除图像有点模糊以外,图 (d)中花朵顶部出现模糊的绿色边缘。原因是通过平滑处理,亮度分量值的变化减少了,但色调和饱和度分量没有变化。合乎逻辑的情况是用相同的滤波器去平滑所有的三个 HSI 分量,然而,这将改变色调和饱和度值之间的相对关系,这样会产生无意义的结果,如图 (f)所示。特别是在这幅图像中,图像中围绕着花朵的较亮绿色边缘,还有围绕着中心黄色区域的边界,这个效果也是十分明显的。 一般来说,当模板的尺寸减小时,对 RGB 分量图像进行滤波和对同一图像的 HSI 亮度分量进行滤波时,得到的差别也减少了,这一点可以从小女孩图像看出。

5.2 彩色图像的锐化处理

在图像增强中,平滑是为了消除图像中噪声的干扰,或者降低对比度,与之相反,有时为了强调图像的边缘和细节,需要对图像进行锐化,提高对比度。

预备知识

拉普拉斯锐化图像是根据图像某个像素的周围像素到此像素的突变程度有关,也就是说它的依据是图像像素的变化程度。当邻域中心像素灰度于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像的锐化处理。

一个函数的一阶微分描述了函数图像是朝哪里变化的,即增长或者降低;而二阶微分描述的则是图像变化的速度,急剧增长下降还是平缓的增长下降。那么据此我们可以猜测出依据二阶微分能够找到图像的色素的过渡程度,例如白色到黑色的过渡就是比较急剧的。

首先推导二阶微分与像素的关系,先看一阶偏微分和推出的二元函数微分:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一阶微分法能够用来检测边缘是否存在。那么二阶微分法,也就是拉普拉斯算子就可以确定边缘的位置。

这样可以找到一个模板矩阵:
在这里插入图片描述
这个四邻域对应上面的二阶微分法
在这里插入图片描述
八领域的表示法为:
在这里插入图片描述
从上面的两种模板中就可以看出,如果一个黑色平面中有一个白点,那么模板矩阵可以使这个白点更亮。由于图像边缘就是灰度发生跳变的区域,所以拉普拉斯模板对边缘检测很有用。

将算得的值替换原(x,y)处的像素值,可以得到类似边界的地方,然后根据下式得到锐化图像:
在这里插入图片描述
编写代码:

%拉普拉斯算子锐化图像,用二阶微分
%四邻接g(x,y)=[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]-4f(x,y)
I1=imread('D:\数字图像处理\第六章学习\jimei2.png');
I=im2double(I1);
[m,n,c]=size(I);
A=zeros(m,n,c);
%分别处理R、G、B
%先对R进行处理
for i=2:m-1
    for j=2:n-1
        A(i,j,1)=I(i+1,j,1)+I(i-1,j,1)+I(i,j+1,1)+I(i,j-1,1)-4*I(i,j,1);
    end
end

%再对G进行处理
for i=2:m-1
    for j=2:n-1
        A(i,j,2)=I(i+1,j,2)+I(i-1,j,2)+I(i,j+1,2)+I(i,j-1,2)-4*I(i,j,2);
    end
end

%最后对B进行处理
for i=2:m-1
    for j=2:n-1
        A(i,j,3)=I(i+1,j,3)+I(i-1,j,3)+I(i,j+1,3)+I(i,j-1,3)-4*I(i,j,3);
    end
end
B=I-A;

 imwrite(B,'jimei3.png','png');
 imshow('D:\数字图像处理\第六章学习\jimei2.png');title('不清晰图像');figure
 imshow('jimei3.png');title('得到的清晰图像')

代码运行效果如下:

实验总结

从图像可以看出,拉普拉斯锐化模板在边缘检测中很有用,图像边缘变得非常清晰,对比度明显,细节部分有所增强,不管是荷叶,建筑物,小亭子,蓝色的天空背景都比原图要更亮一点,可以验证拉普拉斯锐化图像原理,当邻域中心像素灰度低于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度高于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像的锐化处理。

根据课本,从向量分析中,知道向量的拉普拉斯被定义为矢量,它们的分量等于输入向量的分量的拉普拉斯。在 RGB彩色系统中,引入的矢量 c 的拉普拉斯是:
在这里插入图片描述
这说明,可以通过分别计算每个分量图像的拉普拉斯来计算全彩图像的拉普拉斯。

编写代码:

fb=imread('D:\数字图像处理\第六章学习\flower7.tif');
lapmask = [1 1 1;1 -8 1;1 1 1];    %拉普拉斯算子
fb = tofloat(fb);
fen = fb - imfilter(fb, lapmask, 'replicate');
subplot(2, 2, 1), imshow(fb);title('(a)模糊图像');
subplot(2, 2, 2), imshow(fen);title('(b)用拉普拉斯增强图像');

代码运行效果如下:

图(a)显示了稍微有点模糊的图,为了锐化这幅图像,使用拉普拉斯滤波模板,对RGB 图像直接用imfilter滤波,图 (b)显示了结果,图像在锐度特性上的显著加强,比如水滴、叶子上的纹路、花朵黄色的中心和前景中明显的绿色植物。

(六) 直接在 RGB 矢量空间中处理

基于单独彩色平面的处理不等于直接在 RGB矢量空间中进行的计算。下面通过考虑彩色图像处理的两个重要应用来说明矢量处理:彩色边缘检测和区域分割。

6.1 使用梯度的彩色边缘检测

2D函数 f(x,y)的梯度定义为如下矢量:
在这里插入图片描述
这个矢量的大小是:
在这里插入图片描述
通常,这个数量用绝对值来近似:
在这里插入图片描述
这个近似值避免了平方和开方计算,但是仍然具有推导过的特性(例如在常数区域为 0,在 像素值变化的区域,幅度与变化程度成比例)。在通常的应用中,把梯度的幅值简单地作为梯度。

梯度向量的基本特性是在 f 坐标(x, y)处指向最大变化率的方向。最大变化率发生的角度是:
在这里插入图片描述
按照惯例,这个导数用在一幅图像中某个小邻域内像素值的差来近似。下图显示了 3×3 大小的邻域,这里的 z 代表亮度值。在区域中心点 x方向上(垂直)的偏微分的近似由下边的差给出:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
类似的,y 方向上的微分由下面的差近似:
在这里插入图片描述
此刻,主要讨论是在 RGB 彩色空间中计算梯度。然而,刚刚推导的方法可应用于 2D空间,但是不能扩展到高维空间。将之运用到 RGB图像的唯一方法是计算每个彩色图像分量的梯度,然后合并结果。遗憾的是,这与直接在 RGB向量空间中计算边缘是不同的。问题是定义过的向量 c 的梯度。下面是可选的各种方法之一,在这里,梯度的概念可延伸到向量函数。

令r、g和b是 RGB彩色空间沿 R、G、B 轴的单位矢量,定义矢量:
在这里插入图片描述

在这里插入图片描述
根据这些矢量的点积,定义 gxx、gyy和 gxy:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
记住 R、G 和 B,因而 g 是 x 和 y 的函数。使用这种符号,可以说明——c(x,y)的最大变化率方向将作为(x,y)函数由角度给出:
在这里插入图片描述
并且在该方向上,由 θ(x,y)给出的变化率的值(例如梯度值)由下式给出:

数组θ(x,y)和FθF_θ(x,y)是与输入图像尺寸相同的图像。θ(x,y)的元素是用于计算梯度的每个
点的角度,并且FθF_θ(x,y)是梯度图像。

使用梯度的彩色边缘检测,目的是标识数字图像中亮度变化明显的点。下面的函数用来计算彩色图像的梯度:

[VG,A,PPG] = colorgrad(f,T)

其中, f是 RGB图像, T是[0,1]范围内的阈值选项(默认为 0);VG是 RGB向量梯度 Fθ(x, y); A 是以弧度计的角度 θ(x, y),并且 PPG 是由单独彩色平面的 2D 梯度之和形成的梯度图像。

代码编写:

fc=imread('D:\数字图像处理\第六章学习\sun.jpg');
[VG,A,PPG]=colorgrad(fc,0.5);%VG为向量梯度,A为向量角度,PPG为计算每一维梯度后合成  
subplot(2, 2, 1), imshow(fc);title('(a)原图像');
subplot(2, 2, 2), imshow(VG);title('(b)T=0.5,在rgb空间计算梯度图像');
subplot(2, 2, 3), imshow(PPG);title('(c)T=0.5,分别在rgb计算梯度然后相加');
subplot(2, 2, 4), imshow(abs(VG-PPG),[]);title('(d)T=0.5,2种梯度的绝对值');   

代码运行效果如下:

向日葵图像分别在T=0,T=0.5,T=1时的图像:


夜晚建筑物图像分别在T=0,T=0.5,T=1时的图像:


带亮点小孩人脸图像分别在T=0,T=0.5,T=1时的图像:


实验总结

对于同一张图的不同处理,T值越小能够检测的边线越多,越容易从图像中挑出不相关信息;T越大,会丢失细的或者短的线条,当T=0时检测的边线最多,当T=1时,几乎检测不到边线,图像为纯黑色。通过合并单独彩色平面的梯度来计算彩色图像的梯度,与直接在 RGB 向量空间中计算梯度得到的效果也是不同的;直接在 RGB 向量空间中计算梯度得到的图像效果要好一点,边线更多;两种梯度的绝对差检测的边线最少。对于不同的图像,在同样的T值情况下,图像清晰,边缘界限明显,颜色对比度大的图像检测到的边线会更多(例如向日葵图像),图像整体偏暗,边缘分界线不明显的图像检测到的边线相对少一点(例如夜晚建筑物图像),当T值越来越大时,所有图像检测的边线会越来越少,但是图像中含有明显黑白对比度大的部分,白色部分边线会更清晰的检测出来,算法在这方面优势更明显(例如小孩头发上的亮点线)。

6.2 在 RGB向量空间中分割图像

分割的目的是对图像中的每个 RGB 像素进行分类,使之在指定的范围内有或没有一种颜色。为了执行这 一比较,拥有相似性度量是必要的。最简单的度量之一是欧几里德距离。令 z表示 RGB空间的任意点。如果它们之间的距离小于指定的阈值 T,那么 z 相似于 m。z 和 m 之间的欧几里德距 离由下式给出:
在这里插入图片描述
在这里,||.||是参量的范数,并且下标 R、G、B 表示向量 m 和 z 的 RGB 分量。点的轨迹 D(z,m)≤T是半径为 T的球,根据定义,包括在球的内部或表面 的点满足特定的彩色准则,球外部的点则不满足。在图像中对这两组点编码,比如黑的和白的, 将会产生分割的二值图像。上述方程的有用归纳是距离度量形式:
在这里插入图片描述
在刚才描述的方法中,分割通过函数colorseg实现,语法如下:

S = colorseg(method, f, T, parameters)

在这里,method 不是’euclidean’就是’mahalanobis’,f 是待分割的 RGB 彩色图
像, T是前边描述的阈值。如果选择’eucliden’,输入参量将是m,如果选择’mahalanobis’, 将是m和c。参数m是均值 m, c是协方差矩阵 C。输出S 是二值图像(和原始图像的大小相同), 包括 0s。阈值测试失败的点为 0,通过阈值测试的点为 1。1 表示基于彩色内容从f 分割出的区域。

预备知识

马氏距离:马氏距离(Mahalanobis distance)表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是,它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的),并且是尺度无关的,即独立于测量尺度
对于一个均值为在这里插入图片描述协方差矩阵为∑的多变量向量在这里插入图片描述其马氏距离为
在这里插入图片描述
马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量x与y的差异程度:
在这里插入图片描述
如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧式距离,如果协方差矩阵为对角阵,则其也可称为正规化的欧氏距离’.
在这里插入图片描述
欧式距离:最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,如点 x = (x1,…,xn) 和 y = (y1,…,yn) 之间的距离为:
在这里插入图片描述
欧氏距离虽然很有用,但也有明显的缺点。它将样品的不同属性(即各指标或各变量量纲)之间的差别等同看待,这一点有时不能满足实际要求。例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区分个体有着不同的重要性。因此,欧氏距离适用于向量各分量的度量标准统一的情况。

RGB彩色图像分割

编写代码:

f = imread('D:\数字图像处理\第六章学习\sun.jpg');
imshow(f);
title('原图像');
figure,mask=roipoly(f);%roipoly为选择感兴趣的多边形
red=immultiply(mask,f(:,:,1));%immultipy函数为2幅图像对应的元素相乘
green=immultiply(mask,f(:,:,2));
blue=immultiply(mask,f(:,:,3));
g=cat(3,red,green,blue);%将对应的3个分量重新组合
figure,imshow(g);title('用函数roipoly交互式地提取感兴趣的区域');

代码运行效果如下:

编写代码:

f = imread('D:\数字图像处理\第六章学习\girl.png');
imshow(f);
title('原图像');
figure,mask=roipoly(f);%roipoly为选择感兴趣的多边形
red=immultiply(mask,f(:,:,1));%immultipy函数为2幅图像对应的元素相乘
green=immultiply(mask,f(:,:,2));
blue=immultiply(mask,f(:,:,3));
g=cat(3,red,green,blue);%将对应的3个分量重新组合
figure,imshow(g);title('用函数roipoly交互式地提取感兴趣的区域');
[M,N,K]=size(g);%这里k为3
I=reshape(g,M*N,3);%I为M*N行,3列的数组
idx=find(mask);
I=double(I(idx,1:3));
[C,m]=covmatrix(I);%计算出协方差矩阵C和均值m
d=diag(C);%方差
sd=sqrt(d);%标准差

E25=colorseg('euclidean',f,25,m);%使用欧式距离进行彩色分割
figure,subplot(2,2,1),imshow(E25);
title('(a)使用euclidean,T=25分割效果');

E50=colorseg('euclidean',f,50,m);
subplot(2,2,2),imshow(E50);
title('(b)使用euclidean,T=50分割效果');

E75=colorseg('euclidean',f,75,m);
subplot(2,2,3),imshow(E75);
title('(c)使用euclidean,T=75分割效果');

E100=colorseg('euclidean',f,100,m);
subplot(2,2,4),imshow(E100);
title('(d)使用euclidean,T=100分割效果');

M25=colorseg('mahalanobis',f,25,m,C);%使用马氏距离分割
figure,subplot(2,2,1),imshow(M25);
title('(e)使用mahalanobis,T=25分割效果');


M50=colorseg('mahalanobis',f,50,m,C);
subplot(2,2,2),imshow(M50);
title('(f)使用mahalanobis,T=50分割效果');


M75=colorseg('mahalanobis',f,75,m,C);
subplot(2,2,3),imshow(M75);
title('(g)使用mahalanobis,T=75分割效果');


M100=colorseg('mahalanobis',f,100,m,C);
subplot(2,2,4),imshow(M100);
title('(h)使用mahalanobis,T=100分割效果');

代码运行效果如下:




过程分析

由上图可以看出,用函数roipoly交互式地提取感兴趣的区域,得到的结果图像就是想要的区域,而使用’mahalanobis’选项获得的结果与使用’Euclidean’选项获得的结果都与感兴趣的区域有差异,只能得出T越大,分割的图像越明显的结论,但是目前根据这两幅图,确实分析不到为什么结果图与理想结果图差距这么大的原因。

考虑马氏距离与欧式距离特性:马氏距离考虑到各种特性之间的联系,欧式距离将样品的不同属性(即各指标或各变量量纲)之间的差别等同看待,做出是否存在匹配原因的猜想,换一张图继续实验。



实验总结

图像选取的向日葵图像,但是这次并没有选择分割图像主要部分向日葵,选择分割绿叶,因为从最上面的小女孩图像的分割,可以看出使用’mahalanobis’选项分割图像中唯一人像小女孩,结果图为空白,猜想是否存在匹配原因,mahalanobis会识别图像的类似部分分割,而小女孩图像中只有一个小女孩,所以它匹配不到图像中的相似部分,这也可以解释为什么建筑物图像使用’mahalanobis’选项会出现图像而不是空白,而建筑物图像中截取了建筑物的一小部分,所以会匹配到建筑物的其他部分显示出来,这也可以解释为什么刚好截取的那部分建筑物片段并没有显示出来(小女孩也没有显示出来)。但是截取的绿叶部分竟然在’mahalanobis’选项图中出现,证明我的猜想存在漏洞,后面学习更多知识后再来解释,也希望有其他猜想的博主一起讨论

'Euclidean’选项分割图像随着T值越大,分割的范围也越大,会把图像中颜色相近的部分都分割掉,可以观察当T为75,100的时候,几乎把所有的绿叶都分割掉,不管是浅绿色还是深绿色,而颜色接近的黄色到最后都被分割掉,可以解释欧式距离将样品的不同属性(即各指标或各变量量纲)之间的差别等同看待

但是使用’mahalanobis’选项分割图像具有一定的原则,截取的浅绿色叶子,不管是后来的T=50,75,100,都会选择范围内的浅绿色叶子截取,所以相对而言如果追求分割的准确度使用马氏距离彩色分割算法优势明显

该原理应该可以不止用在图像分割,图像匹配,人脸识别各种应该也能用到,百度后发现很早就有基于马氏距离的半监督鉴别分析及人脸识别等,慢慢再深入学习吧。

2016-09-25 11:27:35 hjrcrj 阅读数 357
  • Kaggle 神器:XGBoost 从基础到实战

    主讲老师冒老师为计算机博士,现在中科院从事科研教学工作,十余年机器学习教学经验,主持国家级科研项目3项,研究方向为机器学习、计算机视觉及多媒体处理。 XGBoost是"极端梯度提升"(eXtreme Gradient Boosting)的简称。XGBoost源于梯度提升框架,但是能并行计算、近似建树、对稀疏数据的有效处理以及内存使用优化,这使得XGBoost至少比现有梯度提升实现有至少10倍的速度提升。XGBoost可以处理回归、分类和排序等多种任务。由于它在预测性能上的强大且训练速度快,XGBoost已屡屡斩获Kaggle各大竞赛的冠军宝座。

    39272 人正在学习 去看看 AI100讲师

数字图像处理主要内容

  1. 图像获取表示和表现:图像模数转换,数字图像打印
  2. 图像复原:提高图像品质(退化原因已知)
  3. 图像增强:提高图像品质(退化原因已知)
  4. 图像分割:计算机把一副图像中的不同物体区分出来
  5. 图像分析:图像的特征提取,分类,识别,理解
  6. 图像重建:根据输入数据,转化出图像
  7. 图像压缩编码:压缩大数据量图像,便于存储和传输

数字图像

表示

用一个MxN矩阵,左上角(0,0),右下角M-1,N-1,表示图像,矩阵每一个元素都是一个像素。

灰度

灰度值0-255,表示从暗到明,用不同灰度值把采样的连续值表示出来。

颜色

每一个像素,用RGB三个值表示,三个值取值范围都是[0-255],共有255*255*255种可能,可以表示很多颜色,

分类

  1. 矢量图:用公式描述一幅图像,数据量小且缩放图像不失真,不易制作色彩丰富图像。
  2. 位图:用像素矩阵表示,色彩丰富,数据量大。

图像增强

灰度变换

灰度范围从[a,b]分段线性变换或非线性变换到[c,d]。

直方图

灰度级的函数,所有灰度出现频率统计的结果,与位置无关。
,反应了图像中每一灰度级出现的次数或频率。

均衡化

把分布集中的直方图,图像形状不变,均匀分布,增强图像对比度。

规定化

直方图按照设定的规则变化。

图像平滑

噪声

图像中,本不该出现的内容,频域中高频分量。

模板卷积

一个存储加权系数的3x3矩阵,与原图像函数卷积运算

卷积

函数A作用到函数B,设定一个区间,加权这段区间中A对B的所有影响,权值一般随时间递减或递增。

邻域平均

卷积模板实现用一个像素A相邻的像素的平均值或加权平均值表示像素A,然后把卷积算子与原图像卷积。

中值滤波

以像素中心做正方形窗,窗内所有灰度值从小到大排序,取中值作为输出结果,把窗内的所有值都换成这个中值。

图像平均

同一景物的多幅图像的矩阵累加,再取平均值。

图像锐化

梯度算子

图像是在x,y轴上的矩阵,梯度矩阵就是根据偏导x,和偏导y组成的矩阵,梯度就是求偏导,就是高中学的斜率,反应图像灰度变化的情况,二阶微分就是求两次导也叫二阶偏导,反应变化的变化率。和路程除以时间等于速度,速度求导等于加速度之类的类似。

拉普拉斯算子

实现在x和y方向求2阶偏导的一个2x2卷积矩阵。

锐化

把一个图像f(x,y)与梯度算子或拉普拉斯算子卷积后得到的矩阵就是锐化后的图像

非锐化滤波

原图像矩阵减去锐化后的矩阵

高频增强滤波

原图像矩阵加上锐化后的矩阵

伪彩色处理

  1. (时域)把不同灰度区间用不同的颜色表示
  2. (频域)不同频率用不同颜色表示

同态滤波

根据光照变化,自动调整图像质量

2019-01-03 22:19:26 sunshine_lyn 阅读数 6388
  • Kaggle 神器:XGBoost 从基础到实战

    主讲老师冒老师为计算机博士,现在中科院从事科研教学工作,十余年机器学习教学经验,主持国家级科研项目3项,研究方向为机器学习、计算机视觉及多媒体处理。 XGBoost是"极端梯度提升"(eXtreme Gradient Boosting)的简称。XGBoost源于梯度提升框架,但是能并行计算、近似建树、对稀疏数据的有效处理以及内存使用优化,这使得XGBoost至少比现有梯度提升实现有至少10倍的速度提升。XGBoost可以处理回归、分类和排序等多种任务。由于它在预测性能上的强大且训练速度快,XGBoost已屡屡斩获Kaggle各大竞赛的冠军宝座。

    39272 人正在学习 去看看 AI100讲师

复习着感觉记不住,于是乎,有了这篇博文,如果也同样选修了数字图像处理课程的小伙伴们可以参考一哈! 纯手码字…逢考必过!

概念

采样与量化

  • 灰度变换缓慢的景物:粗采样、细量化
  • 有大量细节变化的图像:细采样、粗量化
    采样不够出现马赛克;量化不够出现假轮廓

锐化:突出灰度的过渡部分(增强图像的细节边缘和轮廓,有利于图像的处理)

  • 方法:微分法高通滤波
  • 微分法包括梯度算子法拉普拉斯算子法;高通滤波包含空域高通滤波频域高通滤波

平滑:用于模糊处理和降低噪声

  • 例:低通滤波、均值滤波、中值滤波(属于局部处理)

平滑和锐化
区别:图像锐化用于增强图像边缘,导致高频分量增强,会使图像清晰;图像平滑用于消除图像噪声,但也容易引起边缘的模糊
联系:都属于图像增强,改善图像效果

图像增强:通过某种技术有选择的突出对某一具体应用有用的信息,削弱或抑制一些无用的信息

  • 基于图像的灰度直方图,根据所在空间不同,分为空域和频域两种
  • 常用的彩色增强有:真彩色增强技术、假彩色增强技术、伪彩色增强技术

一阶微分:用梯度算子来计算

  • 特点:对于亮的边,边的变化起点是正的,结束是负的;对于暗的边,结论相反;常数部分为0
  • 用途:用于检测图像中边的存在
    在这里插入图片描述

二阶微分:用拉普拉斯算子来计算

  • 特点:二阶微分在亮的一边是负的,在暗的一边是正的。常数部分为0
  • 用途:
    • 二次导数的符号,用于确定边上像素是亮的一边还是暗的一边。
    • 0跨越,确定边的准确位置

一阶微分算子和二阶微分算子在提取图像细节信息时有何不同?
一阶微分算子产生较粗的边缘,二阶微分算子处理对细节有较强的响应,如细线和孤立点。二阶微分有一个过度,即从正回到负。在一幅图像中,该现象表现为双线。

点处理

  • 例:二值化

灰度方差:说明图像对比度(方差小,对比度小;方差大,对比度大)

直方图均衡化:对在图像中像素的个数多的灰度级进行展宽,而对像素个数少的灰度级进行缩减,从而达到清晰图像的目的。

图像分割的结果图像为二值图像,所以通常又称为图像分割为图像的二值化处理

腐蚀是一种消除连通域边界点,使边界向内收缩的处理
膨胀是将与目标区域背景点合并到该目标物中,使目标物边界向外部扩张的处理

只存在噪声的复原——空间滤波

均值滤波器:

  • 算术均值滤波器(最简单的均值滤波器)
  • 几何均值滤波器(几何均值滤波器比算术减少了对图像的模糊)
  • 谐波均值滤波器(对于"盐"噪声较好,但不适用于"胡椒"噪声;善于处理高斯噪声)
  • 逆谐波均值滤波器

统计排序滤波器:

  • 中值滤波器(过度重复使用可能会对图像造成模糊)
  • 最大值和最小值滤波器(对于胡椒噪声(暗,值非常低),用最大值滤波器,发现图像中最亮点非常有用;对于盐粒噪声,用最小值滤波器,发现图像中最暗点非常有用)
  • 中点滤波器
  • 修正后的阿尔法均值滤波器

由于脉冲噪声(椒盐噪声)的存在,算术均值滤波器和几何均值滤波器没有起到良好作用;中值滤波器和阿尔法滤波器效果更好,阿尔法最好。


共点直线群Hough变换是一条正弦曲线

边缘检测是将边缘像元识别出来的一种图像分割技术
细化:提取线宽为一个像元大小的中心线操作

图像复原的关键是建立退化模型,原图像f(x,y)是通过一个系统H及加入加性噪声n(x,y)而退化成一幅图像g(x,y)的,g(x,y)=H[f(x,y)]+n(x,y)g ( x , y ) = H [ f ( x , y ) ] + n ( x , y )

几种噪声的运用

  • 高斯噪声源于电子电路噪声和由低照明度或高温带来的传感器噪声
  • 瑞利噪声对分布在图像范围内特征化噪声有用
  • 伽马分布和指数分布用于激光成像噪声
  • 均匀密度分布作为模拟随机数产生器的基础
  • 脉冲噪声用于成像中的短暂停留中,如错误的开关

维纳滤波(最小均方误差)通常用于复原图像,在对图像复原过程中要计算噪声功率谱图像功率谱

彩色图像增强时,加权均值滤波处理可以采用RGB彩色模型

马赫带效应是指图像不同灰度级条带之间在灰度交界处存在毛边现象

采用幂次变换进行图像灰度变换时,若图像偏亮,那么幂次取大于1,使得处理后图像变暗;若图像偏暗,那么幂次取小于1,使得处理后图像变亮;

高通滤波后的图像通常较暗,为改善这种情况,将高通滤波器的转移函数加上一常量以便引入一些低频分量。这样的滤波器叫做高频提升滤波器

边缘检测算子中,抗噪性能最好的是Prewitt算子

链码:1)对于起点不一样导致结果不同,采用起点均一化,2)对于角度位置等不同导致的结果不一,采用差分(当前点值减去前一个值作为结果)


简答

当白天进入一个黑暗剧场时,在能看清并找到空座位时需要一段时间的适应,试述发生这种现象的视觉原理?
人的视觉绝对不能同时在整个亮度适应范围工作,它是利用改变其亮度适应级来完成亮度适应的,即所谓的亮度适应范围。同整个亮度适应范围相比,能同时鉴别的光强度级的总范围很小。因此,白天进入黑暗剧场时,人的视觉系统需要改变亮度适应级,因此,需要一段时间,亮度适应级才能被改变。


图像锐化滤波的几种方法
1.直接以梯度值代替
2.辅以门限判断
3.给边缘规定一个特定的灰度级
4.给背景规定灰度级
5.根据梯度二值化图像


什么是马赫带效应,如何利用这一效应对图像处理?
原理:指图像不同灰度级条带之间在灰度交界处产生的毛边现象,使图像对比度加大,增加相邻灰度级的灰度差
增加灰度级、灰度差,达到锐化效果


伪彩色增强和假彩色增强有何异同?
伪彩色增强是对一幅灰度图像经过三种变换得到三幅图像,进行彩色合成得到一幅彩色图像;
假彩色增强则是对一幅彩色图像进行处理得到与原图像不同的彩色图像;

  • 主要差异:处理对象不同
  • 相同点:利用人眼对彩色的分辨能力高于灰度分辨能力的特点,将目标用人眼敏感的颜色表示

什么是中值滤波,有何特点?
中值滤波是指将当前像元的窗口(或频域)中所有像元灰度由小到大排序,中间值作为当前像元的输出值
特点:是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘少受模糊

对于椒盐噪声,为什么中值滤波效果比均值滤波效果好?
椒盐噪声是复制近似相等但随机分布在不同的位置上,图像中有干净点也有污染点。中值滤波是选择适当的点来代替污染点的值,所以处理效果好。因为噪声的均值不为0,所以均值滤波不能很好地去除噪声


什么是直方图均衡化?
将原图像的直方图通过变换函数修正为均匀的直方图,然后按均衡直方图修正原图像。图像均衡化处理后,图像的直方图是平直的,即各灰度级具有相同的出现频数,那么由于灰度级具有均匀的概率分布,图像看起来就更清晰了


图像增强的目的是什么?(灰度变换、直方图修正、图像锐化、图像平滑)
图像增强的目的是为了改善图像的视觉效果,针对给定图像的应用场合,有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。
图像增强时,平滑和锐化具有哪些实现方法?
平滑:领域平均法(均值滤波)中值滤波多图像平均法频域低通滤波法
锐化:微分法高通滤波法


简述梯度法与 Laplacian 算子检测边缘的异同点?
答:梯度算子和 Laplacian 检测边缘对应的模板分别为
在这里插入图片描述
梯度算子是利用阶跃边缘灰度变化的一阶导数特性,认为极大值点对应于边缘点;而 Laplacian 算子检测边缘是利用阶跃边缘灰度变化的二阶导数特性,认为边缘点是零交叉点。


简述基于边缘检测的霍夫变换的原理?
把直线上的点的坐标变换到过点的直线的系数域,通过利用共线和直线相交的关系,使直线的提取问题转化为计数问题


计算题

Sobel算子
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

直方图均衡化(离散情况、连续情况),下面这题为离散情况的

下面这题为连续情况:
在这里插入图片描述


理想低通滤波器的截止频率选择不恰当时,会有很强的振铃效应。试从原理上解释振铃效应的产生原因。

答:理想低通滤波器(频域)的传递函数为:H(u,v)={1D(u,v)D00D(u,v)>D0H ( u , v ) = \left\{ \begin{array} { l l } { 1 } & { D ( u , v ) \leq D _ { 0 } } \\ { 0 } & { D ( u , v ) > D _ { 0 } } \end{array} \right.

滤波器半径交叉部分(侧面图):

对应空间域(进行傅立叶反变换,为sinc函数):

用理想低通滤波器滤波时,频域:G(u,v)=F(u,v)H(u,v)G ( u , v ) = F ( u , v ) H ( u , v )

傅立叶反变换到时域有:g(x,y)=f(x,y)h(x,y)g ( x , y ) = f ( x , y ) * h ( x , y )

频域相乘相当于时域作卷积。因此,图像经过理想低通滤波器后,时域上相当于原始图像与sinc函数卷积,由于sinc函数振荡,则卷积后图像也会振荡;或者说由于sinc函数有两个负边带,卷积后图像信号两侧出现“过冲现象”,而且能量不集中,即产生振铃效应。若截止频率越低,即D0越小,则sinc函数主瓣越大,表现为中心环越宽,相应周围环(旁瓣)越大。而中心环主要决定模糊,旁瓣主要决定振铃效应。因此当截止频率较低时,会产生很强的振铃效应。选择适当的截止频率,会减小振铃效应

PS:这里的时域也就是空间域


逆滤波时,为什么在图像存在噪声时,不能采用全滤波?试采用逆滤波原理说明,并给出正确的处理方法。

复原由退化函数退化的图像最直接的方法是直接逆滤波,在该方法中,用退化函数除退化图像的傅里叶变换来计算原始图像的傅里叶变换。

F^(u,v)=G(u,v)H(u,v)=F(u,v)+N(u,v)H(u,v)\hat { F } ( u , v ) = \frac { G ( u , v ) } { H ( u , v ) }= F(u,v) + \frac { N(u,v) } { H(u,v)}

上式说明即使知道退化函数,也不能准确地复原未退化的图像。因为噪声是一个随机函数,其傅氏变换未知。并且,实际应用逆滤波复原方法时存在病态的问题,即如果退化为零或非常小的值,则N(u,v)/H(u,v)之比很容易决定复原函数的值。

实验证明,当退化图像的噪声较小,即轻度降质时,采用逆滤波复原的方法可以获得较好的结果。通常,在离频率平面原点较远的地方数值较小或为零,因此图象复原在原点周围的有限区域内进行,即将退化图象的傅立叶谱限制在没出现零点而且数值又不是太小的有限范围内。

也就是说,解决退化函数为零或为非常小的值的问题的一种方法是,限制滤波的频率,使其接近原点。

逢考必过!锦鲤附体!逢考必过!锦鲤附体!逢考必过!锦鲤附体! 重要的事情说三遍!

2014-12-25 11:38:49 hh555800 阅读数 4187
  • Kaggle 神器:XGBoost 从基础到实战

    主讲老师冒老师为计算机博士,现在中科院从事科研教学工作,十余年机器学习教学经验,主持国家级科研项目3项,研究方向为机器学习、计算机视觉及多媒体处理。 XGBoost是"极端梯度提升"(eXtreme Gradient Boosting)的简称。XGBoost源于梯度提升框架,但是能并行计算、近似建树、对稀疏数据的有效处理以及内存使用优化,这使得XGBoost至少比现有梯度提升实现有至少10倍的速度提升。XGBoost可以处理回归、分类和排序等多种任务。由于它在预测性能上的强大且训练速度快,XGBoost已屡屡斩获Kaggle各大竞赛的冠军宝座。

    39272 人正在学习 去看看 AI100讲师

     首先要知道梯度是个什么概念,在数学中我们知道梯度是一个向量,函数在一点的梯度在数学上它是这么定义的:它的方向是函数在这点的方向导数取得最大值的方向,它的模就等于方向导数的最大值。


   梯度经常用robert交叉微分算子,Prewitt微分算子,sobel算子来实现。


   梯度经常应用在图像的边缘检测和边缘增强上面,这和它的一阶微分性质有关。


   梯度赋值具有旋转不变性。


   下面实现一个sobel实现边缘检测:

close all;clear all;clc;
%input = [1 1 1 1 1; 1 1 1 1 2 ;1 1 1 1 1 ];
input = imread('lena.bmp');
% mask = 1 / 16 * [1 2 1; 2 4 2; 1 2 1];  % 考虑3*3的滤波模板
mask = [1 2 1;0 0 0 ;-1 -2 -1]; % sobel算法(注意需要求两个边缘)

% 使用库函数实现(在对sobel求取边缘的时候貌似也得分别求水平和垂直边缘)
img_h = imfilter(double(input), mask, 'conv', 0, 'full');     %求竖边缘
img_w = imfilter(double(input), mask','conv', 0, 'full');     %求横边缘
output1 = sqrt(img_w.^2 + img_h.^2);        % 注意这里不是简单的求平均,而是平方和在开方

% 下面自己实现
[m, n] = size(input);
% 先填充输入图像,这里依旧通过0来填充外边界
input_temp = zeros(m + 4, n + 4);

% 初始化输入图像
input_temp(3: m + 3 - 1, 3: n + 3 - 1) = input;

% 让模板滑过扩展的输入向量
xx = size(input_temp, 1) - 3 + 1;
yy = size(input_temp, 2) - 3 + 1;
output = zeros(xx,yy);

for i = 1: xx
    for j = 1: yy
        output(i, j) = sum( sum( input_temp(i: i + 3 - 1 , j : j + 3 - 1) .* mask ) ) ;    % 求竖边缘
    end
end
for i = 1: xx
    for j = 1: yy
        %注意这里不是简单的求平均,而是平方和在开方。
        output(i, j) = sqrt( output(i,j)^2 + sum( sum( input_temp(i: i + 3 - 1 , j : j + 3 - 1) .* mask' ) )^2 ); % 求横边缘
    end
end
fprintf('调用库函数imfilter完成相关运算');
% output1
% output
subplot(131);imshow( uint8(input) );  title('原图像');
subplot(132);imshow( uint8(output1) );title('调用库函数实现sobel边缘检测');
subplot(133);imshow( uint8(output) ); title('自己实现sobel边缘检测');

% 看自己的滤波函数是否有问题
equal = sum(sum(output1 ~= output))   % equal = 0 表示处理后的结果一样

运行结果图:


调用库函数imfilter完成相关运算
equal =

       0    

equal等于0,表明自己实现的均值滤波和库函数得到同样的结果。


ok,搞定!!!!



2017-09-04 08:28:47 HNU_wang_chao 阅读数 944
  • Kaggle 神器:XGBoost 从基础到实战

    主讲老师冒老师为计算机博士,现在中科院从事科研教学工作,十余年机器学习教学经验,主持国家级科研项目3项,研究方向为机器学习、计算机视觉及多媒体处理。 XGBoost是"极端梯度提升"(eXtreme Gradient Boosting)的简称。XGBoost源于梯度提升框架,但是能并行计算、近似建树、对稀疏数据的有效处理以及内存使用优化,这使得XGBoost至少比现有梯度提升实现有至少10倍的速度提升。XGBoost可以处理回归、分类和排序等多种任务。由于它在预测性能上的强大且训练速度快,XGBoost已屡屡斩获Kaggle各大竞赛的冠军宝座。

    39272 人正在学习 去看看 AI100讲师

最近在学习神经元追踪这一个课题,在追踪中涉及到一个重要的算法就是这个梯度下降算法。

其实,梯度下降算法数学本质上是一个求解最优解的一个方法,但应用到数学图像处理中的话就有了他的物理意义,即从起始点到目的点的迭代次数最少的算法。

从起始点,以步长为半径,对损失函数求一阶导数(梯度)找到梯度最大的那个放下,通俗的讲就是你站在山顶你要去山下,梯度下降算法即代表这你刚开始就是找的最陡峭的一个坡下去,迭代完成一次之后重复第一次的步骤,直到到达终点。

数字图像处理

阅读数 510

图像处理中的梯度

阅读数 10261

没有更多推荐了,返回首页