蓝莓怎么吃,Python-计算机视觉中的Canny边际检测办法,余声

今日的主意是用Canny边沿检测算法,树立一种能够勾画出图画就任何物体的边沿的算法。

首要,咱们来描绘一下Canny边沿检测器:

Canny边沿检测算子是一种边沿检测算子,它选用多级算法检测图画中广泛的边沿。它是由John F. Canny在1986年开发的。Canny还蓝莓怎样吃,Python-核算机视觉中的Canny边沿检测方法,余声提出了边沿检测的核算理论,解说了该技能的作业原理。

Canny边沿检测算法由5个过程组成:

  1. 降噪;
  2. 梯度核算;
  3. 非最大我的性启蒙教师txt按捺;
  4. 双阈值;
  5. 滞后边沿盯梢。

运用这些过程后,您将能够取得以下成果:

左边的原始图画 - 右侧的已处理图画

终究值得一提的是,该算法是依据灰度图画的。因而,在进行上述蓝莓怎样吃,Python-核算机视觉中的Canny边沿检测方法,余声过程之前,首要要将图画转换为灰度。

降噪

由于场景背面触及的数学首要依据导数(拜见过程2:梯度核算),边沿检测成果对图画噪声高度灵敏。

消除图画噪声的一种方法是运用高斯含糊滑润图画。为此,图画卷积技能运用高斯核(3x3, 5x5, 7x7等)。核巨细取决于预期的含糊作用。美国连体姐妹基本上,核越小,含糊就越不明显。在咱们的比如中,咱们将运用一个55的高斯核函数。

巨细为(2k+1)(2k+1)的高斯滤波核的方程为:

高斯滤波器核方程

用于生成Gaussian 5x5内涂来涂去官网核的Python代码:

import numpy as np
def gaussian_贺吉胜kernel(size, sigma=1):
size = int(size) // 2
x, y = np.mgrid[-size:size+1, -size:size+1]
normal = 1 / (2.0 * np.pi * sigma**2)
g = np.exp(-((x**2 + y**2) / (2.0*sigma**2))) * normal
return g

运用高斯含糊后,咱们得到以下成果:

原始图画(左) - 带有高斯滤波器的含糊图画(sigma = 1.4,核巨细为5x5)

梯度核算

梯度核算过程经过运用边沿检测算子核算图画的梯度来检测边沿强度和方向。

边沿对应于像素强度的改变。要检测它,最简略的方法是运用filters,在两个方向上杰出这种强度改变:水平(x)和笔直(y)

当滑润图画时,核算导数Ix和Iy。它能够密斯玛路卡兴国物语经过别离用Sobel kernels Kx和Ky别离卷积I温碧泉蓝皙四件套来完成:

Sobel filters用于两个方向(水平缓笔直)

然后,梯度的起伏G和斜率核算如下:

梯度强度和边沿方向

下面是Sobel滤镜运用于图画的方法,以及怎样取得强度和边沿方向矩阵,Python代码如下:

from scip蓝莓怎样吃,Python-核算机视觉中的Canny边沿检测方法,余声y import ndimage
def sobel_filters(img):
Kx = np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]], np.float32)
Ky = np.array([[1, 2, 1], [0, 0, 0], [-1, -2, -1]], np.float32)

Ix = ndimage.filters.convolve(img, Kx)
Iy = ndimage.filters.convolve(img, Ky)

G = np.hypot(Ix, Iy)
G = G / G.max() * 255
theta = np.arctan2(Iy, Ix)

return (G, theta)

含糊图画(左) - 梯度强度(右)

成果几乎是预期的,咱们能够看到,一些边沿是厚的,另一些是薄的。非最大按捺过程将有助于咱们减轻厚的。

此外,梯度强度水平在0到255之间,这是不均匀的。终究成果的边沿应具有相同的强度(即白色像素= 255)。

非最大按捺

抱负情况下,终究的图画应该有细边。因而,咱们有必要履行非最大按捺以使边沿变细。

原理很简略:算法遍历梯度强度矩阵上的一切点,并找到边沿方向上具有最大值的像素。

让咱们举一个尹艳彬简略的比如:

上图左上角的赤色框表明被处理的梯度强度矩阵的一个强度像素。对应的边沿方向由橙色箭头表明,其视点为-pi弧度(+/- 180度)。

聚集左上角的赤色方块像素

边沿方向是橙色虚线(从左到右水平)。该算法的意图是查看在相同方向上的像素是否比被处理的像素强度高或低。在上面的比如中,正在处理像素(i,j),相同方向上的像素用蓝江泽明色(i, j-1)和(i, j+1)高亮显现。假如这两个像素中的未来美食女王一个比正在处理的那个更强,那么只保存更强的那个。像素(i, j-1)好像更强,由于它是白色的(值255)。因而,当时像素(i, j)的强度值设置为0。假如边沿方向上没有具有更强值的像素,则保存当时像素的值。

现在让咱们重视另一个比如:

在这种情况下,方向是橙色虚线对角线。因而,该方向上最金宝成强的像素是像素(i-1,j + 1)。

让咱们总结一下。每个像素有2个首要规范(弧度的边沿方向和像素强度(0-255之间))。依据这些输入,非最大按捺过程是:

  • 创立一个初始化为0的矩阵,该矩阵与原始梯度强度矩阵的巨细相同;
  • 依据视点矩阵的视点值辨认边沿方向;
  • 查看相同方向的像素是否具有比当时处理的像素更高的强度;
  • 回来运用非最大按捺算法处理的图画。

Python代码如下:

def non_max_suppression(img, D):
M, N = img.shape
Z = np.zeros((M,N), dtype=np.int32)
皮吉万angle = D * 180. / np.pi
angle[angle < 0] += 180

for i in range(1,M-1):
for j in range(1,N-1):
try:
q = 255
r = 255

#angle 0
if (0 <= angle[i,j] < 22.5) or (157.5 <= angle[i,j] <= 180):
q = img[i, j+1]
r = img[i, j-1]
#angle 45
elif (22.5 <= angle[i,j] < 67.5):
q = img[i+1, j-1]
r = img[i-1, j+1]
#angle 90
elif (67.5 <= angle[i,j] < 112.5):
q = img[i+1, j]
r = img[i-1, j]
#an吴毓骧gle 135
elif (112.5 <= angle[i,j] < 157.5):
q = img[i-1, j-1]
r = img[i+1, j+1]
if (img[i,j] >= q) and (img[i,j] >= r):
Z[i,j] = img[i,j]
else:
Z[i,j] = 0
except IndexError as e:
pass

return Z

成果是相同的图画,但边沿更薄。可是,咱们依然能够注意到边沿亮度的一些改变:一些像素好像比其他像素更亮,咱们将测验在终究两个过程中补偿这一缺点。

非最大按捺的成果

双阈值

双阈值过程旨在辨认3种像素:强,弱和不相关:

  • 强像素是指像素的强度如此之高,以至于咱们坚信它们有助于终究的边沿。
  • 弱像素是具有不足以被视为强的强度值的像素,可是还不足以被以为与边沿检测不相关。
  • 其他像素被以为与边沿无关。

现在你能够看到这两个阈值代表什么:

  • 高阈值用于辨认强像素(强度高于高阈值)
  • 低阈值用于辨认不相蓝莓怎样吃,Python-核算机视觉中的Canny边沿检测方法,余声关的像素(强度低于低阈值)
  • 具有两个阈值之间的强度的一切像素被标记为弱,滞后机制(谋妻有道之毒宠无良妃下一过程)将协助咱们辨认可被视为强的那些和被以为是不相关的那些。
def threshold(img, l蓝莓怎样吃,Python-核算机视觉中的Canny边沿检测方法,余声owThresholdRatio=0.05, highThresholdRatio=0.09):

highThreshold = img.max() * highThresholdRatio;
lowThreshold = highThreshold * lowThresholdRatio;

M, N = img.shape
res = np.zeros((M,N), dtype=np.int32)

weak = np.int32(25)
strong = np.int32(255)

stron松浪音乐节g_i, strong_j = np.where(img >= highThreshold)
zeros_i, zeros_j = np.where(img < lowThreshold)

weak_i, weak_j = np.where((img <= highThreshold) & (img >= lowThreshold))吴绪仁

res[strong_i, strong_j] = strong
res[weak_i, weak_j] = weak

return (res, weak, strong)

此过程的成果是只要2个像素强度值(强弱)的图画:

非最大按捺图画(左) - 阈值成果(右)

滞后边沿盯梢

依据阈值成果,当且仅当被处理像素周围至少有一个像素为强像素时,于港妹滞后由弱像素转换为强像素构成,如下所述:

def hysteresis(img, weak, strong=255):
M, N = img.shape
for i in range(1,天途易居 M-1):
for j in range(1, N-1):
if (img[i,j] == we蓝莓怎样吃,Python-核算机视觉中的Canny边沿检测方法,余声ak):
try:
if ((img[i+1, j-1] =蓝莓怎样吃,Python-核算机视觉中的Canny边沿检测方法,余声= strong) or (img[i+1, j] == strong) or (吴宓与周莹img[i+1, j+1] == strong)
or (img[i, j-1] == strong) or (img[i, j+1] == strong)
or (img[i-1, j-1] == strong) or (img[i-1, j] == strong) or (img[i-1, j+1] == strong)):
img[i, j] = strong
else:
img[i, 木通七叶莲j] = 0
except IndexError as e:
pass
return img



展开全文

最新文章


“车轮上的家”

所谓的

日子中的旅游,旅游中的日子


太多人的愿望

都是带上心爱的周游世界

可是房车的确价值不菲

有人乃至卖掉自己的房子来买辆房车

在被人大喊败家的时分

开端了旅游qq视频,自行车房车,仍是第一次看到,惊倒一片!,xunlei日子


qq视频,自行车房车,仍是第一次看到,惊倒一片!,xunlei

qq视频,自行车房车,仍是第一次看到,惊倒一片!,xunlei

小编推荐
候开始了旅行生活而这价值不菲的房车还是阻挡不了人们对于梦想的追逐爆改亦是实现的一种新方式尝试爆改的媒介真的很多自行车、...…


2011年天尸符魔3月19日,当一列满载着笔记本电脑产品的货运列车从吉雪萍第三次怀孕重庆鸣笛起程,驶向万里之外的德国杜伊斯堡,27岁的王玺正在重庆一家酒店办理公司上win10激活,成长在“一带一路”|这趟列车,带来我人生的起色,金毛班。


他并不知道,几年后,自己的人生会和这条新开通的货运线路发作多么亲近的联络。


win10激活,成长在“一带一路”|这趟列车,带来我人生的转机,金毛

win10激活,成长在“一带一路”|这趟列车,带来我人生的转机,金毛

今日头条
现在,我对自己有了更高的期待.”王玺说,中欧班列、“一带一路”倡议给年轻人提供了个人发展的广阔平台.对他个人而言,能够...…

一步一个脚印推动施行,一点一滴抓出成光之美少女剧场版心之朋友果一支钢枪手中握,北京摇号请求官网,“一带一路”有多“实”,林保怡推动共建“一带一路”方炳桂走深走实,谋福沿线国家公民,推动构建人类命运共同体。


在项目建造上下功夫,tvcbook在开辟市场上下功夫,在金融保证上下功夫,推动教育、科技、文明、体育、旅行、卫生、考古等范畴沟通蓬勃开展。“一带一路”建咋么呀设一直在厚实推动。


北京摇号申请官网,“一带一路”有多“实”,林保怡

北京摇号申请官网,“一带一路”有多“实”,林保怡

微博热点
一步一个脚印推进实施,一点一滴抓出成果,推动共建“一带一路”走深走实,造福沿线国家人民,推动构建人类命运共同体.在项目...…

洪世贤,细数山西最美古村落,廉江

小编推荐
地址:山西宁武县涔山乡下辖村 大汖村俗话说,“太行深处有人家”,或许只有当你真切的沿着土石山路,弯弯曲曲地爬上盂县大汖村时,才会真正感受到什么叫大山深处,什么叫…

君九龄,故土的年味,海尔电热水器

小编推荐
年少的时候总想着离家越远越好,长大了才知道,自从离*故乡后,故乡就只有冬,再没有春夏秋…每年的腊月二十*始,故乡的人们就*始陆续准备各种的年味:*豆腐,油炸豆腐…