当前位置:首页 > 代码 > 正文

matlab图像特征提取代码(matlab读取图像代码)[20240429更新]

admin 发布:2024-04-29 15:45 89


本篇文章给大家谈谈matlab图像特征提取代码,以及matlab读取图像代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

有关matlab的图像特征提取问题

方程 take_character 输入为RBG三维数组图像,输出为像素统计character三维数组,首先读取图像数组width宽,height高。统计RGB各像素值到相应二维数组。灰度量化,对RGB每个像素值与256灰度比较,赋值灰度。character数组统计灰度值。返回结果。

如何对图像做分类器训练matlab代码

对图像做分类器训练要建立视觉词袋来进行图像分类。该过程生成用来表示图像视觉词的直方图,通过这些直方图来训练图像分类器。下面的步骤描述如何建立图像集,建立视觉词袋,以及训练和运用图像分类器。

第一步:建立图像类别集合

将图像分割成训练子集和测试子集。利用imageDatastore函数来存储训练分类器的图像。可以利用splitEachLabel函数将图像分割成训练数据和测试数据。

读取类别图像和创建图像子集

setDir = fullfile(toolboxdir('vision'),'visiondata','imageSets');

imds = imageDatastore(setDir,'IncludeSubfolders',true,'LabelSource','foldernames');

分割图集成训练和测试子集。下例中,30%作为训练数据,余下的作为测试数据。

[trainingSet,testSet] = splitEachLabel(imds,0.3,'randomize');

第二步:建立特征词袋

通过从每个类别的有代表性的图像中提取特征描述符,创建视觉词汇表或特征包。

通过在训练集合中提取出的特征描述符上利用k-means聚类算法,bagOfFeatures对象定义特征,视觉词汇。该算法迭代地将描述符分成k个互斥簇。由此产生的簇是紧密的,并具有相似的特性。每个集群中心代表一个特征,或一个可视词。可以基于特征检测器提取特征,也可以定义一个网格来提取特征描述符。网格方法可能丢失细节信息。因此,对不包含明显特征的图像使用网格,例如海滩等景物的图像。使用Speed up robust features(或SURF)检测器提供更大的尺度不变性。默认情况下,该算法运行“网格”方法。

该算法工作流对图像进行整体分析。图像必须有适当的标签来描述它们所代表的类。例如,一组汽车图像可以被标记为汽车。工作流不依赖于空间信息,也不依赖于标记图像中的特定对象。视觉词袋技术依赖于非局部化的检测技术。

第三步:通过视觉词袋训练图像分类器

trainImageCategoryClassifier函数返回一个图像分类器。该方法使用基于2分类支持向量机(SVM)的error-correcting output codes(ECOC)框架来训练一个多分类器。

该方法利用bagOfFeatures对象返回的视觉词袋将图像集中的图像编码成视觉词直方图。然后将视觉词直方图作为训练分类器的正负样本。

1、将训练集中的每幅图像利用bagOfFeature的encode方法进行编码。该函数检测和提取图像中的特征,然后利用最近邻算法构造每个图像的特征直方图。函数将描述符逼近聚类中心来增加直方图各bin的数值。直方图的长度取决于bagOfFeatures对象构造的出来的视觉词的数量。最终将直方图作为图像的特征向量。

2、对训练集中的每幅图像重复步骤1,建立训练数据

3、评价分类器。在测试图像集上使用imagecategoryclassifier的evaluate方法测试分类器。输出混淆矩阵可以分析预测结果。理想的分类结果是对角线上包含一个标准矩阵。不正确的分类导致出现分数值。

第四步:对图像或图像集进行分类

最后使用imageCategoryClassifier 的predeict方法对新图像进行分类来确定其类型。

如何利用matlab实现特征提取

Ox=sum(x)/2;

Oy=sum(y)/2; %求E1,E2的中心O(Ox,Oy)

I1=imcrop(OriImg,[Ox-0.9*d Oy-0.5*d 1.8*d 2*d]); %切割人脸

str=strcat('H:\CMU表情库\cohn-kanade\cohn-kanade\cohn-kanade\S010\001\Standard\',int2str(i),'.bmp');

eval('imwrite(I1,str);'); %执行字符串 每次循环读入img %读入图像 %保存归一化后的人脸图像

close all;

end

怎样用matlab提取图像的纹理特征?

其实学数字图像处理,关键的不是源代码(和一般编程还是有区别的,这个是经验之谈,其实一般博导未必会编程,但是你和他说说你的方法,他一般都能切中要害),而是你能理解基于概念及适用场所。\x0d\x0a基于颜色、纹理、形状都属于低层特征,这些你理解就够了,关键是对你的课题适合哪种方法来映射到高层语义上面,例如:识别物体轮廓,那可能形状就比较适合等。\x0d\x0a我之所以写上面那段话,主要是我感觉你索取代码也不说明具体要求,也就是方向不明确。\x0d\x0a如今颜色特征提取算法有很多,诸如颜色直方图、颜色矩、颜色集、颜色聚合向量、颜色相关图等,既然你没说,我就给个IEEECSVT2001的一篇关于颜色直方图法的论文(源码版权归作者所有):\x0d\x0afunctioncolorhist=colorhist(rgb)\x0d\x0a%CBIR_colorhist()---colorhistogramcalculation\x0d\x0a%input:MxNx3imagedata,inRGB\x0d\x0a%output:1x256colorhistogram==(HxSxV=16x4x4)\x0d\x0a%astheMPEG-7genericcolorhistogramdescriptor\x0d\x0a%[Ref]Manjunath,B.S.;Ohm,J.-R.;Vasudevan,V.V.;Yamada,A.,"Colorandtexturedescriptors"\x0d\x0a%IEEETrans.CSVT,Volume:11Issue:6,Page(s):703-715,June2001(sectionIII.B)\x0d\x0a%checkinput\x0d\x0aifsize(rgb,3)~=3\x0d\x0aerror('3componentsisneededforhistogram');\x0d\x0aend\x0d\x0a%globals\x0d\x0aH_BITS=4;S_BITS=2;V_BITS=2;\x0d\x0a%rgb2hsv可用rgb2hsi代替,见你以前的提问。\x0d\x0ahsv=uint8(255*rgb2hsv(rgb));\x0d\x0a\x0d\x0aimgsize=size(hsv);\x0d\x0a%getridofirrelevantboundaries\x0d\x0ai0=round(0.05*imgsize(1));i1=round(0.95*imgsize(1));\x0d\x0aj0=round(0.05*imgsize(2));j1=round(0.95*imgsize(2));\x0d\x0ahsv=hsv(i0:i1,j0:j1,:);\x0d\x0a\x0d\x0a%histogram\x0d\x0afori=1:2^H_BITS\x0d\x0aforj=1:2^S_BITS\x0d\x0afork=1:2^V_BITS\x0d\x0acolorhist(i,j,k)=sum(sum(...\x0d\x0abitshift(hsv(:,:,1),-(8-H_BITS))==i-1...\x0d\x0abitshift(hsv(:,:,2),-(8-S_BITS))==j-1...\x0d\x0abitshift(hsv(:,:,3),-(8-V_BITS))==k-1));\x0d\x0aend\x0d\x0aend\x0d\x0aend\x0d\x0acolorhist=reshape(colorhist,1,2^(H_BITS+S_BITS+V_BITS));\x0d\x0a%normalize\x0d\x0acolorhist=colorhist/sum(colorhist);\x0d\x0a\x0d\x0a%基于纹理特征提取灰度共生矩阵用于纹理判断\x0d\x0a%Calculatescooccurrencematrix\x0d\x0a%foragivendirectionanddistance\x0d\x0a%\x0d\x0a%out=cooccurrence(input,dir,dist,symmetric);\x0d\x0a%\x0d\x0a%INPUT:\x0d\x0a%input:inputmatrixofanysize\x0d\x0a%\x0d\x0a%dir:directionofevaluation\x0d\x0a%"dir"valueAngle\x0d\x0a%00\x0d\x0a%1-45\x0d\x0a%2-90\x0d\x0a%3-135\x0d\x0a%4-180\x0d\x0a%5+135\x0d\x0a%6+90\x0d\x0a%7+45\x0d\x0a%\x0d\x0a%dist:distancebetweenpixels\x0d\x0a%\x0d\x0a%symmetric:1forsymmetricversion\x0d\x0a%0fornon-symmetricversion\x0d\x0a%\x0d\x0a%eg:out=cooccurrence(input,0,1,1);\x0d\x0a%Author:BaranAydogan(15.07.2006)\x0d\x0a%RGI,TampereUniversityofTechnology\x0d\x0a%baran.aydogan@tut.fi\x0d\x0a\x0d\x0afunctionout=cooccurrence(input,dir,dist,symmetric);\x0d\x0a\x0d\x0ainput=round(input);\x0d\x0a[rc]=size(input);\x0d\x0a\x0d\x0amin_intensity=min(min(input));\x0d\x0amax_intensity=max(max(input));\x0d\x0a\x0d\x0aout=zeros(max_intensity-min_intensity+1);\x0d\x0aif(dir==0)\x0d\x0adir_x=0;dir_y=1;\x0d\x0aend\x0d\x0a\x0d\x0aif(dir==1)\x0d\x0adir_x=1;dir_y=1;\x0d\x0aend\x0d\x0a\x0d\x0aif(dir==2)\x0d\x0adir_x=1;dir_y=0;\x0d\x0aend\x0d\x0a\x0d\x0aif(dir==3)\x0d\x0adir_x=1;dir_y=-1;\x0d\x0aend\x0d\x0a\x0d\x0aif(dir==4)\x0d\x0adir_x=0;dir_y=-1;\x0d\x0aend\x0d\x0a\x0d\x0aif(dir==5)\x0d\x0adir_x=-1;dir_y=-1;\x0d\x0aend\x0d\x0a\x0d\x0aif(dir==6)\x0d\x0adir_x=-1;dir_y=0;\x0d\x0aend\x0d\x0a\x0d\x0aif(dir==7)\x0d\x0adir_x=-1;dir_y=1;\x0d\x0aend\x0d\x0a\x0d\x0adir_x=dir_x*dist;\x0d\x0adir_y=dir_y*dist;\x0d\x0a\x0d\x0aout_ind_x=0;\x0d\x0aout_ind_y=0;\x0d\x0a\x0d\x0aforintensity1=min_intensity:max_intensity\x0d\x0aout_ind_x=out_ind_x+1;\x0d\x0aout_ind_y=0;\x0d\x0a\x0d\x0a[ind_x1ind_y1]=find(input==intensity1);\x0d\x0aind_x1=ind_x1+dir_x;\x0d\x0aind_y1=ind_y1+dir_y;\x0d\x0a\x0d\x0aforintensity2=min_intensity:max_intensity\x0d\x0aout_ind_y=out_ind_y+1;\x0d\x0a\x0d\x0a[ind_x2ind_y2]=find(input==intensity2);\x0d\x0a\x0d\x0acount=0;\x0d\x0a\x0d\x0afori=1:size(ind_x1,1)\x0d\x0aforj=1:size(ind_x2,1)\x0d\x0aif((ind_x1(i)==ind_x2(j))(ind_y1(i)==ind_y2(j)))\x0d\x0acount=count+1;\x0d\x0aend\x0d\x0aend\x0d\x0aend\x0d\x0a\x0d\x0aout(out_ind_x,out_ind_y)=count;\x0d\x0a\x0d\x0aend\x0d\x0aend\x0d\x0a\x0d\x0aif(symmetric)\x0d\x0a\x0d\x0aif(dir

回答于 2022-11-14

向TA提问

官方服务

官方网站

官方网站

matlab特征提取相关代码求解答

提取网站的部分源代码 是不需要软件的 Internet Explorer

本身就支持JSP,ASP等网页编辑的代码.

操作方法: 在页面空白处单击右键 选择 查看源文件(V)

(其中有一些独立的加密文件是无权查看的,

即便是你使用第三方软件,被加密的文件也无法复制或篡改)

对图像进行边缘特征提取程序代码

基于小波变换的多尺度图像边缘检测matlab源代码(在Matlab7.0下运行)

clear all;

load wbarb;

I = ind2gray(X,map);imshow(I);

I1 = imadjust(I,stretchlim(I),[0,1]);figure;imshow(I1);

[N,M] = size(I);

h = [0.125,0.375,0.375,0.125];

g = [0.5,-0.5];

delta = [1,0,0];

J = 3;

a(1:N,1:M,1,1:J+1) = 0;

dx(1:N,1:M,1,1:J+1) = 0;

dy(1:N,1:M,1,1:J+1) = 0;

d(1:N,1:M,1,1:J+1) = 0;

a(:,:,1,1) = conv2(h,h,I,'same');

dx(:,:,1,1) = conv2(delta,g,I,'same');

dy(:,:,1,1) = conv2(g,delta,I,'same');

x = dx(:,:,1,1);

y = dy(:,:,1,1);

d(:,:,1,1) = sqrt(x.^2+y.^2);

I1 = imadjust(d(:,:,1,1),stretchlim(d(:,:,1,1)),[0 1]);figure;imshow(I1);

lh = length(h);

lg = length(g);

for j = 1:J+1

lhj = 2^j*(lh-1)+1;

lgj = 2^j*(lg-1)+1;

hj(1:lhj)=0;

gj(1:lgj)=0;

for n = 1:lh

hj(2^j*(n-1)+1)=h(n);

end

for n = 1:lg

gj(2^j*(n-1)+1)=g(n);

end

a(:,:,1,j+1) = conv2(hj,hj,a(:,:,1,j),'same');

dx(:,:,1,j+1) = conv2(delta,gj,a(:,:,1,j),'same');

dy(:,:,1,j+1) = conv2(gj,delta,a(:,:,1,j),'same');

x = dx(:,:,1,j+1);

y = dy(:,:,1,j+1);

dj(:,:,1,j+1) = sqrt(x.^2+y.^2);

I1 = imadjust(dj(:,:,1,j+1),stretchlim(dj(:,:,1,j+1)),[0 1]);figure;imshow(I1);

End

matlab图像特征提取代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于matlab读取图像代码、matlab图像特征提取代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/829.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载