(9)MATLAB 特征分析

2024-02-15 00:32
文章标签 matlab 特征分析

本文主要是介绍(9)MATLAB 特征分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   常用的简单区域描绘:

   周长,面积,致密性,质心,灰度均值,灰度中值,包含区域最小矩形,最小或最大灰度级,大于或小于均值的像素数,欧拉数。

函数regionprops 用于 简单区域的描绘。

I = imread('../bw_mouth.bmp'); %读入二值图像
Il = bwlabel(I); %标注连通区,得到标记矩阵Il
D = regionprops(Il, 'area', 'centroid'); %提取面积和质心
D % 查看返回的结构体
D.Area % 4个连通区域的面积
v1 = [D.Area] % 将面积转存为向量
D.Centroid % 4个连通区域的质心
v2 = [D.Centroid] %将质心转存为向量

load fisheriris %载入Matlab自带的鸢尾属植物数据集
data = [meas(:,1), meas(:,2)]; %采用花瓣长度和花瓣宽度作为特征
figure
scatter(data(1:50, 1), data(1:50, 2), 'b+') % 第一类
hold on,scatter(data(51:100, 1), data(51:100, 2), 'r*') % 第二类
hold on,scatter(data(101:150, 1), data(101:150, 2), 'go') % 第三类
data = [meas(:,1), meas(:,3)]; %采用花瓣长度和萼片长度作为特征
figure
scatter(data(1:50, 1), data(1:50, 2), 'b+') % 第一类
hold on,scatter(data(51:100, 1), data(51:100, 2), 'r*') % 第二类
hold on,scatter(data(101:150, 1), data(101:150, 2), 'go') % 第三类


I = imread('../mh_gray.bmp'); %读入图像
[hist1, I_LBP1] = getMBLBPFea(I, 1);
[hist2, I_LBP2] = getMBLBPFea(I, 2);
[hist3, I_LBP3] = getMBLBPFea(I, 3);
figure, imshow(I_LBP1, []) %得到图12.21(b)
figure, imshow(I_LBP2, []) %得到图12.21(c)
figure, imshow(I_LBP3, []) %得到图12.21(d)

I = imread('../mh_gray.bmp'); %读入图像
histLBP1 = getLBPHist(I, 14, 13, 1); %按照14×13分区后像素块大小为1的复合LBP直方图特征
histLBP2 = getLBPHist(I, 7, 6, 2); %按照7×6分区后像素块大小为2的复合LBP直方图特征
histLBP3 = getLBPHist(I, 5, 4, 3); %按照5×4分区后像素块大小为3的复合LBP直方图特征
figure, plot(histLBP1) %得到图12.22(b)
figure, plot(histLBP2) %得到图12.22(c)
figure, plot(histLBP3) %得到图12.22(d)



灰度共现矩阵算法源码

function grayMat = grayMat( I, nLevel, x1, y1, x2, y2 )
% 计算图像I的灰度共现矩阵
% I - 输入图像
% nLevel - 要统计的灰度级数目
% x1, y1, x2, y2 - 要统计的空间位置关系
%
% grayMat - 灰度共现矩阵,大小为nLevel*nLevelif nargin < 3x1 = 1;% 默认是+45度的位置关系y1 = -1;x2 = -1;y2 = 1;
end% 对 I 进行灰度级划分
minVal = min(I(:));
maxVal = max(I(:));
[m n] = size(I);if (maxVal - minVal + 1) >= nLevelspan = double(maxVal-minVal) / nLevel;ruler = double(minVal):span:double(maxVal);ind = find(I < ruler(2));
I2 = I; % I2为进行灰度级压缩后的图像,灰度级下标从1开始
I2(ind) = 1;
clear ind;for iLevel = 2:nLevel-1for ii = 1:mfor jj = 1:nif (  (I(ii, jj) >= ruler(iLevel)) && (I(ii, jj) < ruler(iLevel+1))  )I2(ii, jj) = iLevel;endendend
endind = find(I >= ruler(nLevel));
I2(ind) = nLevel;
clear ind;elseerror('hello');
endgrayMat = zeros(nLevel, nLevel);% 计算灰度共现矩阵
for ii = 1:mfor jj = 1:nii2 = ii+y1;jj2 = jj+x1;if( (ii2 >= 1) && (ii2<=m) &&(jj2>=1) &&(jj2<=n) )grayMat(I2(ii, jj), I2(ii2, jj2)) = grayMat(I2(ii, jj), I2(ii2, jj2)) + 1;endii2 = ii+y2;jj2 = jj+x2;if( (ii2 >= 1) && (ii2<=m) &&(jj2>=1) &&(jj2<=n) )grayMat(I2(ii, jj), I2(ii2, jj2)) = grayMat(I2(ii, jj), I2(ii2, jj2)) + 1;endend
end



 

这篇关于(9)MATLAB 特征分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/709998

相关文章

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

libsvm在matlab中的使用方法

原文地址:libsvm在matlab中的使用方法 作者: lwenqu_8lbsk 前段时间,gyp326曾在论坛里问libsvm如何在matlab中使用,我还奇怪,认为libsvm是C的程序,应该不能。没想到今天又有人问道,难道matlab真的能运行libsvm。我到官方网站看了下,原来,真的提供了matlab的使用接口。 接口下载在: http://www.csie.ntu.edu.

基于IPv6的下一代网络技术的特征分析

1.引言   随着IPv4地址的耗尽,以及网络接入用户的不断庞大,向IPv6过渡已经是势在必行,IPv6作为新一代的网络协议,不仅具有海量的IP地址资源,而且由于其数据包可以更大,从而实现更可靠、更快速地进行数据的传输,同时通过在数据报头中添加流标记和业务级别大大地改善QoS,且任何设备接入IPv6后即可获取相应的设置,大大地简化用户操作,满足移动性等要求,最重要的一点是,IPv6通过I

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数_matlab pmsm-CSDN博客

MATLAB层次聚类分析法

转自:http://blog.163.com/lxg_1123@126/blog/static/74841406201022774051963/ 层次聚类是基于距离的聚类方法,MATLAB中通过pdist、linkage、dendrogram、cluster等函数来完成。层次聚类的过程可以分这么几步: (1) 确定对象(实际上就是数据集中的每个数据点)之间的相似性,实际上就是定义一个表征

MATLAB的fix(),floor()和ceil()函数的区别与联系

fix(x),floor(x)和ceil(x)函数都是对x取整,只不过取整方向不同而已。 这里的方向是以x轴作为横坐标来看的,向右就是朝着正轴方向,向左就是朝着负轴方向。 fix(x):向0取整(也可以理解为向中间取整) floor(x):向左取整 ceil(x):向右取整 举例: 4个数:a=3.3、b=3.7、c=-3.3、d=-3.7 fix(a)=3 fl

MATLAB中的eig函数

在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有5种: E=eig(A):求矩阵A的全部特征值,构成向量E。 [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。 [V,D]=eig(A,'nobalance'):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特

MATLAB中的diag函数

diag函数功能:矩阵对角元素的提取和创建对角阵 设以下X为方阵,v为向量 1、X = diag(v,k)当v是一个含有n个元素的向量时,返回一个n+abs(k)阶方阵X,向量v在矩阵X中的第k个对角线上,k=0表示主对角线,k>0表示在主对角线上方,k<0表示在主对角线下方。例1: v=[1 2 3]; diag(v, 3) ans =      0     0     0