基于Sobel算法的边缘检测设计与实现

news2024/11/15 19:57:21

1、边缘检测

        针对的时灰度图像,顾名思义,检测图像的边缘,是针对图像像素点的一种计算,目的时标识数字图像中灰度变化明显的点,图像的边缘检测,在保留了图像的重要结构信息的同时,剔除了可以认为不相关的信息,大幅度减少了数据量,便于图像的传输和处理;

        边缘检查的方法大致可以分为两类:基于查找的一类,通过寻找图像一阶导数中最大值和最小值来检测边界,包括Sobel算法、Roberts Cross算法等;基于零穿越的一类,通过寻找图像二阶导数零穿越来寻找边界,包括Canny算法,Laplacian算法等。

        Sobel算法:准确率比较低,但是效率比较高;

        详细见下面网址:

https://blog.csdn.net/great_yzl/article/details/119709699 

        Soble算法的核心就是Sobel算子,该算子包含两组3x3的矩阵;

        对于图像而言,取3行3列的图像数据,将图像数据与对应位置的算子的值相乘再相加,得到x方向的Gx,和y方向的Gy,将得到的Gx和Gy,平方后相加,再取算术平方根,得到Gxy,近似值为Gx和Gy绝对值之和,将计算得到的Gxy与我们设定的阈值相比较,Gxy如果大于阈值,表示该点为边界点,此点显示黑点,否则显示白点。 

 2、实验设计

        我们将Sobel算法在图像边缘检查中的实现分为4步,第1步,通过Gx、Gy的计算公式结合FIFO求和算法求取Gx、Gy的值;第2步,求得Gx、Gy的绝对值;第3步,将Gx、Gy带入Gxy计算公式,求得Gxy的值;第4步,将求得的Gxy与设定的阈值相比较,当Gxy大于等于阈值,赋值rgb为黑色,否则, rgb赋值为白色。

        图片正在经过Sobel算法之后,输出的图片相比于输入时的图片会少2行2列数据,这是因为在求取Gx、Gy时,要使用FIFO求和算法,该算法只有在第2行或第2列数据输入时才开始执行,第0、1行或第0、1列不会进行求和运算,更无数据输出,所以会缺失的2行2列。

2.1 实验目标

        实验目标:使用Matlab软件将图片转换为灰度图像,并且将灰度图像的高 3 位取出存放为txt 文本 ,PC机通过串口RS232传输图片数据给FPGA,FPGA通过Sobel算法检测出图片的边缘轮廓,将处理后的图片在VGA显示器上显示出来。

        实验要求:VGA显示模式:640x480@60;传入图片分辨率大小100x100。

2.2 图片预处理

        在进行Sobel算法之前,先要将图片进行一下预处理,将彩色图片转换成灰度图像,并且将灰度图像的高 3 位取出存放为txt 文本,图解和代码;

matlab代码:

clc; %清理命令行窗口

clear all; %清理工作区

image = imread('D:\FPGA\FPGA_Basic_Pro\sobel\matalb\curry_logo.bmp'); %使用imread函数读取图片数据

figure;

imshow(image); %窗口显示图片
R = image(:,:,1); %提取图片中的红色层生成灰度图像

figure;

imshow(R); %窗口显示灰色图像

[ROW,COL] = size(R); %灰色图像大小参数

data = zeros(1,ROW*COL); %定义一个初值为0的数组,存储转换后的图片数据

for r = 1:ROW
    for c = 1 : COL
        data((r-1)*COL+c) = bitshift(R(r,c),-5); %红色层数据右移5位
    end
end

fid = fopen('D:\FPGA\FPGA_Basic_Pro\sobel\matalb\logo.txt','w+'); %打开或新建一个txt文件

for i = 1:ROW*COL
    fprintf(fid,'%02x' ,data(i)); %写入图片数据
end
fclose(fid);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2138768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【WPF】桌面程序开发之xaml页面绑定数据模型详解

使用Visual Studio开发工具,我们可以编写在Windows系统上运行的桌面应用程序。其中,WPF(Windows Presentation Foundation)项目是一种常见的选择。然而,对于初学者来说,WPF项目中xaml页面的布局设计可能是一…

unity3d入门教程七

unity3d入门教程七 17.1物理系统17.2静态刚体17.3刚体的碰撞17.4刚体的反弹18.1运动学刚体18.2碰撞检测18.3碰撞事件回调18.4目标的识别18.5碰撞的规避 17.1物理系统 在物理系统中的物体具有质量和速度的是刚体 不用写代码就会自由落体运动了 17.2静态刚体 给 ‘地面’ 添…

conda安装qgis(亲测没问题)

conda安装qgis(亲测没问题,目前测试win10,linux其实也是可以的) 目录 1.前提 2.准备条件 3.实战 4.扩展 1.前提 意外发现conda可以安装qgis,即使不是完全版,但是矢量空间分析都可以用,那么…

影刀RPA实战:网页爬虫之CSDN博文作品数据

今天我们使用影刀来采集网页数据,影刀RPA是一款功能强大的自动化办公软件,它可以模拟人工的各种操作,帮助企业自动处理大量重复性、有逻辑规则的工作。影刀RPA在网页数据采集方面表现出色,能够实现对任何桌面软件、Web程序的自动化…

危机中的机遇:客户服务在品牌危机管理中的角色与价值

在瞬息万变的商业环境中,品牌危机如同暗流涌动的漩涡,随时可能将企业卷入深渊。然而,正如古语所云:“祸兮福之所倚”,危机之中往往也蕴藏着转机与机遇。在这一过程中,客户服务作为企业与消费者之间的桥梁&a…

物品识别——基于python语言

目录 1.物品识别 2.模型介绍 3.文件框架 4.代码示例 4.1 camera.py 4.2 interaction.py 4.3 object_detection.py 4.4 main.py 4.5 运行结果 5.总结 1.物品识别 该项目使用Python,OpenCV进行图像捕捉,进行物品识别。我们将使用YOLO&#xff08…

Dating App约会软件都有哪些商业化策略

在设计一个成功的Dating App时,吸引并留住用户(特别是女用户)和实现商业化是两个核心任务。比如探探、陌陌等,以下是可行的产品流程思路,以及商业化的功能设计策略,借鉴了成熟的约会平台的经验。 吸引并留住…

2000-2021年3月海关数据库

2000-2021年3月海关数据库 1、时间:2000-2021年3月 2、指标:2000-2015数据变量包括:年份、截止日期、进出口分类代码、进出口分类名称、HS商品编码、HS商品名称、金额_美元、数量、价格、经营单位代码、经营单位名称、经营单位地址、电话、…

AI论文写作测评!类似茅茅虫论文写作助手网站

在当前的学术研究和写作环境中,AI论文写作助手成为了许多学者和学生的重要工具。其中,千笔-AIPassPaper和茅茅虫论文写作助手是两款备受关注的平台。本文将对这两款工具进行详细测评,并推荐适合不同需求的用户使用。 千笔-AIPassPaper AI论文…

linux安全软件Hydra使用教程

Hydra 是一个强大的网络登录工具,常用于渗透测试,支持对多种服务和协议(如 SSH、FTP、HTTP 等)进行暴力crack攻击。它可以通过字典攻击来测试用户名和密码的有效性。以下是关于如何使用 Hydra 的基本步骤和示例: 1. 安…

【mechine learning-九-梯度下降】

梯度下降 更加通用的梯度下降算法算法步骤 上一节讲过,随机的寻找w和b使损失最小不是一种合适的方法,梯度下降算法就是解决解决这个问题的,它不仅可以用于线性回归,还可以用于神经网络等深度学习算法,是目前的通用性算…

【QT】定时器使用

文章目录 关于 Qt 定时器使用的注意细节总结实例-检查工具使用周期时间是否合理UI设计头文件 remind.h源文件 remind.cpp实现效果 关于 Qt 定时器使用的注意细节总结 一、创建与初始化 使用 QTimer 类来创建定时器。可以在构造函数中指定父对象,确保定时器在正确的…

跨境电商代购新纪元:一键解锁全球好物,系统流程全揭秘

添加图片注释,不超过 140 字(可选) 在全球化日益加深的今天,跨境电商代购成为了连接消费者与世界各地优质商品的桥梁。本文将在CSDN平台上,深入剖析跨境电商代购系统的功能流程,带您一窥其背后的技术奥秘与…

vue3+ant design vue实现可编辑表格弹出气泡弹出窗~

1、这里主要是介绍下::v-deep伪元素的作用。用于穿透组件作用域&#xff0c;以便在组件内部修改样式。用来覆盖Ant Design Vue组件库中的样式 <a-table:dataSource"dataList":columns"columns":scroll"{ x: 100% }":pagination"false&q…

架构师备考的一些思考(四)

前言 对于数学&#xff0c;我们之前学的是对的&#xff0c;但不是真的&#xff0c;所以我们没有数学思维。 对于计算机&#xff0c;我们学校教的是对的&#xff0c;但不是真的&#xff0c;所以仅仅从学校学习知识的应届毕业生&#xff0c;不论985,211&#xff0c;本科&#xff…

优化深度学习模型训练过程:提升PASCAL VOC 2012数据集上Deeplabv3+模型训练效率的策略

创作不易&#xff0c;您的打赏、关注、点赞、收藏和转发是我坚持下去的动力&#xff01; 优化说明&#xff1a; 避免重复下载和解压数据集&#xff1a;将downloadTrue改为downloadFalse&#xff0c;防止每次运行代码都重新下载和解压数据集&#xff0c;从而节省时间。 使用pin…

8. Transforms的使用(三)-- Resize

Transforms的使用(三) 1. 为什么要使用Resize 在模型的训练过程中往往需要图片数据的维度相同,才能适应深度学习模型中的相关神经网络结构,这时候就需要使用Resize保证所有的图片保持相同的尺寸2. 使用Resize调整图片的尺寸 在pytorch2.3的版本上,Resize()支持对Tensor类…

k8s Service 服务

文章目录 一、为什么需要 Service二、Kubernetes 中的服务发现与负载均衡 -- Service三、用例解读1、Service 语法2、创建和查看 Service 四、Headless Service五、集群内访问 Service六、向集群外暴露 Service七、操作示例1、获取集群状态信息2、创建 Service、Deployment3、创…

分贝转换 1 mVpp = 9.03dBmV

分贝转换 1 mVpp 9.03dBmV 函数发生器调节如下参数在频谱仪器上能看到9.03dBmv的电压值函数发生器产生 30mVpp 频谱仪会显示多少dBmV 函数发生器调节如下参数 输出频率&#xff1a;10 MHz 波形类型&#xff1a;正弦波 阻抗&#xff1a;50 Ω 幅度&#xff1a;1 mVpp …

【笔记】CCF直播:《如何在国际会议上有效交流》(2024-9-15)

目录 一、提问的勇气二、提问什么三、其他主题的报告为什么听四、会议前怎么读大量论文&#xff1f;五、workshop为什么参加&#xff1f;Poster环节&#xff1f;六、提问环节七、其他 今天听了《如何在国际会议上有效交流》的直播讲座&#xff0c;记录一些笔记。 一、提问的勇…