文章目录

  • 前言
  • 一、单方向上的锐化
  • 二、无方向上的锐化
    • 1.Roberts算子

前言

记录学习锐化算子的代码和思路。使用的图像为lena小姐姐。


一、单方向上的锐化

由于图像我们可以认为由垂直和水平两个方向组成,因此,单方向上的锐化也考虑水平锐化和垂直锐化。
选择水平和垂直锐化模板为H1,H2。

import cv2
import numpy as npimport img_filter2D #我自己写的卷积求和函数,可以使用第三库函数代替img = cv2.imread("lena.bmp",0)
H1 = np.array([[1,2,1],[0,0,0],[-1,-2,-1]])
H2 = np.array([[1,0,-1],[2,0,-2],[1,0,-1]])new_img1 = img_filter2D.my_filter2D(img,H1)
new_img2 = img_filter2D.my_filter2D(img,H2)cv2.imshow("Horizontal",new_img1)
cv2.imshow("Vertical",new_img2)cv2.waitKey(0)
cv2.destroyAllWindows()

结果图如下。

由于我们使用的模板有负数的存在,因此,有可能会在某些区域产生负的像素值的现象。
解决这个主要有两个思路:
1.每个像素位置都+一个常数,最后将像素的范围限制在0-255,但这种处理方式会出现“浮雕”现象
2.取绝对值。其实是对边缘有方向的提取。
效果图如下:

二、无方向上的锐化

1.Roberts算子

Roberts算子是一种常用的边缘检测算子,它是由Lawrence Roberts于1963年提出的。它主要是用于图像中的边缘检测,可以对图像进行快速检测,检测到的边缘效果较为明显。

Roberts算子是一种基于差分的算子,其主要思想是通过对像素点之间的差分来检测图像中的边缘。Roberts算子将每个像素与其右下方的像素进行差分运算,然后将两个差值取绝对值的和作为该像素的边缘强度值。因此,Roberts算子在计算边缘时只考虑了左上到右下左下到右上两个方向。

Roberts算子的计算公式如下:

Gx = |img(x+1, y+1) - img(x, y)|
Gy = |img(x, y+1) - img(x+1, y)|
G(x, y) = Gx + Gy
其中,Gx和Gy分别表示在水平和垂直方向上的差分值,G(x, y)表示该像素的边缘强度值。
代码如下(示例):

import cv2# 读入图像
img = cv2.imread('image.jpg')
# 将图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用Roberts算子进行边缘检测
edges = cv2.roberts(gray)
# 显示并保存边缘检测结果
cv2.imshow('Edges (Roberts)', edges)
cv2.waitKey(0)
cv2.imwrite('edges_roberts.jpg', edges)

自己写的roberts函数如下:

def my_roberts(img):h,w = img.shape[:2]G = np.zeros((img.shape[0],img.shape[1]),dtype=np.float32)for i in range(h-1):for j in range(w-1):Gx = abs(img[i+1][j+1]-img[i][j])Gy = abs(img[i+1][j]-img[i][j+1])G[i][j] = Gx+Gynew_img = np.clip(G, 0, 255).astype(np.uint8)return new_img

问题:一直报这个错误,但是我没想明白为什么会溢出。

C:\Users\14605\Desktop\co\Roberts.py:14: RuntimeWarning: overflow encountered in ubyte_scalarsGx = abs(img[i+1][j+1]-img[i][j])
C:\Users\14605\Desktop\co\Roberts.py:15: RuntimeWarning: overflow encountered in ubyte_scalarsGy = abs(img[i+1][j]-img[i][j+1])
C:\Users\14605\Desktop\co\Roberts.py:16: RuntimeWarning: overflow encountered in ubyte_scalarsG[i][j] = Gx+Gy

结果图:

03Roberts算子相关推荐

  1. 写算子单元测试Writing Unit Tests

    写算子单元测试Writing Unit Tests! 一些单元测试示例,可在tests/python/relay/test_op_level3.py中找到,用于累积总和与乘积算子. 梯度算子 梯度算子 ...

  2. 如何将算子添加到Relay

    如何将算子添加到Relay 本文将介绍在Relay中注册新TVM算子所需的步骤.将PR添加累积产品运算示例.PR本身建立在另一个PR的基础上,该PR添加了一个累积和运算. 注册新算子需要几个步骤: 添 ...

  3. 使用Tensor Expression张量表达式处理算子

    使用Tensor Expression张量表达式处理算子 这是TVM中Tensor表达语言的入门教程.TVM使用特定于域的张量表达式来进行有效的内核构造. 本文将演示使用张量表达式语言的基本工作流程. ...

  4. 在Relay中注册新TVM算子

    在Relay中注册新TVM算子 在本文件中,将介绍在Relay中注册新TVM算子所需的步骤.将以添加累积算子的PR为例.PR本身建立在另一个PR的基础上,该PR添加了一个累积和运算. 注册新算子需要几 ...

  5. TVM darknet yolov3算子优化与量化代码的配置方法

    TVM darknet yolov3算子优化与量化代码的配置方法 使用以下接口函数  tvm.relay.optimize  quantize.quantize 实际代码: convert nnv ...

  6. TensorFlow算子融合

    TensorFlow算子融合 • TensorFlow的特点: o 真正的可移植性 o 引入各种计算设备的支持,包括CPU,GPU,以及能够很好的运行在各种系统的移动端 o 多语言支持 o 支持C++ ...

  7. TVM图优化与算子融合

    TVM图优化与算子融合 计算图的定义 Computational graphs: a common way to represent programs in deep learning framewo ...

  8. MXNet 图优化与算子融合

    MXNet 图优化与算子融合Graph Optimization and Quantization based on subgraph and MKL-DNN Purpose MKL-DNN引入了两个 ...

  9. TVM优化Deep Learning GPU算子

    TVM优化Deep Learning GPU算子 高效的深度学习算子是深度学习系统的核心.通常,这些算子很难优化,需要HPC专家付出巨大的努力. 端到端张量IR / DSL堆栈TVM使这一过程变得更加 ...

最新文章

  1. FOPEN FUNCTION
  2. 睿熙科技完成Pre-A融资,用于VCSEL芯片量产
  3. Quartus16.1布线优化选择,重编译可能会满足时序
  4. 【DIY】(开发板不吃灰运动)CC3200LaunchPad改装红外温度计
  5. 【数据库】关系型数据库开发
  6. java 录音_用JAVA实现不限时录音功能
  7. USACO 2006 Open, Problem. The Country Fair 动态规划
  8. r语言 图形一览_R语言实战(第2版):第三章 图形初阶(01)
  9. t–sql pl–sql_SQL串联正确完成–第1部分–可疑做法
  10. iOS设计模式-适配器
  11. Zabbix 优缺点分别有哪些?
  12. golang 内存分析/动态追踪
  13. 学习了Python大数据之后,将来主要做什么
  14. 基于java的大学生奖学金管理系统
  15. 第十一章:项目风险管理 - (11.5 规划风险应对)
  16. SaaS运营实战:B端与C端的区别在哪?
  17. 第六周助教工作总结——NWNU李泓毅
  18. Python3:私有成员
  19. 内网穿透的概念及解决方案
  20. 线性回归的损失函数与逻辑回归的损失函数

热门文章

  1. Pcap数据包资源下载汇总-恶意威胁流量
  2. 张凌杰 html5,武汉理工大学第四届学位评定委员会第三次会议授予博士、硕士学位名单...
  3. 【python 题练】
  4. Spring Container Extension
  5. Rabbitmq消息中心_消息中心总体方案
  6. Javaweb核心响应对象
  7. 核PCA(Kernel PCA)学习笔记
  8. 甘肃地形图之陇右地形分析、DEM数据下载
  9. 51单片机与LCD1602接口电路与程序
  10. 栅栏密码(The Rail-Fence Cipher)