MATLAB:Image Processing Toolbox工具箱入门实战

目录

1.基本图像导入、处理和导出

2.实战项目一:利用imfindcircles()函数检测和测量图像中的圆形目标


1.基本图像导入、处理和导出

Basic Image Import, Processing, and Export- MATLAB & SimulinkThis example shows how to read an image into the workspace, adjust the contrast in the image, and then write the adjusted image to a file.icon-default.png?t=N7T8https://www.mathworks.com/help/releases/R2021b/images/image-import-and-export.html以下是输入的缺陷检测图片1.jpg(左),和经过histeq(直方图均衡使强度值扩展分布到了图像的完整范围内)函数提高对比度的2.jpg(右)。

I = imread("1.jpg");
whos I % 使用 whos 命令,检查 imread 函数如何在工作区中存储图像数据。
% 调用 imhist 函数创建直方图。
% 请在调用 imhist 之前使用 figure 命令,这样直方图就不会覆盖当前图窗窗口中显示的图像 I。
imhist(I)  
I2 = histeq(I);  % 使用 histeq 函数提高图像的对比度
imshow(I2)
imwrite(I2, '2.jpg');  % 使用 imwrite 函数,将刚刚经过调整的图像 I2 写入磁盘文件
imfinfo('2.jpg')  % imfinfo 函数返回文件中图像的相关信息

2.实战项目一:利用imfindcircles()函数检测和测量图像中的圆形目标

Detect and Measure Circular Objects in an Image- MATLAB & Simulink ExampleThis example shows how to automatically detect circular objects in an image and visualize the detected circles.icon-default.png?t=N7T8https://www.mathworks.com/help/releases/R2021b/images/detect-and-measure-circular-objects-in-an-image.htmlimfindcircles()使用基于圆形 Hough 变换 (CHT) 的算法在图像中寻找圆形。之所以使用这种方法,是因为当存在噪声、遮挡和变化的光照条件时该方法表现稳健。

有关imfindcircles()的详细信息,请参阅帮助文档:

Find circles using circular Hough transform - MATLAB imfindcirclesThis MATLAB function finds the circles in image A whose radii are approximately equal to radius.icon-default.png?t=N7T8https://www.mathworks.com/help/releases/R2021b/images/ref/imfindcircles.html本项目旨在演示调参来寻求圆目标的过程。

rgb = imread('coloredChips.png');
imshow(rgb)% 此段代码是为了清楚对象是比背景亮还是比背景暗,输出灰度图片看一看
% gray_image = rgb2gray(rgb);
% imshow(gray_image)% 此段代码用来确定imfindcircles函数里的radiusRange,测出来应该是[25 30]
% d = drawline;  % 画一条线,大致画出圆的直径
% pos = d.Position  % 线的位置
% diffPos = diff(pos);  % 各行之间的一阶差分,也就是delta x和delta y
% diameter = hypot(diffPos(1),diffPos(2))  % 平方和的平方根(斜边)% 这里开始找圆,用的是imfindcircles()函数
% 背景相当亮,大多数塑料片比背景暗,将参数 'ObjectPolarity' 设置为 'dark' 以搜索较暗的圆。
% imfindcircles 有两种不同寻找圆的方法:默认方法(称为相位编码方法)/两阶段方法,这里指定使用两阶段方法
% 两种方法都能准确找到部分可见(遮挡)塑料片的中心和半径。
[centers,radii] = imfindcircles(rgb,[25 30],'ObjectPolarity','dark', ...'Sensitivity',0.92,'Method','twostage');% 注意到黄色圆都没有被检测到
% 与背景相比,黄色塑料片的强度几乎相同,甚至更亮。因此,要检测黄色塑料片,'ObjectPolarity' 改为 'bright'。
% [centersBright,radiiBright] = imfindcircles(rgb,[25 30], ...
%     'ObjectPolarity','bright','Sensitivity',0.95)
% 找到了三个原先未检测到的黄色塑料片,但仍有黄色塑料片未检测到% 要查找圆,imfindcircles 仅使用图像中的边缘像素。这些边缘像素基本上是具有高梯度值的像素。
% 'EdgeThreshold' 参数控制像素的梯度值必须有多高,才能将其视为边缘像素并包含在计算中。
% 该参数的高值(更接近 1)只允许包含强边缘(较高梯度值),而低值(更接近 0)的宽容度更高,可在计算中包含较弱的边缘(较低梯度值)。
% 对于检测不到黄色塑料片的情况,是因为对比度低,一些边界像素(在塑料片的圆周上)预期具有低梯度值。因此,请降低 'EdgeThreshold'。
[centersBright,radiiBright,metricBright] = imfindcircles(rgb,[25 30], ...'ObjectPolarity','bright','Sensitivity',0.95,'EdgeThreshold',0.1);imshow(rgb)
hBright = viscircles(centersBright, radiiBright,'Color','b');  % 蓝色画出
h = viscircles(centers,radii);  % 红色画出

1

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

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

相关文章

Java集合框架-Collection和Map

文章目录 Collection-单列集合特点ListArrayListLinkedListVecter SetHashSetTreeSet Map-键值对集合特点Map常用APIput添加细节remove Map的三种遍历方式1.通过键找值2.通过"键值对"3.Lambda表达式foreach源码 HashMap需求 为什么要使用泛型 泛型的优点1.集合中存储…

#QT(智能家居界面-布局)

1.IDE:QTCreator 2.实验: 水平布局,垂直布局,栅格布局(弹簧) 界面自动调整 3.记录 注意弹簧不是拖拽拉长,而是使用栅格布局 运行发现窗口放大缩小可以自动调整 如果想要重新布局,需…

【PHP趣味技术】分分钟教会你轻松采集PDF文本内容 《重庆话真的太吃皮老!》

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起学习和进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&a…

备忘 clang diagnostic 类的应用示例 ubuntu 22.04

系统的ncurses环境有些问题 通过源码安装了ncurses6.3后,才可以在 llvmort-18.1.rc4中编译通过示例: 1,折腾环境 ncurses-6.3$ ./configure ncurses-6.3$ make -j ncurses-6.3$ sudo make install sudo apt install libtinfo5 sudo…

使用Visual Studio 2022 创建lib和dll并使用

概述:对于一个经常写javaWeb的人来说,使用Visual Studio似乎没什么必要,但是对于使用ffi的人来说,使用c或c编译器,似乎是必不可少的,下面我将讲述如何用Visual Studio 2022 来创建lib和dll,并使用。 静态库…

ABAP - SALV教程12 显示图标和提示信息

ALV要求字段的值为图标的需求并不多见,一般都用于红黄绿灯,来表示单据的执行状态,添加图标的方式也可以实现红黄绿灯的功能,也可以参考SALV实现红黄绿灯这篇文章:http://t.csdnimg.cn/Dzx7x效果图SAVL列设置为图标图标…

434G数据失窃!亚信安全发布《勒索家族和勒索事件监控报告》

最新态势快速感知 最新一周全球共监测到勒索事件90起,与上周相比数量有所增加。 lockbit3.0仍然是影响最严重的勒索家族;alphv和cactus恶意家族也是两个活动频繁的恶意家族,需要注意防范。 Change Healthcare - Optum - UnitedHealth遭受了…

详细分析服务器自动重启原因(涉及Linux、Window)

目录 前言1. Linux2. Window 前言 对于服务器异常重启的问题,需要定位原因并解决,下次就不会重启 1. Linux 要查看Linux服务器自动重启的原因,可以执行以下步骤: 检查系统日志:Linux系统通常会记录系统事件和错误信…

vue3页面内容切换(类似登录、注册内容切换)

一、内容描述 页面有俩块内容,分别是验证码登录页面内容,账号密码登录页面内容。有俩种处理方式,一个是写俩个页面跳转使用,还有一种是一个页面俩个内容,切换的只是不同的内容,相同的内容保留。一般都是选择…

通过人工智能增强的对话建立有意义的联系

人工智能如何重塑我们的交流?2024年最新对话AI趋势 在技术和人类互动比以往任何时候都更加复杂地交织在一起的时代,人工智能增强的对话已成为建立有意义的联系的关键要素。 这种转变不仅关乎效率,还关乎效率。 这是为了丰富沟通的结构。 在这…

12. Nginx进阶-Location

简介 Nginx的三大区块 在Nginx中主要配置包括三个区块,结构如下: http { #协议级别include /etc/nginx/mime.types;default_type application/octet-stream;log_format main $remote_addr - $remote_user [$time_local] "$r…

(十五)【Jmeter】取样器(Sampler)之HTTP请求

简述 操作路径如下: HTTP请求 (HTTP Sampler): 作用:模拟发送HTTP请求并获取响应。配置:设置URL、请求方法、请求参数等参数。使用场景:测试Web应用程序的HTTP接口性能。优点:支持多种HTTP方法和请求参数,适用于大多数Web应用程序测试。缺点:功能较为基础,对于复杂…

42、网络编程/多点通信和域套接字通信模型20240304

一、多点通信之广播的收发端实现 1.广播发送端代码&#xff1a; #include<myhead.h>int main(int argc, const char *argv[]) {int sfdsocket(AF_INET,SOCK_DGRAM,0);//创建套接字if(sfd-1){perror("socket,error");return -1;}int broadcast1;//设置套接字广…

opencv VideoCapture

videocapture顾名思义视频捕捉&#xff0c;主要是从视频文件、摄像头或网络摄像头获取视频流数据&#xff0c;并将其作为一系列帧进行处理。 我们这里主要实现了获取项目文件夹下的1.mp4视频文件&#xff0c;然后经过灰度变化、均值滤波、边缘检测然后将视频显示出来 #include…

ruoyi-vue-plus4.X版本实现内嵌swagger文档(简单解决方法)

1.在common模块中添加pom依赖 <dependency><groupId>org.webjars</groupId><artifactId>swagger-ui</artifactId><version>4.15.5</version></dependency>结果如下&#xff1a; 2.在ResourcesConfig配置类的addResourceHandl…

Git分支补充

我们在合并分支时并不总是一帆风顺&#xff0c;有些时候也会遇到“合并冲突”的问题。 下面我们来还原一下&#xff1a; 创建分支dev $ git checkout -b dev 切换到一个新分支 dev $ git branch * devmaster我们将 text.txt 内容改为 欢迎关注CSDNkeduo并将修改的内容提交到 d…

Linux-信号3_sigaction、volatile与SIGCHLD

文章目录 前言一、sigaction__sighandler_t sa_handler;__sigset_t sa_mask; 二、volatile关键字三、SIGCHLD方法一方法二 前言 本章内容主要对之前的内容做一些补充。 一、sigaction #include <signal.h> int sigaction(int signum, const struct sigaction *act,struc…

Prometheus结合Grafana监控MySQL,这篇不可不读!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

动态规划:LeetCode第10题 正则表达式匹配

题目&#xff1a; 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 示例 1&#xff1a; …

软考57-上午题-【数据库】-数据库的控制功能

一、事务管理 1-1、事务的定义 事务是一个操作序列&#xff0c;这些操作&#xff0c;要么都做&#xff0c;要么都不做。 事务和程序是两个不同的概念&#xff0c;一般一个程序可以包含多个事务。 1-2、事务定义的语句 1、事务开始&#xff1a;BEGIN TRANSACTION 2、事务提…