DSP教学实验箱_数字图像处理操作_案例分享:5-13 灰度图像二值化

一、实验目的

学习灰度图像二值化的原理,掌握图像的读取方法,并实现在LCD上显示二值化前后的图像。

二、实验原理

图像二值化

图像的二值化处理就是将图像上的点的灰度置为 0 或 255,也就是将整个图像呈现出明显的黑白效果。即将 256 个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。

在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为 0 或 255 的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。

为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值为 255 表示,否则这些像素点被排除在物体区域以外,灰度值为 0,表示背景或者例外的物体区域。如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阈值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阈值选取技术来分割该图像。动态调节阈值实现图像的二值化可动态观察其分割图像的具体结果。

常用的二值化方法有3种,第一种方法是取阈值为128(相当于0~255的中数(0+255)/2=128),让灰度值小于等于128的变为0(黑色),灰度值大于128的变为255(白色)。

优点:计算量小且速度快。

缺点: 因为这个阈值在不同的图片中均为127,但是不同的图片,他们的颜色分布差别很大,所以用127做阈值,效果肯定是不好的。

第二种方法是计算像素点矩阵中的所有像素点的灰度值的平均值avg(像素点1灰度值+...+像素点n灰度值)/ n = 像素点平均值avg,然后让每一个像素点与avg一 一比较,小于等于avg的像素点就为0(黑色),大于avg的 像素点为255(白色)。

第三种方法是使用直方图方法(也叫双峰法)来寻找二值化阈值,直方图是图像的重要特质。直方图方法认为图像由前景和背景组成,在灰度直方图上,前景和背景都形成高峰,在双峰之间的最低谷处就是阈值所在。取到阀值之后再一一比较就可以了。

程序流程

程序流程设计中首先读取工程目录下的BMP图像,接着进行二值化处理,最后保存图像。

image.png

三、操作现象

实验设备

本实验所需硬件为实验板、仿真器、LCD和电源。

image.png

先来了解一下DSP的开发流程,开发过程中,首先选择CCS的工作区,接着导入、编译工程,完成软件开发后进行硬件连接,再配置仿真器文件,加载GEL文件,最后将CCS连接实验箱,加载并运行程序。

image.png

硬件连接

(1)连接仿真器和电脑的USB接口,

(2)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程,生成可执行文件

将CCS连接实验箱并加载程序

程序加载完成后点击运行程序

运行程序后,CCS的Console窗口会打印相关信息。

稍等片刻后,图像处理完成,程序执行完成后会在断点处停下。

可以通过 CCS 的图像显示窗口查看处理前后的图片对比。

点击工具,选择图像分析工具。在弹出的 Image 窗口中右击鼠标,在弹出的菜单栏中选择"Import Properties",选择工程目录下的 in.txt 配置文件,选择后等待图片加载,加载完成后显示原图片。

txt 配置文件是提前配置好的图像属性,在 Properties 属性可看到 in.txt 文件的设置参数。

再次点击工具,选择图像分析工具。在弹出的 Image 窗口中右击鼠标,在弹出的菜单栏中选择"Import Properties",选择工程目录下的out.txt 配置文件,选择后等待图片加载,加载完成后显示二值化后的图片。

在 Properties 属性可看到out.txt 文件的设置参数。

同时,可在工程的Image 目录下直接查看转换后的图片 Out.bmp。

实验结束后,点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。

image.png

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

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

相关文章

决策树基础:深入理解其核心工作原理

决策树基础:深入理解其核心工作原理 目录 引言决策树的基本概念 什么是决策树决策树的组成部分 决策树的工作原理 特征选择信息增益基尼指数 决策树的生成 ID3 算法C4.5 算法CART 算法 决策树的剪枝 预剪枝后剪枝 决策树的优缺点 优点缺点 决策树的实现 Python 代…

AJAX(1)——axios库的使用

什么是AJAX? AJAX是异步的JavaScript和XML。简单来说,就是使用XMLHttpRequest对象与服务器通信。它可以使用JSON,XML,HTML和text文本等格式发送和接收数据。AJAX最吸引人的就是它异步的特性,也就是说它可以在不重新刷新页面的情况下与服务器通信&#…

昇思25天学习打卡营第25天|LLM应用-基于MindNLP+MusicGen生成自己的个性化音乐

打卡 目录 打卡 应用任务简介 生成音乐 预训练权重模型下载 无提示生成 文本提示生成 音频提示生成 生成配置 应用任务简介 MusicGen 来自 Meta AI 的 Jade Copet 等人提出的基于单个语言模型(LM)的音乐生成模型,能够根据文本描述或…

CompletableFuture异步编程多任务执行和简单场景使用

CompletableFuture提供了许多回调函数,来处理异步编程 获取任务结果方法 // 如果完成则返回结果,否则就抛出具体的异常 public T get() throws InterruptedException, ExecutionException // 最大时间等待返回结果,否则就抛出具体异常 publ…

NFS服务器环境搭建

1、什么是NFS ● 定义: NFS是一种在计算机系统之间共享文件和目录的协议,最初由Sun Microsystems开发,现在已经成为广泛使用的网络文件系统之一。 ● 核心功能: 通过网络(特别是TCP/IP网络)实现文件共享…

探索Conda环境的迷宫:conda env list命令全解析

📜 探索Conda环境的迷宫:conda env list命令全解析 Conda不仅是Python编程生态中强大的包管理器,还是一个高效的环境管理器。它允许用户创建隔离的环境,每个环境可以拥有不同版本的库和工具,从而避免版本冲突并提高开…

微信小程序配置访问服务器失败所发现的问题及解决方案

目录 事前现象问题1:问题现象:问题分析: 问题2:问题现象:问题分析:解决方案: 事后现象 事前现象 问题1: 问题现象: 在本地调试时,一切顺利,但一…

MySQL:送分or送命 varchar(30) 与 int(10)

摘要: VARCHAR(30) 和 INT(10) 在MySQL中代表两种不同类型的字段,它们之间的主要区别在于它们存储的数据类型、存储方式以及显示宽度的含义。 正文: INT(10) 在MySQL中,当你看到INT(10)这样的数据类型定义时,可能会…

LeetCode707 设计链表

前言 题目: 707. 设计链表 文档: 代码随想录——设计链表 编程语言: C 解题状态: 代码功底不够,只能写个大概 思路 主要考察对链表结构的熟悉程度,对链表的增删改查,比较考验代码功底以及对链表…

Flink Doirs Connector 常见问题:Doris目前不支持流读

常见问题 Doris Source 在数据读取完成后,流为什么就结束了? 目前 Doris Source 是有界流,不支持 CDC 方式读取。 问题:对于 Flink Doris DataStream,Flink 想要在 流式读取 Doirs / 实时读 Doris,目前读…

03--KVM虚拟化

前言:这里开始涉及到云计算内容,虚拟化使云计算发展,云计算推动虚拟化进步,两者相辅相成,这一章总结一下kvm虚拟化的解决方案。 1、基础概念 1.1、云计算 以前要完成信息处理, 是需要在一个客观存在的计算机上完成的…

Node.js版本管理工具之NVM

目录 一、NVM介绍二、NVM的下载安装1、NVM下载2、卸载旧版Node.js3、安装 三、NVM配置及使用1、设置nvm镜像源2、安装Node.js3、卸载Node.js4、使用或切换Node.js版本5、设置全局安装路径和缓存路径 四、常用命令技术交流 博主介绍: 计算机科班人,全栈工…

卷积神经网络(一)---原理和结构

在介绍卷积神经网络之前,先提出三个观点,正是这三个观点使得卷积神经网络能够真正起作用。 1. 局部性 对于一张图片而言,需要检测图片中的特征来决定图片的类别,通常情况下这些特征都不是由整张图片决定的,而是由一些…

vscode 环境

这张截图显示的是在VS Code(Visual Studio Code)中选择Python解释器的界面。不同的Python解释器及其虚拟环境列出了可选项,用户可以根据需要选择合适的解释器来运行Python代码。以下是对截图中信息的详细解释: 解释器选择界面 当…

构造方法 继续学习~

python类可以使用:__init__()方法,称为构造方法。 可以实现: 在创建类对象时,会自动执行 在创建类对象时,将传入参数自动传递给__init__()方法使用 # 构造方法的名称:__init__ class Student:name Noneage Nonet…

前后端分离真的好吗?

我们经常看到一些页面很卡,是由于前后断分离技术导致的,大量数据都由后端提供,甚至包括字体大小,边距。 每次后端都要搬一个大箱子过来,能不慢吗?如果出现这种问题,怎么解决呢? 首先…

Chrome浏览器设置暗黑模式 - 护眼模式 - 亮度调节 - DarkReader - 地址栏和书签栏设置为黑色背景

效果图 全黑 浅灰 (DarkReader设置开启亮色亮度-25) 全白 前言 主要分两部分需要操作, 1)地址栏和书签栏 》 需要修改浏览器的外观模式 2)页面主体 》 需要安装darkreader插件进行设置 步骤 1)地址栏和…

spring 中的注解操作

在 spring 中,对注解的操作,都位于 spring-core 模块下的 org.springframework.core.annotation 包中。通过 annotation 包中定义的相关类,完成对类型、方法、字段等元素上注解的操作。 主要类介绍 MergedAnnotations 接口,为 …

Java21的主要新特性总结

目录 概述 变动说明 重要变更和信息 下载地址 Java21新特性总结 1、JEP 441: Switch 的模式匹配(正式特性) 功能进化 Switch 模式匹配 类型标签 null标签 守卫标签 使用enum常量作值 语法总结 2、JEP 440:Record模式&#xff08…

常用工具类

常用工具类 date类 日期设置方法 方法 描述 setDate() 以数值(1-31)设置日 setFullYear() 设置年(可选月和日) setHours() 设置小时(0-23) setMilliseconds() 设置毫秒(0-999&#x…