(10)MATLAB 模式识别
来源:互联网 发布:java泛型<m> 编辑:程序博客网 时间:2024/05/20 11:22
识别问题:
训练样本-> 特征提取-> 分类器-> 样本类别
训练过程
模式 -> 特征提取 -> 分类器 -> 模式类别
识别过程
最小距离分类器和模板匹配
最小距离分类器实现源码
clear allload fisheriris %载入Matlab自带的鸢尾属植物数据集% 每类的前40个样本用于生成代表该类的模板,后10个作为独立的测试样本m1 = mean( meas(1:40, :) ); %第1类的前40个样本的平均向量m2 = mean( meas(51:90, :) ); %第2类的前40个样本的平均向量m3 = mean( meas(101:140, :) ); %第3类的前40个样本的平均向量% 测试样本集Test = [meas(41:50, :); meas(91:100, :); meas(141:150, :)];% 测试样本集对应的类别标签classLabel(1:10) = 1;classLabel(11:20) = 2;classLabel(21:30) = 3;% 利用最小距离分类器分类测试样本class = zeros(1, 30); %类标签for ii = 1:size(Test, 1) d(1) = norm(Test(ii, :) - m1); %与第1类的距离 d(2) = norm(Test(ii, :) - m2); %与第2类的距离 d(3) = norm(Test(ii, :) - m3); %与第3类的距离 [minVal class(ii)] = min(d); %计算最小距离并将距离样本最短的类赋给类标签数组 classend% 测试最小距离分类器的识别率nErr = sum(class ~= classLabel);rate = 1 - nErr / length(class);strOut = ['识别率为', num2str(rate)]
基于相关的 模板匹配
%function Icorr = imcorr(I, w)% function Icorr = imcorr(I, w, )% 计算图像 I 与子模式 w 的相关响应,并提示最大的响应位置% % Input:I - 原始图像% w - 子图像%% Output:Icorr - 响应图像I=imread('patterns.bmp');w=imread('pat1.bmp');figure,imshow(w);[m, n] = size(I);[m0, n0] = size(w);Icorr = zeros(m-m0+1, n-n0+1); %为响应图像分配空间vecW = double( w(:) ); %按列存储为向量normW = norm(vecW); %模式图像对应向量的模for ii = 1:m-m0+1 for jj = 1:n-n0+1 subMat = I(ii:ii+m0-1, jj:jj+n0-1); vec = double( subMat(:) ); %按列存储为向量 Icorr(ii, jj) = vec' * vecW / (norm(vec)*normW+eps); %计算当前位置的相关 endend% 找到最大响相应位置[iMaxRes, jMaxRes] = find(Icorr == max( Icorr(:) ) );figure, imshow(I);hold onfor ii = 1:length(iMaxRes) plot(jMaxRes(ii), iMaxRes(ii), 'w*'); plot([jMaxRes(ii), jMaxRes(ii)+n0-1], [iMaxRes(ii), iMaxRes(ii)], 'w-' ); plot([jMaxRes(ii)+n0-1, jMaxRes(ii)+n0-1], [iMaxRes(ii), iMaxRes(ii)+m0-1], 'w-' ); plot([jMaxRes(ii), jMaxRes(ii)+n0-1], [iMaxRes(ii)+m0-1, iMaxRes(ii)+m0-1], 'w-' ); plot([jMaxRes(ii), jMaxRes(ii)], [iMaxRes(ii), iMaxRes(ii)+m0-1], 'w-' );end
相关匹配计算效率源码
function Icorr = dftcorr(I, w)% function Icorr = dftcorr(I, w)% 在频域下计算图像 I 与子模式 w 的相关响应,并提示最大的响应位置% % Input:I - 原始图像% w - 子图像%% Output:Icorr - 响应图像I = double(I);[m n] = size(I);[m0 n0] = size(w);F = fft2(I);w = conj(fft2(w, m, n)); %w 频谱的共轭Ffilt = w .* F; %频域滤波结果Icorr = real(ifft2(Ffilt)); %反变换回空域% 找到最响相应位置[iMaxRes, jMaxRes] = find(Icorr == max( Icorr(:) ) );figure, imshow(I, []);hold onfor ii = 1:length(iMaxRes) plot(jMaxRes(ii), iMaxRes(ii), 'w*'); plot([jMaxRes(ii), jMaxRes(ii)+n0-1], [iMaxRes(ii), iMaxRes(ii)], 'w-' ); plot([jMaxRes(ii)+n0-1, jMaxRes(ii)+n0-1], [iMaxRes(ii), iMaxRes(ii)+m0-1], 'w-' ); plot([jMaxRes(ii), jMaxRes(ii)+n0-1], [iMaxRes(ii)+m0-1, iMaxRes(ii)+m0-1], 'w-' ); plot([jMaxRes(ii), jMaxRes(ii)], [iMaxRes(ii), iMaxRes(ii)+m0-1], 'w-' );end
- (10)MATLAB 模式识别
- 【模式识别】聚类分析MATLAB实现
- 模式识别(七):MATLAB 实现朴素贝叶斯分类器
- 模式识别经典算法——FCM图像聚类分割(最简matlab实现)
- 模式识别 - 特征归一化 及 测试 代码(Matlab)
- 【模式识别】CART和GML AdaBoost MATLAB TOOLBOX
- 模式识别:利用MATLAB生成模式类
- MATLAB模式识别基本操作函数解析
- 《模式识别与智能计算--MATLAB技术实现》
- 模式识别一--利用MATLAB生成模式类
- 模式识别三--MATLAB实现贝叶斯分类器
- 【模式识别】模式识别的概述(一)
- 模式识别简介(1)
- 模式识别-引言(1)
- 分类器(模式识别)
- 模式识别(目标检测)
- 模式识别
- 模式识别
- 程序员技术练级攻略(coolshell)
- leetcode Validate Binary Search Tree
- Bitmap、CBitmap、HBITMAP以及BITMAP的相互转换
- Android数据存储(External Storage,外部存储)
- 证券从业资格考试
- (10)MATLAB 模式识别
- 不安装oracle客户端,通过plsql远程链接数据库
- archlinux比gentoo的优点
- hdu 3491 Thieves(最小割拆点)
- pongo(英雄会)题解之理想随机数发生器
- Codeforces Round #207 (Div. 2) D. Xenia and Hamming
- Struts逐步学习(3)-struts-config.xml文件解析
- 时间子系统14_全局时间维护
- maven djunit 配置