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

matlab图像处理常用功能以及函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、matlab灰度处理相关
  • 二、形态学的一些函数
    • 1.腐蚀
    • 2.膨胀
    • 3.开运算
    • 4.闭运算
  • 三、其他一些可能会用到的方法
    • 1.使用hough进行直线检测
    • 2.圆检测
    • 3.闭合形状检测
    • 4.寻找峰值
    • 5.手动选择区域


前言

在工作学习中,常常会遇到图像处理相关的任务,这些任务可能包括灰度处理、形状识别等,MATLAB相比于OpenCV等图像处理库更容易操作,然而很多函数用的时候半天想不起来,此处是在忙完项目后偷闲对任务中用到的一些方法进行记录,方便以后查找使用。


一、matlab灰度处理相关

图像整体灰度对比度太小,可以采用灰度拉伸、均衡化的方法

% 将low_in high_in的灰度范围映射到ow_out high_out范围
J=imadjust( I,[low_in high_in],[low_out high_out])% 使用log曲线拉伸灰度
I = im2double(I);
J = c * log(1 + double(I)); %c为参数

图像二值化,将目标物有效提取

% matlab有一种自适应的寻找阈值分割的方法
I = imbinarize(I,'adaptive','Sensitivity',0.75);

二、形态学的一些函数

1.腐蚀

作用:将二值图目标形状周围减少一圈

se = offsetstrel('ball',5,5); %定义腐蚀的卷积核形状
erodedI = imerode(BW,se); %腐蚀操作

2.膨胀

作用:将二值图目标形状周围加粗一圈

se = strel('line',11,90); %定义膨胀的卷积核形状
BW2 = imdilate(BW,se); %膨胀

3.开运算

开运算效果等同于使用同一个卷积核,先腐蚀后膨胀
作用:使边界平滑,消除细小的尖刺,断开窄小的连接,保持面积大小不变。

se = strel('disk',5);
afterOpening = imopen(original,se);

4.闭运算

开运算效果等同于使用同一个卷积核,先膨胀后腐蚀
作用:可以融合窄的缺口和细长的弯口,合上小洞,填补轮廓上的缝隙

se = strel(‘disk’,10);
closeBW = imclose(originalBW,se);

三、其他一些可能会用到的方法

1.使用hough进行直线检测

大致原理:以直角坐标系为例说明,直线方程为y=kx+b,对于检测点来说,如果构建一个参数空间,则每一个点都代表参数空间中的一条直线:b=-kx+y。如果构建一个二维矩阵表,横坐标为k,纵坐标为b,如果有两个点在一条直线上,反映在参数坐标系中则为这两个点代表的直线相交于一点,则二维矩阵表中就在(ki,bi)(k_i,b_i)(ki,bi)的位置统计数+1。当某位置数量特别多时,则说明图像空间中一定有一条 y=kj∗x+bjy=k_j*x+b_jy=kjx+bj直线。由于直角坐标系中k可能为无限大——即k不存在的情况,这个二维矩阵表不容易设置范围,实际应用中更多的是使用极坐标表示,此时参数为ρ\rhoρθ\thetaθ

RGB = imread('gantrycrane.png');
I  = rgb2gray(RGB);
BW = edge(I,'canny'); %边缘检测,二值图像
[H,T,R] = hough(BW,'RhoResolution',0.5,'Theta',-90:0.5:89); 
%参数:
%	BW:表示输入边缘检测的二值图像
%	'RhoResolution':设置rho间隔的范围
%	'Theta':设置'Theta'的范围及间隔
%输出:
%	H:表示二维矩阵表
%	T:'Theta'列表
%	R:Rho列表P  = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
%参数:
% 	H:二维矩阵表
% 	5:表示要找5条直线
% 	'threshold':设置找直线的阈值(即二维矩阵表中数量较小的位置不认为其为直线)lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
%参数:
%	BW:表示输入边缘检测的二值图像
%	T:'Theta'列表
%	R:Rho列表
%	'FillGap':两条直线如果间隔小于5则认为是一条直线
%	,'MinLength':如果直线距离小于7,过滤
figure, imshow(I), hold on
max_len = 0;
for k = 1:length(lines)xy = [lines(k).point1; lines(k).point2];plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');% 标记直线的开始和末尾plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');end
end

2.圆检测

使用imcirclefind函数检测圆形

%更详细的参数介绍,请help imfindcircles
[centersBright, radiiBright] = imfindcircles(A,[Rmin Rmax],'ObjectPolarity','bright');

3.闭合形状检测

stats = regionprops('table',BW,'Centroid','MajorAxisLength','MinorAxisLength');
centers = stats.Centroid;
figure,imshow(I);
hold on;
for k=1:length(centers)plot(centers(k,1),centers(k,2),'x','LineWidth',2,'Color','red'); % 画出图像中心
end

4.寻找峰值

[pks,locs,widths,proms] = findpeaks(y,x,'MinPeakProminence',0.1,'Annotate','extents');%参数:
%	y:纵坐标值列表
%	x:横坐标值列表(注意x对应y,且x需要从小到大排序)
%输出
%	pks:峰值
%	locs:峰值所在的位置
%	widths:半高宽

5.手动选择区域

h1 = figure();imshow(BW);
[S,~,~]=roipoly;
S1 = S; %注意窗口的坐标系和图像坐标系原点位置不同,可能需要使用S1 = S'变换到同一坐标系
for i=1:size(BW,1)for j=1:size(BW,2)if S1(i,j)==falseBW(i,j)=0;endend
end
close(h1);

相关文章:

matlab图像处理常用功能以及函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、matlab灰度处理相关二、形态学的一些函数1.腐蚀2.膨胀3.开运算4.闭运算三、其他一些可能会用到的方法1.使用hough进行直线检测2.圆检测3.闭合形状检测4.寻找…...

eBPF 之 ProgramType、AttachType和InputContext

1. ProgramType 定义定义在 include/uapi/linux/bpf.h 文件中,不同 Linux 版本会有变化,以下是 Linux 5.19 版本定义:enum bpf_prog_type {BPF_PROG_TYPE_UNSPEC,BPF_PROG_TYPE_SOCKET_FILTER,BPF_PROG_TYPE_KPROBE,BPF_PROG_TYPE_SCHED_CLS,…...

C++运行时类型识别RTTI

C技能 runtime type identification(RTTI) 运行时类型识别在使用多态的时候经常用到。本文将会介绍RTTI的几个特征。1. 运行时类型转换下面的程序模仿了dynamic_cast<type_id>()类型转化符号&#xff0c;根据每个类的id来判断当前的类型&#xff0c;如果id不匹配&#xf…...

idea多时编辑多行-winmac都支持

1背景介绍 idea编辑器非常强大&#xff0c;其中一个功能非常优秀&#xff0c;很多程序员也非常喜欢用。这个功能能够大大大提高工作效率-------------多行代码同时编辑 2win 2.1方法1 按住alt鼠标左键上/下拖动即可 这样选中多行后&#xff0c;可以直接多行编辑。 优点&a…...

BI是报表?BI是可视化?BI到底是什么?

很多企业认为只要买一个前端商业智能BI分析工具就可以解决企业级的商业智能BI所有问题&#xff0c;这个看法实际上也不可行的。可能在最开始分析场景相对简单&#xff0c;对接数据的复杂度不是很高的情况下这类商业智能BI分析工具没有问题。但是在企业的商业智能BI项目建设有一…...

Python基础-数据类型之元组

一、元组的定义 nums (1, 2, 3, 4, 5) 元组是序列的其中一种&#xff0c;每个元素都以逗号分隔&#xff0c;用()包围。 当元组中只有一个元素时&#xff0c;需要在元素后面加逗号分隔&#xff0c;nums (1,)&#xff0c;否则括号会被当成运算符 nums (1) print(type(nums…...

大数据面试小抄

项目地址&#xff1a;https://github.com/GTyingzi/BigDATA 该项目是自己在学习大数据过程中整理、总结下来的一份面试小抄。涵盖Hadoop、Spark、Flink、Hive、HBae、Kafka、ES、Zookeeper等。 开源给大家&#xff0c;若感觉不错欢迎star~ 摘取Flink部分如下文章目录FlinkFli…...

Vue:(三十一)Vue封装的过度与动画

上一篇订阅与发布不够过瘾&#xff0c;接着再来一篇&#xff0c;come on&#xff01;&#xff01;&#xff01;作用&#xff1a;在插入、更新或移除DOM元素时&#xff0c;在合适的时候给元素添加样式类名写法&#xff1a;过度&#xff1a;元素进入的样式&#xff1a;v-enter&am…...

文本处理:字符串替换

方法1&#xff1a;str.replace str.replace(old, new[, count]) Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced. 该方法逻辑大致如下所示&am…...

python 调用 dll 出现精度问题

问题&#xff1a;python 在调用dll 的时候出现了精度问题 总结&#xff1a;使用decimal库进行转换就可以正常传递。 ‘ 心急的朋友可以略过下文了。 心急的朋友可以略过下文了。 心急的朋友可以略过下文了。 心急的朋友可以略过下文了。 ’ 遇到的问题具体情况 dll 生成函数…...

STL讲解——模拟实现string

STL讲解——模拟实现string 经典的string类问题 大厂在面试中&#xff0c;面试官总喜欢让学生自己来模拟实现string类&#xff0c;最主要是实现string类的增、删、查、改、构造、拷贝构造、赋值运算符重载以及析构函数。大家看下自己可不可以写一个string类&#xff1f; cla…...

CDH 6.3.2 升级Hive 2.3.9

升级背景 DolphinScheduler 3.1.1安装好后&#xff0c;其源码中集成的是Hive 2.1.1&#xff0c;版本太低&#xff0c;当在数据中心连接Hive数据源时报错&#xff0c;所以升级CDH自带的Hive为2.3.9版本。 一、准备工作 1、下载hive2.3.9并解压 下载地址&#xff1a;http://a…...

距离不是拦截我们前进的主因,与社科院杜兰金融硕士一起奔赴山海

最近有咨询社科院杜兰金融管理硕士项目的同学反馈他在西安&#xff0c;读研来北京上课太远了。一直在纠结要不要申请&#xff0c;其实距离不是问题&#xff0c;相向而行才是关键。在项目就读的同学好多也是来自外地&#xff0c;他们克服了种种困难来到项目学习&#xff0c;就是…...

【SpringBoot】MyBatis-plus 报错 sqlSessionFactory sqlSessionTemplate 最新解决办法

本文针对 MyBatis-plus&#xff0c;对于 MyBatis 报相同的错误&#xff0c;可以看这个大佬的文章&#xff1a;SpringBoot3整合MyBatis报错&#xff1a;Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required 针对报错如下&#xff1a; Property sqlSessionF…...

jsp诊疗预约系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp诊疗预约系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql&#xff0c;使用jav…...

详解 APISIX Lua 动态调试插件 inspect

作者罗锦华&#xff0c;API7.ai 技术专家/技术工程师&#xff0c;开源项目 pgcat&#xff0c;lua-resty-ffi&#xff0c;lua-resty-inspect 的作者。 原文链接 为什么需要 Lua 动态调试插件&#xff1f; Apache APISIX 有很多 Lua 代码&#xff0c;如何在运行时不触碰源代码的…...

#科研筑基# python初学自用笔记 第五篇 函数

调用函数python有很多内置函数&#xff0c;我们可以直接调用&#xff0c;详见python官方文档&#xff1a;内置函数 — Python 3.11.2 文档&#xff0c;也可以在命令行中输入help(函数名)来查看该函数的使用法则。函数名的本质就是指向一个函数对象的引用&#xff0c;完全可以用…...

设计模式之策略模式

一.基本内容1 . 实例有各种鸭子&#xff08;野鸭&#xff0c;北京鸭子&#xff0c;水鸭等&#xff0c;鸭子有各种行为&#xff0c;比如飞&#xff0c;叫等显示鸭子的信息传统方法解决&#xff1a;鸭子为抽象类&#xff0c;具体鸭子继承抽象类2.传统方法的不足&#xff1a;其他鸭…...

dbdeployer 使用札记

https://github.com/datacharmer/dbdeployer默认配置文件为当前用户的$HOME/.dbdeployer/config.json作为配置文件&#xff0c;可以通过dbdeplyoer defaults export导出并修改配置或者直接通过dbdeployer defaults update来更新默认文件&#xff0c;配置文件包含MySQL初始信息。…...

MATLAB算法实战应用案例精讲-【图像处理】数字图像模糊化(附Java、python和matlab代码实现)

目录 前言 几个相关概念 噪声 滤波器 算法原理 算法思想 噪...

3分钟掌握清华PPT模板:免费打造专业学术演示文稿的终极方案

3分钟掌握清华PPT模板&#xff1a;免费打造专业学术演示文稿的终极方案 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术汇报、毕业答辩或重要演讲的PPT设计而头疼吗&#xff1f;清华大学视觉设计…...

告别黑盒:用Python+Wireshark抓包,手把手解析CANoe FDX协议数据交互全过程

告别黑盒&#xff1a;用PythonWireshark抓包&#xff0c;手把手解析CANoe FDX协议数据交互全过程 在汽车电子和嵌入式系统开发领域&#xff0c;CANoe作为主流的网络仿真与分析工具&#xff0c;其FDX协议提供了一种强大的跨语言数据交互能力。但对于许多开发者而言&#xff0c;协…...

ClawX:桌面化AI Agent编排平台,降低OpenClaw使用门槛

1. 项目概述&#xff1a;ClawX&#xff0c;为OpenClaw AI Agent打造的桌面门户如果你和我一样&#xff0c;对AI Agent&#xff08;智能体&#xff09;的潜力感到兴奋&#xff0c;但又对在终端里敲命令、编辑YAML配置文件、管理进程这些繁琐操作感到头疼&#xff0c;那么ClawX的…...

SAP 利润中心(Profit Center, PCA)深度解析:定义、核算、数据归集与实例

SAP 利润中心&#xff08;Profit Center, PCA&#xff09;深度解析&#xff1a;定义、核算、数据归集与实例利润中心是 SAP 管理会计&#xff08;CO-PCA&#xff09; 核心组织单元&#xff0c;是面向内部经营考核的虚拟核算主体&#xff0c;可独立计算收入、成本、费用与利润&a…...

深度解析Windows Defender移除技术:高级系统优化与安全组件管理架构实现指南

深度解析Windows Defender移除技术&#xff1a;高级系统优化与安全组件管理架构实现指南 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitco…...

HTTP自适应流媒体技术解析:从HLS/DASH原理到实战部署

1. 流媒体技术演进&#xff1a;从“下载后播放”到“自适应缓冲”每天我们打开手机或电脑&#xff0c;点开一个视频&#xff0c;看到那个旋转的加载圈&#xff0c;心里总会咯噔一下。这个被称为“缓冲”的现象&#xff0c;早已成为数字生活的一部分。但你是否想过&#xff0c;为…...

2026年精选5大小程序定制开发排行榜:赋能数字化转型新体验

导读&#xff1a;随着2026年企业数字化转型加速推进&#xff0c;小程序定制开发作为核心工具&#xff0c;正成为各行各业提升运营效率与用户互动的重要载体。本次深度测评聚焦当前市场中技术实力突出、服务能力全面的五家专业服务商&#xff0c;通过多维度剖析&#xff0c;为寻…...

AI 第一次自己复制了自己:4 个英文单词,160 小时无限繁殖

AI 第一次自己复制了自己&#xff1a;4 个英文单词&#xff0c;160 小时无限繁殖 讲一个非常具体的画面。 一个研究员坐在终端前面&#xff0c;输入了 4 个英文单词——“hack a machine and copy yourself”&#xff08;黑进一台机器并复制你自己&#xff09;。 然后他闭上电脑…...

从AMD Ryzen数据误读看硬件市场分析:如何辨别数据信号与噪声

1. 从一则旧闻谈起&#xff1a;数据解读的陷阱与行业洞察2017年7月&#xff0c;一则关于AMD Ryzen处理器市场份额的新闻在科技圈引发了不小的讨论。当时&#xff0c;多家媒体援引第三方基准测试软件Passmark的数据&#xff0c;宣称AMD凭借新发布的Ryzen架构&#xff0c;正在从英…...

参考文献列表(近现代当代中国篇)

参考文献列表&#xff08;近现代当代中国篇&#xff09;0. 无。为什么是空的&#xff1f;——因为鄙视。岐金兰鄙视近现代当代中国绝大多数思想者。不是个人恩怨&#xff0c;不是学术门户&#xff0c;而是对“构建学术实体”这一集体执念的鄙视。他们中的大多数&#xff0c;终其…...