当前位置: 首页 > news >正文

撰写网站的建设方案waP六感程序建设网站

撰写网站的建设方案,waP六感程序建设网站,网站服务器设置地点,wordpress 微博小工具Canny算法的原理使用高斯滤波器滤波使用 Sobel 滤波器滤波获得在 x 和 y 方向上的输出#xff0c;在此基础上求出梯度的强度和梯度的角度edge为边缘强度#xff0c;tan为梯度方向上图表示的是中心点的梯度向量、方位角以及边缘方向#xff08;任一点的边缘与梯度向量正交在此基础上求出梯度的强度和梯度的角度edge为边缘强度tan为梯度方向上图表示的是中心点的梯度向量、方位角以及边缘方向任一点的边缘与梯度向量正交对梯度角度进行量化处理划重点是沿着梯度方向对幅值进行非极大值抑制而非边缘方向这里初学者容易弄混。例如3*3区域内边缘可以划分为垂直、水平、45°、135°4个方向同样梯度反向也为四个方向与边缘方向正交。因此为了进行非极大值将所有可能的方向量化为4个方向如下图量化后的情况可以总结为根据梯度角度对边缘强度进行非极大值抑制Non-maximum suppression使图像边缘变得更细非极大值抑制算法0°时取(x,y)、(x1,y)、(x-1,y) 中的最大值其它角度类似 使用滞后阈值对图像进行二值化处理优化图像显示效果选取系数TH和TL比率为2:1或3:1。一般取TH0.3或0.2,TL0.1b. 将小于低阈值的点抛弃赋0将大于高阈值的点立即标记这些点为确定边缘点赋1或255c. 将小于高阈值大于低阈值的点使用8连通区域确定即只有与TH像素连接时才会被接受成为边缘点赋 1或255python算法实现import cv2 import numpy as np import matplotlib.pyplot as pltdef Canny(img):# Gray scaledef BGR2GRAY(img):b img[:, :, 0].copy()g img[:, :, 1].copy()r img[:, :, 2].copy()# Gray scaleout 0.2126 * r 0.7152 * g 0.0722 * bout out.astype(np.uint8)return out# Gaussian filter for grayscaledef gaussian_filter(img, K_size3, sigma1.4):if len(img.shape) 3:H, W, C img.shapegray Falseelse:img np.expand_dims(img, axis-1)H, W, C img.shapegray True## Zero paddingpad K_size // 2out np.zeros([H pad * 2, W pad * 2, C], dtypenp.float)out[pad : pad H, pad : pad W] img.copy().astype(np.float)## prepare KernelK np.zeros((K_size, K_size), dtypenp.float)for x in range(-pad, -pad K_size):for y in range(-pad, -pad K_size):K[y pad, x pad] np.exp( - (x ** 2 y ** 2) / (2 * sigma * sigma))#K / (sigma * np.sqrt(2 * np.pi))K / (2 * np.pi * sigma * sigma)K / K.sum()tmp out.copy()# filteringfor y in range(H):for x in range(W):for c in range(C):out[pad y, pad x, c] np.sum(K * tmp[y : y K_size, x : x K_size, c])out np.clip(out, 0, 255)out out[pad : pad H, pad : pad W]out out.astype(np.uint8)if gray:out out[..., 0]return out# sobel filterdef sobel_filter(img, K_size3):if len(img.shape) 3:H, W, C img.shapeelse:H, W img.shape# Zero paddingpad K_size // 2out np.zeros((H pad * 2, W pad * 2), dtypenp.float)out[pad : pad H, pad : pad W] img.copy().astype(np.float)tmp out.copy()out_v out.copy()out_h out.copy()## Sobel verticalKv [[1., 2., 1.],[0., 0., 0.], [-1., -2., -1.]]## Sobel horizontalKh [[1., 0., -1.],[2., 0., -2.],[1., 0., -1.]]# filteringfor y in range(H):for x in range(W):out_v[pad y, pad x] np.sum(Kv * (tmp[y : y K_size, x : x K_size]))out_h[pad y, pad x] np.sum(Kh * (tmp[y : y K_size, x : x K_size]))out_v np.clip(out_v, 0, 255)out_h np.clip(out_h, 0, 255)out_v out_v[pad : pad H, pad : pad W]out_v out_v.astype(np.uint8)out_h out_h[pad : pad H, pad : pad W]out_h out_h.astype(np.uint8)return out_v, out_h# get edge strength and edge angledef get_edge_angle(fx, fy):# get edge strengthedge np.sqrt(np.power(fx.astype(np.float32), 2) np.power(fy.astype(np.float32), 2))edge np.clip(edge, 0, 255)# make sure the denominator is not 0fx np.maximum(fx, 1e-10)#fx[np.abs(fx) 1e-5] 1e-5# get edge angleangle np.arctan(fy / fx)return edge, angle# 将角度量化为0°、45°、90°、135°def angle_quantization(angle):angle angle / np.pi * 180angle[angle -22.5] 180 angle[angle -22.5]_angle np.zeros_like(angle, dtypenp.uint8)_angle[np.where((angle 22.5) | (angle 157.5))] 0_angle[np.where((angle 22.5) (angle 67.5))] 45_angle[np.where((angle 67.5) (angle 112.5))] 90_angle[np.where((angle 112.5) (angle 157.5))] 135return _angledef non_maximum_suppression(angle, edge):H, W angle.shape_edge edge.copy()for y in range(H):for x in range(W):if angle[y, x] 0:dx1, dy1, dx2, dy2 -1, 0, 1, 0elif angle[y, x] 45:dx1, dy1, dx2, dy2 -1, 1, 1, -1elif angle[y, x] 90:dx1, dy1, dx2, dy2 0, -1, 0, 1elif angle[y, x] 135:dx1, dy1, dx2, dy2 -1, -1, 1, 1# 边界处理if x 0:dx1 max(dx1, 0)dx2 max(dx2, 0)if x W-1:dx1 min(dx1, 0)dx2 min(dx2, 0)if y 0:dy1 max(dy1, 0)dy2 max(dy2, 0)if y H-1:dy1 min(dy1, 0)dy2 min(dy2, 0)# 如果不是最大值则将这个位置像素值置为0if max(max(edge[y, x], edge[y dy1, x dx1]), edge[y dy2, x dx2]) ! edge[y, x]:_edge[y, x] 0return _edge# 滞后阈值处理二值化图像# HT 的设为255 LT 的设置0介于它们两个中间的值使用8邻域判断法def hysterisis(edge, HT100, LT30):H, W edge.shape# Histeresis thresholdedge[edge HT] 255edge[edge LT] 0_edge np.zeros((H 2, W 2), dtypenp.float32)_edge[1 : H 1, 1 : W 1] edge## 8 - Nearest neighbornn np.array(((1., 1., 1.), (1., 0., 1.), (1., 1., 1.)), dtypenp.float32)for y in range(1, H2):for x in range(1, W2):if _edge[y, x] LT or _edge[y, x] HT:continueif np.max(_edge[y-1:y2, x-1:x2] * nn) HT:_edge[y, x] 255else:_edge[y, x] 0edge _edge[1:H1, 1:W1]return edge# grayscalegray BGR2GRAY(img)# gaussian filteringgaussian gaussian_filter(gray, K_size5, sigma1.4)# sobel filteringfy, fx sobel_filter(gaussian, K_size3)# get edge strength, angleedge, angle get_edge_angle(fx, fy)# angle quantizationangle angle_quantization(angle)# non maximum suppressionedge non_maximum_suppression(angle, edge)# hysterisis thresholdout hysterisis(edge, 80, 20)return outif __name__ __main__:# Read imageimg cv2.imread(../paojie.jpg).astype(np.float32)image cv2.cvtColor(img, cv2.COLOR_RGB2GRAY).astype(np.uint8)# Cannyedge Canny(img)out edge.astype(np.uint8)# Save resultcv2.imshow(src and canny, np.hstack((image, out)))cv2.waitKey(0)cv2.destroyAllWindows()参考链接https://www.cnblogs.com/wojianxin/p/12533526.htmlhttps://blog.csdn.net/weixin_40647819/article/details/91411424
http://www.hkea.cn/news/14486660/

相关文章:

  • 苏州网站建设中心长沙创求网络科技有限公司
  • 设计网站大全免费下载微信 免费 网站
  • 网站开发验收资料佛山网上房地产官网
  • 全美网站开发叫别人做网站要多久
  • 帝国建站程序中铁建设门户网员工登录
  • 北京市电力建设公司网站服装设计师需要什么学历
  • 网站建设需要多少g合适wordpress用户信息界面
  • 成都网站设计公小程序开发文档pdf
  • 怎么让网站收录在google大连网站公司设计
  • 响应式网站建设如何wordpress前端用户中心投稿
  • 珠海门户网站建设价格平湖市住房和城乡规划建设局网站
  • 没有备案的网站会怎么样自己制作wordpress主题
  • 服装电子商务网站建设3000字深圳网站维护制作
  • 做网站找哪个平台好做二手房怎找房源网站
  • 新乡市封丘县建设局网站响应式网页设计简单
  • asp.net 4.0网站开...荥阳郑州网站建设
  • 网站建设有什么出路系统开发师
  • 全国分类信息网站排名网站备案许可证号查询
  • 女子医院网站设计怎么做哈尔滨网站建设丿薇
  • 有哪些做婚品的网站开一个网站建设公司需要什么软件
  • 北京做商铺的网站抖音代运营带货费用怎么收费
  • 网站素材模板 站长新加坡网站域名
  • 南宁快速建站模板福建网站开发
  • 嘉兴网站建设需要多少钱vue做的网站影响收录么
  • 做视频广告在哪个网站能够赚钱开发商
  • 网站建设中遇到的问题免费网站空间10g
  • 昆山网站维护北京做彩右影影视公司网站
  • 做网站策划案手工制作月饼
  • 常州做网站价位客户管理系统排行榜
  • 软件论坛网站有哪些微山网站建设哪家便宜