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

做响应式网站最大宽度景观设计公司起名

做响应式网站最大宽度,景观设计公司起名,手机360网站seo优化,推广用哪个平台效果好图像梯度 要学习图像边缘检测#xff0c;要先了解图像梯度的概念#xff0c;我们正是通过梯度值来区分边缘像素点的 处于边缘附近的像素点与周围像素点的差距很大#xff08;不然不会有边缘呈现#xff09;#xff0c;所以给边缘附近的的梯度之变化很快#xff0c;通过…图像梯度 要学习图像边缘检测要先了解图像梯度的概念我们正是通过梯度值来区分边缘像素点的 处于边缘附近的像素点与周围像素点的差距很大不然不会有边缘呈现所以给边缘附近的的梯度之变化很快通过计算梯度值来进行边缘检测。 通常有如下两种方式处理计算得到的新值 截断处理将小于0的值设置为0将大于255的值设置为255。这种方法简单直接但可能会导致图像在极端值处出现不自然的截断。归一化处理将计算得到的值线性映射到0到255的范围内。这种方法可以保留更多的细节信息但可能需要额外的计算。 梯度处理方式 cv2.filter2D()函数 功能用于对图像进行卷积操作。卷积是图像处理中的一个基本操作它通过一个称为卷积核或滤波器的小矩阵在图像上滑动并对每个位置进行加权求和从而得到新的图像。 参数 src输入图像可以是灰度图像或彩色图像。ddepth输出图像的所需深度。对于输入图像和输出图像具有相同深度的情况该值通常设置为 -1。否则你可以选择一个特定的深度如 cv2.CV_8U、cv2.CV_16U、cv2.CV_32F 等。kernel卷积核一个二维数组或矩阵。卷积核的大小通常是奇数如 3x3、5x5 等。卷积核中的每个元素都是一个权重用于在卷积过程中与图像像素相乘。dst输出图像可选。anchor卷积核的锚点可选。delta一个可选的附加值它将被加到卷积结果上。这可以用于调整结果的亮度或对比度。borderType边界填充。 进行边缘检测的方向取决于选取的卷积核kernel 当kernel取k1时检测方向为垂直方向 当kernel取k2时检测方向为水平方向 当然kernel的取值并非只有上面两种该函数通过应用自定义的卷积核对图像进行滤波处理可以实现各种线性滤波效果。卷积核可以看作是一种特殊的算子但本质是函数。 注意上面的k1k2正是Sobel算子下面会讲需要使用的卷积核所以cv2.filter2D()函数选用上面的k1k2作为参数kernel的取值那么它与Sobel算子的作用效果是一样的。 那么卷积核是如何运作的呢还跟之前一样要提前填充边缘吗放心不需要计算很简单。 如下图以垂直方向为例 卷积核进行操作的是单信道图像灰度图或二值图两个极端0黑255白该卷积核进行操作目的是为进行边缘检测所以将两个极端进行重新赋值以便及那个边缘区分开来下面介绍的Sobel算子也是相同的操作不在赘述。 实线框部分是第一次卷积左右两边中间列除外各自与对赢得系数相乘然后进行相加 196-2472*199-24135-190 -290   结果0归零将中间一列重新赋值为零 卷积核滑动虚线部分为第二次卷积 243-02*245-0197-0930  结果0归255将中间列重新赋值为255 示例代码 import cv2 import numpy as np# 读取一张图 img cv2.imread(./shudu.png)# 进行垂直梯度处理 kernel np.array([[-1, 0, 1],[-2, 0, 2],[-1, 0, 1]]) img_filter cv2.filter2D(img, -1, kernel)# 进行水平梯度处理 kernel1 np.array([[-1, -2, -1],[0, 0, 0],[1, 2, 1]]) img_filter_level cv2.filter2D(img, -1, kernel1)cv2.imshow(image, img) cv2.imshow(img_filter, img_filter) cv2.imshow(img_filter_level, img_filter_level)cv2.waitKey(0) 效果对比 Sobel算子 上面的两个卷积核都叫做Sobel算子只是方向不同它先在垂直方向计算梯度: cv2.Sobel()函数 功能用于计算图像梯度gradient的函数 参数 src: 输入图像它应该是灰度图像。ddepth: 输出图像的所需深度数据类型。通常你可以使用 -1 来表示与输入图像相同的深度或者使用如 cv2.CV_64F 等来指定特定的深度。由于梯度计算可能产生负值因此建议使用能够包含负数的数据类型。dx: x 方向上的导数阶数。如果你想要计算 x 方向上的梯度设置这个参数为 1如果你不关心 x 方向上的梯度设置这个参数为 0。dy: y 方向上的导数阶数。如果你想要计算 y 方向上的梯度设置这个参数为 1如果你不关心 y 方向上的梯度设置这个参数为 0。通常你不会同时设置 dx 和 dy 都为 0。ksize: Sobel 核的大小。它必须是 1、3、5、7 或 9 之一。这个参数决定了用于计算梯度的滤波器的大小。大小为 1 时表示使用最小的滤波器但通常你会使用更大的滤波器来平滑梯度计算。scale: 可选参数表示计算梯度时的缩放因子。默认值为 1表示不进行缩放。你可以通过调整这个参数来放大或缩小梯度的结果。delta: 可选参数表示在将结果存储到目标图像之前要添加到结果中的可选增量值。默认值为 0表示不添加增量。borderType: 像素外推方法例如 cv2.BORDER_DEFAULT、cv2.BORDER_REFLECT 等。这个参数决定了在图像边界处如何处理像素外推。 示例代码 import cv2# 读取一张图 img cv2.imread(./shudu.png)# 使用sobel算子 # 水平梯度 img_sobel cv2.Sobel(img, -1, 0, 1, ksize3) # 垂直梯度 img_sobel_2 cv2.Sobel(img, -1, 1, 0, ksize3)cv2.imshow(image, img) cv2.imshow(img_sobel, img_sobel) cv2.imshow(img_sobel_2, img_sobel_2)cv2.waitKey(0) 效果对比 其他算子 Laplacian算子 下面为推导过程了解即可可直接跳过我们只关心最后的卷积核 在此基础上考虑斜对角情况该算子的图像卷积模板如下 cv2.Laplacian()函数 功能用于计算图像的拉普拉斯算子Laplacian 参数 src: 输入图像它应该是灰度图像。ddepth: 输出图像的所需深度。这个参数决定了输出图像的深度数据类型。通常你可以使用 -1 来表示与输入图像相同的深度或者使用 cv2.CV_64F 等来指定特定的深度。由于拉普拉斯算子可能产生负值因此通常建议使用能够包含负数的数据类型如 cv2.CV_64F。ksize: 算子的大小。它必须是 1、3、5 或 7 之一。这个参数决定了用于计算拉普拉斯算子的滤波器的大小。大小为 1 时表示使用 4 邻域拉普拉斯算子其他大小则使用更大的滤波器。scale: 可选参数表示计算拉普拉斯算子时的缩放因子。默认值为 1表示不进行缩放。你可以通过调整这个参数来放大或缩小拉普拉斯算子的结果。delta: 可选参数表示在将结果存储到目标图像之前要添加到结果中的可选增量值。默认值为 0表示不添加增量。borderType: 像素外推方法例如 cv2.BORDER_DEFAULT、cv2.BORDER_REFLECT 等。这个参数决定了在图像边界处如何处理像素外推。当 ksize 大于 1 时这个参数才有意义。 示例代码 import cv2# 读取一张图 img cv2.imread(./shudu.png)# 使用拉普拉斯算子 img_lap cv2.Laplacian(img, -1, ksize3)cv2.imshow(image, img) cv2.imshow(img_lap, img_lap)cv2.waitKey(0) 效果对比 小结  Sobel算子是二阶边缘检测的典型代表 Laplacian算子是二阶边缘检测的典型代表 不过 一 / 二 阶边缘检测各有优缺点大家可自行了解。 图像边缘检测 边缘检测要用到Canny算法Canny边缘检测方法 常被誉为 边缘检测 的最优方法。 首先Canny算法 处理的是 图像的二值化结果接收到二值化图像后需要按照如下步骤进行 高斯滤波。计算图像的梯度和方向。非极大值抑制。双阈值筛选。 下面我来介绍一下这四步 1. 高斯滤波 在前面的文章里历经详细介绍了高斯滤波遗忘的同学链接如下 10篇--图像噪点消除-CSDN博客 之前提到过低通滤波器是模糊高通滤波器是锐化。 而边缘检测本身属于锐化操作对噪点比较敏感需要进行平滑处理。所以用到的高斯滤波为高通滤波器。这里使用的是一个5*5的高斯核对图像进行消除噪声 2. 计算图像的梯度与方向  2.1 计算梯度 这里使用了Sobel算子核值固定的卷积核来计算图像的梯度值如下所示 这些是高数中二阶偏导数相关的概念就不做赘述了。不理解也没关系重点不在这接着往下看 2.2 计算方向  这个角度值其实就是当前边缘的梯度的方向与边缘的方向刚好垂直。 通过这个公式我们就可以计算出图片中所有的像素点的梯度值与梯度方向然后根据梯度方向获取边缘的方向获得θ。得到θ的值之后就可以对边缘方向进行分类一般将其归为四个方向 水平方向、垂直方向、45°方向、135°方向 当θ值为-22.5°~22.5°或-157.5°~157.5°则认为边缘为水平边缘当法线方向为22.5°~67.5°或-112.5°~-157.5°则认为边缘为45°边缘当法线方向为67.5°~112.5°或-67.5°~-112.5°则认为边缘为垂直边缘当法线方向为112.5°~157.5°或-22.5°~-67.5°则认为边缘为135°边缘 3. 非极大值抑制 通过上面的操作已经初步筛选出了边缘把他们连起来不久OK了齐活 NONONO本系列第10篇提到过锐化都容易损坏边缘信息使边缘模糊导致经过第二步后得到的边缘像素点非常多因此我们需要对其进行一些过滤操作。其中非极大值抑制就是一个很好的方法。 在边缘检测中非极大值抑制的主要目的是细化边缘。具体来说它通过对梯度图像中的像素值进行比较和筛选只保留梯度方向上局部最大的像素值而将其他非最大的像素值抑制为零。这样边缘就变得更加细化和清晰减少了冗余的边缘信息。假设当前像素点为xy其梯度方向是0°梯度值为Gxy那么我们就需要比较Gxy与两个相邻像素的梯度值Gx-1y和Gx1y。如果Gxy是三个值里面最大的就保留该像素值否则将其抑制为零。 并且如果梯度方向不是0°、45°、90°、135°这种特定角度那么就要用到插值算法来计算当前像素点在其方向上进行插值的结果了然后进行比较并判断是否保留该像素点。这里使用的是单线性插值通过A1和A2两个像素点获得dTmp1与dTmp2处的插值然后与中心点C进行比较。 4. 双阈值筛选 经过非极大值抑制之后我们还需要设置阈值来进行筛选。 当阈值设的太低就会出现假边缘而阈值设的太高一些较弱的边缘就会被丢掉 因此使用了双阈值来进行筛选推荐高低阈值的比例为2 : 1到3 : 1之间其原理如下图所示  当某一像素位置的幅值超过最高阈值时该像素必是边缘像素幅值处于最高像素与最低像素之间时如果它能连接到一个高于阈值的边缘时则被认为是边缘像素否则就不会被认为是边缘当幅值低于最低像素时该像素必不是边缘像素。 也就是说上图中的A和C是边缘B不是边缘。因为C虽然不超过最高阈值但其与A相连所以C就是边缘。 至此Canny边缘检测就完成了。 cv2.Canny()函数 功能用于边缘检测的函数 参数 ‌image‌ 输入图像它应该是一个灰度图像单通道。‌threshold1‌ 第一个阈值用于边缘检测的滞后过程。这个值较低用于确定边缘的初始点。‌threshold2‌ 第二个阈值用于边缘检测的滞后过程。这个值较高用于确定边缘的最终点。如果某个像素点的梯度值高于这个阈值它被认为是边缘如果低于这个值但高于threshold1并且与高于threshold2的像素点相连它也被认为是边缘。‌edges‌ 输出图像与输入图像大小相同但通常是二值图像即只包含边缘和非边缘的像素。‌apertureSize‌可选默认为3 Sobel算子的大小它决定了梯度计算的邻域大小。它必须是1、3、5或7之一。‌L2gradient‌可选默认为False 一个布尔值指示是否使用更精确的L2范数进行梯度计算。如果为True则使用L2范数即欧几里得距离如果为False则使用L1范数即曼哈顿距离。L2范数通常更精确但计算成本也更高。 示例代码 import cv2img cv2.imread(kabuto.jpg)# 灰度化 img_gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化 _, img_binary cv2.threshold(img_gray, 127, 255,cv2.THRESH_BINARY cv2.THRESH_OTSU)# 进行高斯滤波 img_blur cv2.GaussianBlur(img_binary, (3,3), 3)# 边缘检测 img_canny cv2.Canny(img_blur, 10, 70)cv2.imshow(img, img) cv2.imshow(img_canny, img_canny) cv2.waitKey(0) 效果对比
http://www.pierceye.com/news/267918/

相关文章:

  • 有小广告的网站适合40岁女人的培训班
  • html5网站建设有什么网站用名字做图片
  • 合肥珍岛公司做网站推广怎么样关键词排名优化如何
  • 做讲课ppt的网站郑州市建设局官方网站
  • 邢台集团网站建设报价免费推广网站有哪些
  • 龙华网站建设营销推广广东东莞区号
  • 徐汇网站开发培训企业建网站报价
  • 专业网站建设公司兴田德润信任高建设高端网站公司哪家好
  • 烟台网站建设优惠臻动传媒做网站怎么挣钱
  • 重庆网站建设mlfartwordpress4 中文
  • 永州建设企业网站阿里云 网站部署
  • 学校做网站难吗创新logo设计
  • 国内用python做的网站如何做网站讯息
  • 的网站开发工具有哪些免费制作永久企业网站
  • 网站举报查询一个网站开发的权限
  • 简约网站程序海南网络广播电视台少儿频道
  • 深圳高端品牌网站设计wordpress 树形主题
  • 怎么自己创建一个网站国外企业网络研究
  • 去百度建网站北京企业网站设计公司
  • mysql 收费 网站建设wordpress主题后台不显示
  • 网站cname解析陕西住房建设厅考试官方网站
  • 网站建设有关书籍设计制作散发寄递
  • 威海建设信息网站织梦网站广告代码如何写
  • 玉林市网站开发公司wordpress tag静态化
  • 广州网站建设建航科技百度域名书写
  • 免费做网站安全吗网站不备案可以访问吗
  • 网上做网站兼职最近10条重大新闻
  • 企业网站制作 徐州政务网站建设要求
  • 网站链接加密重庆黄埔seo整站优化
  • 没有网站怎么做链接视频播放器crm营销管理系统