MATLAB计算机视觉与机器认知----Haar矩形遍历演示
clc; clear; close all;% Haar-like特征矩形计算board = 24 % 检测窗口宽度
num = 24 % 检测窗口分划数show = 1; % 1为作图
time = 0.001; % 作图间隔%%if mod(board,num)~=0error('检测窗口宽度必须是分划数的整数倍')
elsedelta = board/num % 滑动步进值
end%% Haar特征1:左白,右黑,(s,t)=(1,2)s = 1;
t = 2;
R = s:s:floor(num/s)*s; % Haar窗口高
C = t:t:floor(num/t)*t; % Haar窗口宽
NUM = 0; % Haar特征总数'---- Haar特征1:左白,右黑,(s,t)=(1,2) ---'
for I = 1:length(R)for J = 1:length(C)r = R(I)*delta; % Haar窗口高c = C(J)*delta; % Haar窗口宽nr = num-R(I)+1; % 行方向移动个数nc = num-C(J)+1; % 列方向移动个数Px0 = [0 r]; % 矩形坐标初始化Py0 = [0 c/2 c];for i = 1:nrfor j = 1:ncPx = Px0+(i-1)*delta; % 滑动取点Py = Py0+(j-1)*delta;NUM = NUM+1;if showplot([0 board],repmat((0:delta:board)',1,2),'k'); hold on;plot(repmat((0:delta:board)',1,2),[0 board],'k'); axis tight; axis square;title('Haar矩形遍历演示');xlabel('x');ylabel('y');plot(Px,repmat(Py',1,2),'r','LineWidth',5)plot(repmat(Px,2,1),repmat([Py(1) Py(end)]',1,2),'r','LineWidth',5); hold offpause(time)endendendend
end
NUM%% Haar特征2:上白,下黑,(s,t)=(2,1)s = 2;
t = 1;
R = s:s:floor(num/s)*s; % Haar窗口高
C = t:t:floor(num/t)*t; % Haar窗口宽
NUM = 0; % Haar特征总数'---- Haar特征2:上白,下黑,(s,t)=(2,1) ---'
for I = 1:length(R)for J = 1:length(C)r = R(I)*delta; % Haar窗口高c = C(J)*delta; % Haar窗口宽nr = num-R(I)+1; % 行方向移动个数nc = num-C(J)+1; % 列方向移动个数Px0 = [0 r/2 r]; % 矩形坐标初始化Py0 = [0 c];for i = 1:nrfor j = 1:ncPx = Px0+(i-1)*delta; % 滑动取点Py = Py0+(j-1)*delta;NUM = NUM+1;if showplot([0 board],repmat((0:delta:board)',1,2),'k'); hold on;plot(repmat((0:delta:board)',1,2),[0 board],'k'); axis tight; axis square;title('Haar矩形遍历演示');xlabel('x');ylabel('y');plot(repmat(Px,2,1),repmat(Py',1,length(Px)),'r','LineWidth',3);plot(repmat([Px(1) Px(end)]',1,2),repmat(Py,2,1),'r','LineWidth',3); hold offpause(time)endendendend
end
NUM%% Haar特征3:左右白,中间黑,(s,t)=(1,3)s = 1;
t = 3;
R = s:s:floor(num/s)*s; % Haar窗口高
C = t:t:floor(num/t)*t; % Haar窗口宽
NUM = 0; % Haar特征总数'---- Haar特征3:左右白,中间黑,(s,t)=(1,3) ---'
for I = 1:length(R)for J = 1:length(C)r = R(I)*delta; % Haar窗口高c = C(J)*delta; % Haar窗口宽nr = num-R(I)+1; % 行方向移动个数nc = num-C(J)+1; % 列方向移动个数Px0 = [0 r]; % 矩形坐标初始化Py0 = [0 c/3 c*2/3 c];for i = 1:nrfor j = 1:ncPx = Px0+(i-1)*delta; % 滑动取点Py = Py0+(j-1)*delta;NUM = NUM+1;if showplot([0 board],repmat((0:delta:board)',1,2),'k'); hold on;plot(repmat((0:delta:board)',1,2),[0 board],'k'); axis tight; axis square;title('Haar矩形遍历演示');xlabel('x');ylabel('y');plot(Px,repmat(Py',1,2),'r','LineWidth',5)plot(repmat(Px,2,1),repmat([Py(1) Py(end)]',1,2),'r','LineWidth',5); hold offpause(time)endendendend
end
NUM%% Haar特征4:左右白,中间黑(2倍宽度),(s,t)=(1,4)s = 1;
t = 4;
R = s:s:floor(num/s)*s; % Haar窗口高
C = t:t:floor(num/t)*t; % Haar窗口宽
NUM = 0; % Haar特征总数'---- Haar特征4:左右白,中间黑(2倍宽度),(s,t)=(1,4) ---'
for I = 1:length(R)for J = 1:length(C)r = R(I)*delta; % Haar窗口高c = C(J)*delta; % Haar窗口宽nr = num-R(I)+1; % 行方向移动个数nc = num-C(J)+1; % 列方向移动个数Px0 = [0 r]; % 矩形坐标初始化Py0 = [0 c/4 c*3/4 c];for i = 1:nrfor j = 1:ncPx = Px0+(i-1)*delta; % 滑动取点Py = Py0+(j-1)*delta;NUM = NUM+1;if showplot([0 board],repmat((0:delta:board)',1,2),'k'); hold on;plot(repmat((0:delta:board)',1,2),[0 board],'k'); axis tight; axis square;title('Haar矩形遍历演示');xlabel('x');ylabel('y');plot(Px,repmat(Py',1,2),'r','LineWidth',5)plot(repmat(Px,2,1),repmat([Py(1) Py(end)]',1,2),'r','LineWidth',5); hold offpause(time)endendendend
end
NUM%% Haar特征5:上下白,中间黑,(s,t)=(3,1)s = 3;
t = 1;
R = s:s:floor(num/s)*s; % Haar窗口高
C = t:t:floor(num/t)*t; % Haar窗口宽
NUM = 0; % Haar特征总数'---- Haar特征5:上下白,中间黑,(s,t)=(3,1) ---'
for I = 1:length(R)for J = 1:length(C)r = R(I)*delta; % Haar窗口高c = C(J)*delta; % Haar窗口宽nr = num-R(I)+1; % 行方向移动个数nc = num-C(J)+1; % 列方向移动个数Px0 = [0 r/3 r*2/3 r]; % 矩形坐标初始化Py0 = [0 c];for i = 1:nrfor j = 1:ncPx = Px0+(i-1)*delta; % 滑动取点Py = Py0+(j-1)*delta;NUM = NUM+1;if showplot([0 board],repmat((0:delta:board)',1,2),'k'); hold on;plot(repmat((0:delta:board)',1,2),[0 board],'k'); axis tight; axis square;title('Haar矩形遍历演示');xlabel('x');ylabel('y');plot(repmat(Px,2,1),repmat(Py',1,length(Px)),'r','LineWidth',3);plot(repmat([Px(1) Px(end)]',1,2),repmat(Py,2,1),'r','LineWidth',3); hold offpause(time)endendendend
end
NUM%% Haar特征6:上下白,中间黑(2倍宽度),(s,t)=(4,1)s = 4;
t = 1;
R = s:s:floor(num/s)*s; % Haar窗口高
C = t:t:floor(num/t)*t; % Haar窗口宽
NUM = 0; % Haar特征总数'---- Haar特征6:上下白,中间黑(2倍宽度),(s,t)=(4,1) ---'
for I = 1:length(R)for J = 1:length(C)r = R(I)*delta; % Haar窗口高c = C(J)*delta; % Haar窗口宽nr = num-R(I)+1; % 行方向移动个数nc = num-C(J)+1; % 列方向移动个数Px0 = [0 r/4 r*3/4 r]; % 矩形坐标初始化Py0 = [0 c];for i = 1:nrfor j = 1:ncPx = Px0+(i-1)*delta; % 滑动取点Py = Py0+(j-1)*delta;NUM = NUM+1;if showplot([0 board],repmat((0:delta:board)',1,2),'k'); hold on;plot(repmat((0:delta:board)',1,2),[0 board],'k'); axis tight; axis square;title('Haar矩形遍历演示');xlabel('x');ylabel('y');plot(repmat(Px,2,1),repmat(Py',1,length(Px)),'r','LineWidth',3);plot(repmat([Px(1) Px(end)]',1,2),repmat(Py,2,1),'r','LineWidth',3); hold offpause(time)endendendend
end
NUM%% Haar特征7:左上右下白,其它黑,(s,s)=(2,2)s = 2;
t = 2;
R = s:s:floor(num/s)*s; % Haar窗口高
C = t:t:floor(num/t)*t; % Haar窗口宽
NUM = 0; % Haar特征总数'---- Haar特征7:左上右下白,其它黑,(s,s)=(2,2) ---'
for I = 1:length(R)for J = 1:length(C)r = R(I)*delta; % Haar窗口高c = C(J)*delta; % Haar窗口高nr = num-R(I)+1; % 行方向移动个数nc = num-C(J)+1; % 行方向移动个数Px0 = [0 r/2 r]; % 矩形坐标初始化Py0 = [0 c/2 c]; % 矩形坐标初始化for i = 1:nrfor j = 1:ncPx = Px0+(i-1)*delta; % 滑动取点Py = Py0+(j-1)*delta;NUM = NUM+1;if showplot([0 board],repmat((0:delta:board)',1,2),'k'); hold on;plot(repmat((0:delta:board)',1,2),[0 board],'k'); axis tight; axis square;title('Haar矩形遍历演示');xlabel('x');ylabel('y');plot(repmat(Px,3,1),repmat(Py',1,length(Px)),'r','LineWidth',3);plot(repmat([Px(1) Px(end)]',1,3),repmat(Py,2,1),'r','LineWidth',3); hold offpause(time)endendendend
end
NUM%% Haar特征8:四周白,中间黑,(s,s)=(3,3)s = 3;
t = 3;
R = s:s:floor(num/s)*s; % Haar窗口高
C = t:t:floor(num/t)*t; % Haar窗口宽
NUM = 0; % Haar特征总数'---- Haar特征8:四周白,中间黑,(s,s)=(3,3) ---'
for I = 1:length(R)for J = 1:length(C)r = R(I)*delta; % Haar窗口高c = C(J)*delta; % Haar窗口高nr = num-R(I)+1; % 行方向移动个数nc = num-C(J)+1; % 行方向移动个数Px0 = [0 r/3 r*2/3 r]; % 矩形坐标初始化Py0 = [0 c/3 c*2/3 c]; % 矩形坐标初始化for i = 1:nrfor j = 1:ncPx = Px0+(i-1)*delta; % 滑动取点Py = Py0+(j-1)*delta;NUM = NUM+1;if showplot([0 board],repmat((0:delta:board)',1,2),'k'); hold on;plot(repmat((0:delta:board)',1,2),[0 board],'k'); axis tight; axis square;title('Haar矩形遍历演示');xlabel('x');ylabel('y');plot(repmat(Px,4,1),repmat(Py',1,length(Px)),'r','LineWidth',3);plot(repmat([Px(1) Px(end)]',1,4),repmat(Py,2,1),'r','LineWidth',3); hold offpause(time)endendendend
end
MATLAB计算机视觉与机器认知----Haar矩形遍历演示相关推荐
- Matlab计算机视觉/图像处理工具箱(待续)
Matlab计算机视觉/图像处理工具箱推荐 http://blog.csdn.net/liuyue2046/article/details/12992139 VLFeat和Piotr's Image ...
- 多自由度机械臂运动学正-逆解|空间轨迹规划控制|MATLAB仿真+实际机器调试
多自由度机械臂运动学正-逆解|空间轨迹规划控制|MATLAB仿真+实际机器调试 ) DH建模法可以参考这个博客: 还有<机器人>这本书,一定要理论实践相结合,理解后可以用几何法建模也可以用 ...
- 自然语言理解的机器认知形式系统(公号回复“黄培红/认知理解”下载PDF资料,欢迎赞赏转发支持)
自然语言理解的机器认知形式系统(公号回复"黄培红/认知理解"下载PDF资料,欢迎赞赏转发支持) 原创: 黄培红 数据简化DataSimp 今天 数据简化DataSimp导读:本文是 ...
- 直方图中最大的矩形(遍历与单调栈)
给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [ ...
- matlab平面问题编程,有限元平面矩形单元MATLAB程序设计.docx
有限元平面矩形单元MATLAB程序设计 有限元平面矩形单元MATLAB程序设计摘要本论文主要研究内容是有限元平面矩形单元的基本原理和MATLAB软件的图形用户界面及函数编程的基本知识,并根据有限元平面 ...
- 认知无线电matlab代码详解,认知无线电频谱感知之功率检测matlab代码.docx
认知无线电频谱感知之功率检测matlab代码 能量检测仿真实验代码:clear all;clc;n = 5;ps = 1;SNR1 = -5;SNR2 = -8;SNR3 = -10;% Sim_Ti ...
- matlab图像处理 推荐,Matlab计算机视觉、图像处理工具箱推荐
一.VLFeat:使用C语言编写提供C语言和Matlab两种接口,能够实现大量计算机视觉算法,其中包括:css (1)经常使用图像处理功能,包括颜色空间变换.几何变换(做为Matlab的补充,通常可用 ...
- Matlab 在图片上画虚线矩形框
matlab在图片上rectangle详解 Rectangle 属性 矩形的外观和行为 矩形属性控制矩形对象的外观和行为.通过更改属性值,您可以修改矩形的特定方面.使用圆点表示法查询和设置属性. h ...
- MATLAB绘制圆、椭圆、矩形等基本平面图形
MATLAB绘制基本平面图形 **画线的方法** ***rectangle函数** **画矩形的方法** **旋转矩形的方法** **画圆的方法** **画圆弧的方法** **画椭圆的方法** **画 ...
最新文章
- linux发行版的用户交互
- visual studio2019许可证
- SMB(Server Message Block) Protocal Research
- 周赛 Hd2270+总结改进
- dcs服务器性能指标,第6章DCS的性能指标.PDF
- 收文处理和发文处理的环节_集气罩的设计是气体净化、废气处理系统设计的重要环节...
- python判断最小公倍数
- centos安装apache+mysql_CentOS7安装apache+mysql+php环境
- 城市轨道交通工程毕业论文题目
- 新一代XSS平台(送邀请码)
- 【CS】软件测试概念Software Testing
- 同样是开源,微软为何选择了 Chromium,而不是 Firefox?
- 【AIOT】Python语音处理
- 测试员入职新公司如何快速熟悉新业务?
- 分布式系统和网络系统
- java毕业设计SEOUL设计师品牌代购商城Mybatis+系统+数据库+调试部署
- Chrome 浏览器安装Vue2、Vue3插件方法
- C++设计模式之单例工厂模式
- python数值类型有哪四个直辖市_博文分类
- 最新TCGA数据下载与整理