图像特征表达

本文详细介绍了使用Matlab进行图像处理的过程,包括图像载入、二值化、边界显示、区域标记以及特征表达(如细度比例和aspectratio的计算),展示了如何通过regionprops函数获取和可视化区域属性。
摘要由CSDN通过智能技术生成

参考链接:图像处理之Matlab特征提取和表达_提取目标的二值化图-CSDN博客

主要分为以下四步:

  1. step1:载入图像,图像分割

  2. %steps:显示图像边界

  3. %Step3;标记区域

  4. %step4:特征表达

    % step1:载入图像,图像分割
    img=imread("1.png");
    figure,imshow(img);
    img=im2bw(img);%(图像分割)转化为二值图
    img=not(img);%对img进行取反操作,即将图像中的黑色和白色像素颜色进行互换
    figure,imshow(img);
    
    %steps:显示图像边界
    [B,L]=bwboundaries(img);%用于寻找二值图像 img 中的所有对象的边界,它返回一个单元格数组 B,其L 是一个标签矩阵,用于指示每个像素属于哪个对象。
    figure,imshow(img);
    hold on;%保持图形窗口的当前图形,并允许在同一图形窗口中绘制多个图形
    for k=1:length(B)%循环遍历每个对象的边界。
        boundary=B{k};%从单元格数组 B 中获取第 k 个对象的边界坐标点
        plot(boundary(:,2),boundary(:,1),"g","linewidth",2);%
    end
    
    %Step3;标记区域
    [L,N]=bwlabel(img);  %标记二值图像 img 中的连通区域,并返回标签矩阵 L 和区域数量 N。L 中的每个非零元素表示一个像素所属的区域编号。
    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
    
    %step4:特征表达
    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));  % 创建一个包含21种颜色的调色板
    figure
    for k = 1:N
        scatter(areas(k),TR(k),[],cmap(k,:),'filled');
        ylabel('Thinness Ratio'),xlabel('Area');
        hold on
    end
    
    

    计算结果:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值