lcytms
发表于 2017-5-2 10:47:44
0926
它会用到周围这一圈9个点的值,我们要计算对应Z5这个坐标。
这个像素,做它的计算。
lcytms
发表于 2017-5-2 10:49:06
0927
原本的像素,它的亮度值,我写成是Is。
那么经过函数的转换,这个函数可能是Sobel,也可能是中值滤波,也可能是我们现在做的动画,平均数。
600*400的原始图像转换成600*400的动画图像。
如果做Photoshop,一个原图,一个目标图像。
它的值,使用对应的平均值来做的。
lcytms
发表于 2017-5-2 10:50:09
0928
这个Is对应的坐标,是Z5。
代入公式里面,算平均值。
lcytms
发表于 2017-5-2 10:50:53
0929
总共是9个点的平均值。
对应的坐标是中间点的,是需要引用外围的8个点。
由此呢,把整个图像做完。
这样做会有一个问题,就是3*3的模板,是得不到最左边这一列,最右边这一列,顶上这一行,最下面这一行。
这4个边界是没有图像的,
lcytms
发表于 2017-5-2 10:53:50
0930
边上这一圈,最外围的这一圈,它的3*3的模板得不到有效的数据源的。
最外围这一圈怎么做呢?
冈萨雷斯也好,夏老师也好,都有他的处理方法。
夏老师,我们在这个教材里面,最外围这一圈全部填零。
这个是求平均数,动画的处理,我们也可以很容易地做一个动画的处理。
现在我们来看看它做图像边缘检测的算法。
lcytms
发表于 2017-5-2 10:55:34
0931
我现在举的这个例子是一个简单的例子,是动画的色彩。
动画非常简单,就求平均数,这个Fn就是对模板求平均数。
图像边缘是什么呢?
如果是对红绿蓝,我们要转成YUV,我们看它的亮度的图像。
因为其它三种模式都可以单独来做,单独做红,单独做蓝,单独做绿。
那么我们在图像边缘上呢,我们主要讨论它的亮度。
lcytms
发表于 2017-5-2 10:56:32
0932
为什么这么说呢?
什么是图像边缘?
图像边缘,不是小姑娘把它抠出来,而是用硬件逻辑,用算法把边沿要抠出来。
比方说像这个树叶的边缘,把它抠出来。
花的边缘。
如果它变成一张亮度的图像,就是黑白的图像,边缘有什么特征呢?
数学上有什么特征呢?
算法上告诉我们,图像的变化率,Sobel,图像边缘检测算法告诉我们,是亮度的变化率。
lcytms
发表于 2017-5-2 10:57:01
0933
亮度变化率大的地方,边缘一定会存在亮度变化大的地方。
图像的边缘一定是亮度急剧变化的地方。
什么是亮度的变化率呢?
亮度的变化率,就是亮度的导数。
我们知道,变化率嘛,导数就是变化率。
所以说呢,我们可以这么看,如果用图像在两个方向上的变化率。
lcytms
发表于 2017-5-2 10:59:13
0934
一张600*400的图像,它一定会存在在X方向,横轴方向上的亮度的变化率,纵轴方向亮度的变化率。
这就是亮度的变化率。
而图像边缘有可能发生在什么地方呢?
亮度变化率比较大的地方。
亮度明显发生变化的地方。
这个时候可能会得到边缘。
所以说呢,这个时候就需要计算出亮度的变化率。
lcytms
发表于 2017-5-2 11:05:54
本帖最后由 lcytms 于 2017-5-2 11:08 编辑
0935
就是把原始图像,做动画的时候把原始图像转成一个平均数的图像,平均数是3*3的模板算出来的。
我们要得到一张亮度变化率的图像,原始图像600*400,要得到一个导数的图像。
一个是X方向上的导数,一个是Y方向上的导数,所以说要得到绝对的倒数,应该是Dx2+Dy2开根号。
这个如果要在算法里面实现,首先要计算出X和Y方向的偏导数,其次呢,还要计算它的平方和,平方根。
偏导数怎么算?
这有个算法实现的问题。
页:
1
2
[3]
4
5
6
7
8
9
10
11
12