当前位置: 首页 > news >正文

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

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:ROWfor c = 1 : COLdata((r-1)*COL+c) = bitshift(R(r,c),-5); %红色层数据右移5位end
endfid = fopen('D:\FPGA\FPGA_Basic_Pro\sobel\matalb\logo.txt','w+'); %打开或新建一个txt文件for i = 1:ROW*COLfprintf(fid,'%02x' ,data(i)); %写入图片数据
end
fclose(fid);


http://www.mrgr.cn/news/27619.html

相关文章:

  • python学习_3.正则表达式
  • 对称加密与非对称加密:密码学的基石及 RSA 算法详解
  • iOS swift开发--- 加载PDF文件并显示内容
  • PostgreSQL中表的数据量很大且索引过大时怎么办
  • arkUI:水果选择与管理:基于 ArkUI 的长按编辑功能实现
  • 【计算机网络】UDP网络程序
  • AI预测体彩排3采取888=3策略+和值012路或胆码测试9月15日升级新模型预测第81弹
  • 每日一题——第八十九题
  • Qt 菜单栏、工具栏、状态栏、标签、铆接部件(浮动窗口) 设置窗口核心部件(文本编辑控件)的基本使用
  • 一键生成中秋国风插画!FLUX中秋专属Lora的使用教程
  • 聊聊OceanBase合并和转储
  • 无线通信感知/雷达系统算法专业技术栈
  • 155K Star,Python 入门到进阶最佳学习资源
  • 算法参数对拥塞控制的影响
  • 攻击者如何在日常网络资源中隐藏恶意软件
  • 【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载
  • Python [ GUI编程自学 ],虽然但是,还是想出一个系列
  • 跨境电商代购新纪元:一键解锁全球好物,系统流程全揭秘
  • 使用 PyCharm 新建 Python 项目详解
  • c语言写的环形队列
  • 基于BiGRU+Attention实现风力涡轮机发电量多变量时序预测(PyTorch版)
  • 三种mybatis表的列名和对象属性名不一致处理方法
  • java项目之基于工程教育认证的计算机课程管理平台(源码+论文)
  • F5设备绑定EIP
  • 【Vue】2
  • 国风编曲:了解国风 民族调式 五声音阶 作/编曲思路 变化音 六声、七声调式