python sobel算子_python自编程序实现——robert算子、sobel算子、Laplace算子进行图像边缘提取...
实现思路:
1,将传进来的图片矩阵用算子进行卷积求和(卷积和取绝对值)
2,用新的矩阵(与原图一样大小)去接收每次的卷积和的值
3,卷积图片所有的像素点后,把新的矩阵数据类型转化为uint8
注意:
必须对求得的卷积和的值求绝对值;矩阵数据类型进行转化。
完整代码:
import cv2
import numpy as np
# robert 算子[[-1,-1],[1,1]]
def robert_suanzi(img):
r, c = img.shape
r_sunnzi = [[-1,-1],[1,1]]
for x in range(r):
for y in range(c):
if (y + 2 <= c) and (x + 2 <= r):
imgChild = img[x:x+2, y:y+2]
list_robert = r_sunnzi*imgChild
img[x, y] = abs(list_robert.sum())# 求和加绝对值
return img
# # sobel算子的实现
def sobel_suanzi(img):
r, c = img.shape
new_image = np.zeros((r, c))
new_imageX = np.zeros(img.shape)
new_imageY = np.zeros(img.shape)
s_suanziX = np.array([[-1,0,1],[-2,0,2],[-1,0,1]])# X方向
s_suanziY = np.array([[-1,-2,-1],[0,0,0],[1,2,1]])
for i in range(r-2):
for j in range(c-2):
new_imageX[i+1, j+1] = abs(np.sum(img[i:i+3, j:j+3] * s_suanziX))
new_imageY[i+1, j+1] = abs(np.sum(img[i:i+3, j:j+3] * s_suanziY))
new_image[i+1, j+1] = (new_imageX[i+1, j+1]*new_imageX[i+1,j+1] + new_imageY[i+1, j+1]*new_imageY[i+1,j+1])**0.5
# return np.uint8(new_imageX)
# return np.uint8(new_imageY)
return np.uint8(new_image)# 无方向算子处理的图像
# Laplace算子
# 常用的Laplace算子模板 [[0,1,0],[1,-4,1],[0,1,0]] [[1,1,1],[1,-8,1],[1,1,1]]
def Laplace_suanzi(img):
r, c = img.shape
new_image = np.zeros((r, c))
L_sunnzi = np.array([[0,-1,0],[-1,4,-1],[0,-1,0]])
# L_sunnzi = np.array([[1,1,1],[1,-8,1],[1,1,1]])
for i in range(r-2):
for j in range(c-2):
new_image[i+1, j+1] = abs(np.sum(img[i:i+3, j:j+3] * L_sunnzi))
return np.uint8(new_image)
img = cv2.imread(‘1.jpg‘, cv2.IMREAD_GRAYSCALE)
cv2.imshow(‘image‘, img)
# # robers算子
out_robert = robert_suanzi(img)
cv2.imshow(‘out_robert_image‘, out_robert)
# sobel 算子
out_sobel = sobel_suanzi(img)
cv2.imshow(‘out_sobel_image‘, out_sobel)
# Laplace算子
out_laplace = Laplace_suanzi(img)
cv2.imshow(‘out_laplace_image‘, out_laplace)
cv2.waitKey(0)
cv2.destroyAllWindows()
python sobel算子_python自编程序实现——robert算子、sobel算子、Laplace算子进行图像边缘提取...相关推荐
- python图像边缘提取_python通过robert、sobel、Laplace算子实现图像边缘提取详解
实现思路: 1,将传进来的图片矩阵用算子进行卷积求和(卷积和取绝对值) 2,用新的矩阵(与原图一样大小)去接收每次的卷积和的值 3,卷积图片所有的像素点后,把新的矩阵数据类型转化为uint8 注意: ...
- python实现sobel_python通过robert、sobel、Laplace算子实现图像边缘提取详解
实现思路: 1,将传进来的图片矩阵用算子进行卷积求和(卷积和取绝对值) 2,用新的矩阵(与原图一样大小)去接收每次的卷积和的值 3,卷积图片所有的像素点后,把新的矩阵数据类型转化为uint8 注意: ...
- python 视觉技术_python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)...
机器视觉是人工智能正在快速发展的一个分支.简单说来,机器视觉就是用机器代替人眼来做测量和判断.它是一项综合技术,包括图像处理.机械工程技术.控制.电光源照明.光学成像.传感器.模拟与数字视频技术.计算 ...
- 图像处理中的梯度、导数如何求?(Robert算子,Sobel算子,Prewitt算子,Laplace算子)
梯度的求法是多种多样的,根据不同的处理需要选择合适的算子(模版). 1.水平垂直差分法 2.Robert 梯度算子 3.Sobel算子 垂直方向 ...
- python边缘检测代码_python Canny边缘检测算法的实现
图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.对于数字图像的离散信号, ...
- python canny检测_python Canny边缘检测算法的实现
图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.对于数字图像的离散信号, ...
- 【OpenCV 】Sobel 导数/Laplace 算子/Canny 边缘检测
canny边缘检测见OpenCV [七]----边缘提取算子(图像边缘提取)--canny算法的原理及实现 1 Sobel 导数 1.1.1 原因 上面两节我们已经学习了卷积操作.一个最重要的卷积运算 ...
- Python学习教程(Python学习视频_Python学些路线):Day05 总结和练习
Python学习教程(Python学习视频_Python学些路线):总结和练习 练习清单 寻找"水仙花数". 寻找"完美数". "百钱百鸡" ...
- python反向切片_python切片
最近抽空的时候在学习python, 所以也会时不时的更新一些python的学习笔记, 今天就更新一个python比较特殊的地方, 切片. 在python中, 提供了一种叫做切片的方法用来截取数组(在p ...
最新文章
- Qt实现主界面圆角化
- win10启动修复_以安全模式启动win10的4种方法,简单高效,修复电脑故障必用技巧...
- java编程计算_java编程之输入并进行计算
- K8S实战之环境部署1.18(一)
- 深度学习2.0-23.Keras高层接口之CIFAR10自定义网络实战
- vue 引入json地图_vue中echarts引入中国地图
- Misra-C编码规范全解读 - Misra C 概述
- Redis数据结构-字符串对象(SDS)
- IP-MAC绑定到底有多重要?(白目的见解)
- 深色背景黑底白字,蓝底白字课件材料“洗白”打印,ps批处理教程
- Final Cut Pro X Guru: Advanced Trimming Final Cut Pro X Guru:高级修剪 Lynda课程中文字幕
- 计算机学院举办 温暖冬日 感恩社会 活动,温暖冬日 感恩社会 计算机学院举办冬季送温暖活动...
- django批量修改table_Django 使用 modelformset 组件批量修改表单数据
- 解决打印机“正在删除、正在打印”没反应问题
- 如何修改桌面的存放路径?(将桌面放到D盘或E盘)
- PHP+在线电子小说网站的设计与实现 毕业设计-附源码260907
- 全国行政分区明细表(省市区比较2010年左右)(第一部分)
- 15、项目:见缝插针游戏---界面
- 我入门 Python 后总结的基础教程
- “云”中智控 IT管理新境界