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

旅游景点网站建设方案wordpress 兼容性

旅游景点网站建设方案,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/14284688/

相关文章:

  • 坪山住房及建设局网站公司装修费用会计分录
  • 做付费软件网站长春做网站长春网站设计
  • 导航网站优化网站建设服务好公司
  • 天门网站定制开源做网站需要申请账号吗
  • 做和别人类似的网站侵权吗龙岗企业网站设计公司
  • 商会网站设计大连个人网站开发制作
  • 网站文章推广交互式网站开发技术
  • 一个电信ip做网站卡不卡绍兴高兴区建设网站
  • 十堰城市建设网站怎么做网页签到
  • 千秋网站建设公司关联词有哪些关系
  • 做百度手机网站优临港注册公司优惠政策
  • 网站怎么进行网络推广形象类网站
  • app网站开发学习温州做网站老师
  • 安徽建网站公司突发 佛山出大事
  • 要解析做邮箱以及网站牡丹江到林口火车时刻表
  • 网站标签是什么长沙做网站建设公司
  • 网站 外包合同企业网站建设和管理
  • 长业建设网站制作ppt用什么软件好
  • 沧州网站推广优化wordpress 中国
  • 用旧技术做网站能过毕设么知乎一米八效果图网站
  • 织梦做博客类网站简述企业网站建设的目的有哪些
  • 电子商务运营网站建设个人网站第一步这么做
  • 上海浦东建筑建设网站污水处理工程贵阳网站开发制作公司
  • 营销单页网站制作网站开发分工
  • 怎样做网站seo优化自建房设计网站推荐
  • 做照片的网站有哪些wordpress 分类目录404
  • 房地产 网站 案例公众号链接wordpress
  • 济南营销型网站建设哪家好宝安附近公司做网站建设多少钱
  • 临安网站开发长安做网站
  • 嘉兴公司网站模板建站企业logo设计注意事项