sobel图像边缘检测算法的Python及Verilog验证

本文介绍了Sobel图像边缘检测算法的Python实现和Verilog验证过程。通过Python对Lenna图像进行边缘提取,然后使用Verilog进行仿真,并在Modelsim环境下进行测试。尽管Verilog仿真结果存在轻微差异,但总体与Python结果吻合,验证了Verilog的正确性。
摘要由CSDN通过智能技术生成

引言

      本文是之前AI加速器项目的一个补充,即之前AI加速器中PL部分的工作。本文主要介绍的是一种sobel图像边缘检测算法的Python及Verilog实现。

一、sobel图像边缘检测算法的Python实现

      sobel图片边缘检测算法的核心就是图片的卷积操作,我们所用的是如下图所示的一个3*3的卷积核。

-1 0 1
-2 0 2
-1 0 1

      图片的卷积操作简单来说就是移位相乘然后累加运算,具体资料各位可以上网查找,关于原理方面的介绍非常多,本文不再赘述。在本文中,利用Python对lenna图做了一个简单的边缘提取操作,一是为verilog提供测试数据,二是获取结果与verilog仿真结果形成比较,以判断verilog仿真结果的效果如何。  

  • Python实现代码
# -*- coding: utf-8 -*-
"""
Created on Sat Aug 15 14:44:19 2020
@author: lenovo
"""
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
#import skimage
import tensorflow as tf
#import numpy as np
# 有符号数转十六进制补码,返回值为字符串
def int_to_hex(num):
    if(num < 0):
        result = hex(num & 0xff)
    else:
        result = hex(num)
    return result

image = mpimg.imread('lenna.jpg') # 读取lenna图
#image = skimage.transform.resize(image, (64,64)) # 减小像素
#image = (image * 255).astype(np.uint8)# 限定数据范围为 0 - 255
'''
#写入图片数据到txt文件中供verilog仿真使用 512*512=262144
for i in range(512):
    for j in range(512):
        fp = open('lenna.txt',mode='a')# 追加模式
        fp.write(int_to_hex(image[i][j])[2:4]+"\n")
fp.close()# 关闭文件
'''
# 显示原始图片
plt.figure(1)
plt.imshow
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值