python sobel滤波_Sobel滤波器

python sobel滤波_Sobel滤波器一.sobel滤波器介绍sobel滤波器常用来提取灰度图像的水平边缘(水平特征)和竖直边缘(竖直特征)二.sobel算子纵向算子,提取图像水平边缘↑横向算子,提取图像竖直边缘↑三.实验:python实现sobel算子并将算子作用于图像importcv2importnumpyasnp#GrayscaledefBGR2GRAY(img):b=img[:,:,0].cop…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一. sobel滤波器介绍

sobel滤波器常用来提取灰度图像的水平边缘(水平特征)和竖直边缘(竖直特征)

二. sobel算子

python sobel滤波_Sobel滤波器

纵向算子,提取图像水平边缘 ↑

python sobel滤波_Sobel滤波器

横向算子,提取图像竖直边缘 ↑

三. 实验:python实现sobel算子并将算子作用于图像

import cv2

import numpy as np

# Gray scale

def BGR2GRAY(img):

b = img[:, :, 0].copy()

g = img[:, :, 1].copy()

r = img[:, :, 2].copy()

# Gray scale

out = 0.2126 * r + 0.7152 * g + 0.0722 * b

out = out.astype(np.uint8)

return out

# sobel filter

def sobel_filter(img, K_size=3):

if len(img.shape) == 3:

H, W, C = img.shape

else:

H, W = img.shape

# Zero padding

pad = K_size // 2

out = np.zeros((H + pad * 2, W + pad * 2), dtype=np.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 vertical

Kv = [[1., 2., 1.],[0., 0., 0.], [-1., -2., -1.]]

## Sobel horizontal

Kh = [[1., 0., -1.],[2., 0., -2.],[1., 0., -1.]]

# filtering

for 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].astype(np.uint8)

out_h = out_h[pad: pad + H, pad: pad + W].astype(np.uint8)

return out_v, out_h

# Read image

img = cv2.imread(“../paojie.jpg”).astype(np.float)

# grayscale

gray = BGR2GRAY(img)

# sobel filtering

out_v, out_h = sobel_filter(gray, K_size=3)

# Save result

cv2.imwrite(“out_g.jpg”,gray)

cv2.imshow(“result_g”,gray)

cv2.imwrite(“out_v.jpg”, out_v)

cv2.imshow(“result_v”, out_v)

cv2.imwrite(“out_h.jpg”, out_h)

cv2.imshow(“result_h”, out_h)

cv2.waitKey(0)

cv2.destroyAllWindows()

四. 实验结果

python sobel滤波_Sobel滤波器

原图 ↑

python sobel滤波_Sobel滤波器

原图转换为灰度图像 ↑

python sobel滤波_Sobel滤波器

sobel横向算子提取了图像的竖直特征 ↑

python sobel滤波_Sobel滤波器

sobel纵向算子提取了图像的水平特征 ↑

从本实验结果我们观察到,在提取图像在水平或者垂直方向上的线条或轮廓时,可以使用sobel算子。

五. 参考内容:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210094.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • codeigniter 该脚本在运行300s超时退

    codeigniter 该脚本在运行300s超时退

    2022年1月5日
    54
  • jenkins 邮件_acs nano投稿后有确认邮件吗

    jenkins 邮件_acs nano投稿后有确认邮件吗前言前面已经实现在jenkins上展示html的测试报告,接下来只差最后一步,把报告发给你的领导,展示你的劳动成果了。安装EmailExtensionPlugin插件jenkins首页-

    2022年7月29日
    8
  • 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)

    史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)

    2022年4月2日
    41
  • hash碰撞解决方法

    hash碰撞解决方法Hash碰撞冲突我们知道,对象Hash的前提是实现equals()和hashCode()两个方法,那么HashCode()的作用就是保证对象返回唯一hash值,但当两个对象计算值一样时,这就发生了碰撞冲突。如下将介绍如何处理冲突,当然其前提是一致性hash。1.开放地址法开放地执法有一个公式:Hi=(H(key)+di)MODmi=1,2,…,k(k<=m-1)其中,m为哈希表的表长。…

    2022年6月17日
    47
  • async/await 的理解和用法

    async/await 的理解和用法async/await是什么async/await是ES7提出的基于Promise的解决异步的最终方案。asyncasync是一个加在函数前的修饰符,被async定义的函数会默认返回一个Promise对象resolve的值。因此对async函数可以直接then,返回值就是then方法传入的函数。//async基础语法asyncfunctionfun0(){console.log(1);return1;}fun0().then(val=>{conso

    2022年7月12日
    14
  • 穿女装上班的大厂程序员:我知道自己是个男生「建议收藏」

    穿女装上班的大厂程序员:我知道自己是个男生「建议收藏」本文转载自程序员技术“三流码农写UI,二流码农写架构,一流码农写算法,顶级码农穿女装。”——互联网圈子里,一直流传着这样一句无从考证的段子。程序员穿女装,是一个神秘而热门的话题。大部分人都曾经道听途说过相关的故事,也有人在网络上看过“女装大佬”的照片,比如曾经微博非官方举办过一次“程序员女装大赛”,引起过很多程序员的围观。但是生活里,似乎很少看到真实的女装程序员的事例。当小众文化、性别、和互联网的职业交融在一起,他们经历过什么样的故事,产生过什么样…

    2022年7月25日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号