图像处理之Matlab特征提取和表达

图像处理之Matlab特征提取和表达介绍图像处理之特征提取和表达 使用 bwboundaries 函数获取边界 使用 regionprops 函数统计特征

img = imread('图形.jpg'); figure,imshow(img); img = im2bw(img);%(图像分割)转化为二值图 img = not(img);%把图像想表达的内容变成1 figure,imshow(img); 

二.使用bwboundaries函数显示图像中目标的边界
bwboundaries函数可以追踪目标的外边界,以及这些目标中孔的边界。它返回:
1.一个元胞数组(B)(补充:元胞数组不同于普通数组,普通数组存放的元素都是一样的数据结构,但元胞数组存储的可以是不同的数据类型,所以元素间不相关)
2.返回一个标号矩阵L,其中每个目标赋予一个标号(下面有示例)
3.返回总目标数N等








[B,L] = bwboundaries(img); figure,imshow(img); hold on; for k = 1:length(B) boundary = B{k}; plot(boundary(:,2),boundary(:,1),'g','LineWidth',2); end 

三.标记区域
使用bwlabel标记测试图像中的连续区域(目标),伪彩色化他们,并结合他们的数字标记依次显示他们

[L,N] = bwlabel(img); img_rgb = label2rgb(L,'hsv',[.5 .5 .5],'shuffle'); figure,imshow(img_rgb);hold on for k =1:length(B) boundary = B{k}; plot(boundary(:,2),boundary(:,1),'w','LineWidth',2); text(boundary(1,2)-11,boundary(1,1)+11,num2str(k),'Color','y','Fontsize',14,'FontWeight','bold'); end 
stats = regionprops(L,'all');%统计的数保留在stats内 temp = zeros(1,N); for k = 1:N %计算thinness ratio(细度比例) temp(k) = 4 * pi * stats(k,1).Area / (stats(k,1).Perimeter)^2; stats(k,1).ThinnessRatio = temp(k); %计算aspect ratio temp(k) = (stats(k,1).BoundingBox(3))/(stats(k,1).BoundingBox(4)); stats(k,1).AspectRatio = temp(k); end 
areas = zeros(1,N); for k = 1:N areas(k) = stats(k).Area; end TR = zeros(1,N); for k = 1: N TR(k) = stats(k).ThinnessRatio; end cmap = colormap(lines(21)); figure for k = 1:N scatter(areas(k),TR(k),[],cmap(k,:),'filled'); ylabel('Thinness Ratio'),xlabel('Area'); hold on end 

欢迎关注我的公众号【CV之道】,一起学习交流~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210768.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午11:58
下一篇 2026年3月18日 下午11:58


相关推荐

  • 计算机组成与设计(六)—— 乘法器[通俗易懂]

    计算机组成与设计(六)—— 乘法器[通俗易懂]乘法的运算过程人们日常习惯的乘法是十进制,但计算机实现起来不方便。首先,需要记录9×9乘法表,每次相乘去表中找结果;其次,将竖式相加也不方便。但二进制却十分方便,冯·诺伊曼在《关于END

    2022年8月5日
    11
  • Deep Link

    Deep LinkDeepLink是什么DeepLink,又叫deeplinking,中文翻译作深层链接。全家桶搜索的话你会发现第一个结果是AppLink。呵呵。说回正题。简单地从用户体验来讲,DeepLink,就是可以让你在手机的浏览器/GoogleSearch上点击搜索的结果,便能直接跳转到已安装的应用中的某一个页面的技术。如果你想体验的话,可以在Android4.1以上设备安装IMDB,然后在Go…

    2022年6月18日
    77
  • vue/uniapp 如何让页面的 onLoad 在 onLaunch 之后执行[通俗易懂]

    app.vue里的onLaunch中如果有异步方法(比如:登录),返回结果可能会在页面的onLoad之后,但onLoad中的方法需要登录回调的结果。为了让页面的onLoad在onLaunch之后执行,解决方案:1.main.js添加代码Vue.prototype.$onLaunched=newPromise(resolve=>{Vue.prototype.$isResolve=resolve;})2.在App.vue的onLau

    2022年4月14日
    61
  • 省下 3000 万?字节版 Manus 突然免费上线,全网都在求教程

    省下 3000 万?字节版 Manus 突然免费上线,全网都在求教程

    2026年3月15日
    2
  • 签名证书VS加密证书

    签名证书VS加密证书从证书的用途来看 数字证书可以分为 nbsp 签名证书 主要用于对用户信息进行签名 以保证信息的不可否认性 nbsp 加密证书 主要用于对用户传送信息进行加密 以保证信息的真实性和完整性 nbsp 什么是加密证书和签名证书 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 数字证书可分为签名证书和加密证书 nbsp nbsp nbsp 签名证书主要用于对用户信息进行签名 以保证信息的有效性和不可否认性 nbsp nbsp nbsp 加密证书主要用于对用户传送信息进行加密 以

    2026年3月20日
    2
  • Hrbust_HR4995

    Hrbust_HR4995字典树的模板题连接:背单词AC代码:#include#include#includeusingnamespacestd;structTire{intnCount;Tire*next[26];Tire(){memset(next,0,sizeof(next));nCount=0;

    2022年10月2日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号