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

湘潭做网站的公司合肥seo代理商

湘潭做网站的公司,合肥seo代理商,青岛网络推广教程,经典重庆论坛新闻论坛五、边缘检测 5.2基于二阶导数的边缘检测 一阶导数(如Sobel、Prewitt算子)能够捕捉到灰度值的快速变化,但有时会因检测到过多的边缘点而导致边缘线过粗。为了更加精确地定位边缘位置,可以利用二阶导数的零交叉点。零交叉点是是函…

五、边缘检测

5.2基于二阶导数的边缘检测

一阶导数(如Sobel、Prewitt算子)能够捕捉到灰度值的快速变化,但有时会因检测到过多的边缘点而导致边缘线过粗。为了更加精确地定位边缘位置,可以利用二阶导数的零交叉点。零交叉点是是函数二阶导数为零(正负变换)的点。

高斯拉普拉斯算子是一种用于图像边缘检测的算法。它先对图像进行高斯平滑处理,然后计算拉普拉斯算子,以找到图像中的零交叉点,从而实现图像边缘位置的检测。

其的优点有

①抗噪声能力强:LoG算子结合了高斯平滑和拉普拉斯锐化的优点。高斯平滑能够有效地抑制图像中的噪声,减少噪声对边缘检测的影响。这使得LoG算子在处理含有噪声的图像时,能够更准确地检测出边缘,防止因噪声而出现伪边缘检测。

②可调整性强:LoG算子中的高斯核标准差(σ)是一个可调整的参数,通过改变σ的值,可以控制高斯平滑的程度,适应不同噪声水平和边缘特性的图像,进而优化缘检测的效果。

def apply_log(image, sigma):"""应用高斯拉普拉斯算子进行边缘检测。参数:image: 输入图像sigma: 高斯核的标准差,用于平滑图像返回:edges: 检测到的边缘图像"""# 使用高斯模糊平滑图像blurred_image = cv2.GaussianBlur(image, (0, 0), sigma)# 计算拉普拉斯算子laplacian_image = cv2.Laplacian(blurred_image, cv2.CV_64F)# 将拉普拉斯图像的数据类型转换为8位无符号整数laplacian_image = np.uint8(np.absolute(laplacian_image))# 找到零交叉点作为边缘# 使用阈值来近似找到零交叉点_, edges = cv2.threshold(laplacian_image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)return edges# 读取图像
image = cv2.imread('fu.jpg', cv2.IMREAD_GRAYSCALE)# 缩小原图
resized_image = cv2.resize(image, None, fx=0.4, fy=0.4)# 应用LoG算子
edges = apply_log(resized_image, sigma=1.5)# 缩小边缘图像(确保使用与原图相同的缩放因子)
resized_edges = cv2.resize(edges, (resized_image.shape[1], resized_image.shape[0]))# 将原图和处理后的图像水平堆叠
stacked_image = np.hstack((resized_image, resized_edges))# 显示结果
cv2.imshow('Original and Edges', stacked_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.3 Canny边缘检测算子

5.3.1Canny边缘检测算子概念:Canny算法是应用于边缘检测的标准算法,其目标是找到一个最优的边缘检测解,即尽可能多地标识出图像中的实际边缘,同时使标识出的边缘尽可能接近实际边缘,并尽可能减少噪声对边缘检测结果的干扰。

5.3.2原理及步骤:

①图像平滑:使用高斯滤波器对原始图像进行平滑处理,减少图像噪声。高斯滤波器通过加权平均周围像素的值来模糊图像,降低噪声的影响。

②梯度计算:计算平滑后图像的梯度幅度和方向。通常使用Sobel算子、Prewitt算子等来计算图像在水平和垂直方向上的梯度值,从而得到每个像素点的梯度大小和方向。

③非极大值抑制:在梯度图像上,对每个像素点在其梯度方向上进行比较,并保留局部最大值点,抑制非边缘像素。从而细化边缘线条,减少边缘的宽度。 

④双阈值检测:设定高阈值和低阈值,梯度值大于高阈值的一定是边缘;梯度值小于低阈值的一定不是边缘,要是介于高阙值和低阙值之间,就要根据其的邻接像素做出判断。

⑤边缘连接:从强边缘像素开始,沿着梯度方向追踪并连接相邻的弱边缘像素,从而形成完整的边缘。

import cv2
import numpy as np# 读取图片
image = cv2.imread('fu.jpg')# 转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 应用高斯模糊
blurred_image = cv2.GaussianBlur(gray_image, (5, 5), 0)# 使用Canny算子进行边缘检测
low_threshold = 50
high_threshold = 150
edges = cv2.Canny(blurred_image, low_threshold, high_threshold)# 获取原始图像和边缘检测图像的尺寸
height, width = image.shape[:2]
edges_height, edges_width = edges.shape[:2]# 将图像缩小一半
resized_image = cv2.resize(image, (width // 2, height // 2))
resized_edges = cv2.resize(edges, (edges_width // 2, edges_height // 2))# 显示原图和边缘检测结果
cv2.imshow('Original Image', resized_image)
cv2.imshow('Edges', resized_edges)# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

注:本人为在校学生,博客是边学边写的,主要是为了巩固知识,如有错误请积极指正。

本文的内容主要基于我对张运楚教授编著的《数字图像处理》一书的学习和理解。这本书深入浅出地介绍了数字图像处理的基本理论以及经典算法等,并且提供了丰富的示例代码和实际用例,极大地帮助了我学习图像处理知识。在此,我推荐大家阅读这本书,更加深入的学习有关图像处理的知识。

http://www.zhongyajixie.com/news/4451.html

相关文章:

  • 电子书网站搭建教程淘词神器
  • 深圳外贸soho网站建设营销比较好的知名公司有哪些
  • 赣县网站制作海南seo快速排名优化多少钱
  • 网站建设 .北京蓝纤如何让产品吸引顾客
  • 音乐网站怎么做无线增值业务seo公司关键词
  • 重庆专业网站开发服务什么软件可以排名次
  • 门户网站大全网站seo诊断分析
  • 网站建设徐州网络推广软文范文
  • 建平台网站百度搜索引擎入口登录
  • 做网站的积木式编程推广软件有哪些
  • 汽车可以做哪些广告视频网站有哪些网络推广具体内容
  • 新疆维吾尔自治区官网百度seo站长工具
  • 怎样设计网站主页军事新闻头条最新消息
  • wordpress 内链网站优化设计公司
  • 做定制网站多少钱网店推广的作用是什么
  • 网络规划与设计思维导图seo培训学院
  • 苏州有哪些做网站关键词全网搜索
  • 怎么查网站流量免费seo网站诊断免费
  • 饰品做商城网站模式互动营销的案例及分析
  • php网站开发实例教程书培训心得体会500字
  • 企业网站信息化建设短链接在线生成官网
  • 优购物官方网站手机学生个人网页制作
  • 搭建什么网站比较赚钱网站建设公司企业网站
  • 织梦pc怎么做手机网站ueeshop建站费用
  • 威海做网站www.whbjg北京网站排名seo
  • 邯郸网站制作哪里做网站分析报告
  • 国内十个免费自学网站打开网站搜索
  • 有做任务赚赏金的网站吗项目推广渠道有哪些
  • 服务器建设网站湖南企业seo优化
  • 长沙企业网站seo关键词优化工具互点