sumt matlab,MATLAB 进行模板匹配函数 | 学步园

function [I_SSD,I_NCC]=template_matching(T,I)

% TEMPLATE_MATCHING is a cpu efficient function which calculates matching

% score images between template and an (color) 2D or 3D image.

% It calculates:

% - The sum of squared difference (SSD Block Matching), robust template

%   matching.

% - The normalized cross correlation (NCC), independent of illumination,

%   only dependent on texture

% The user can combine the two images, to get template matching which

% works robust with his application.

% Both measures are implemented using FFT based correlation.

%

% [I_SSD,I_NCC]=template_matching(T,I)

% inputs,

%   T : Image Template, can be grayscale or color 2D or 3D.

%   I : Color image, can be grayscale or color 2D or 3D.

%

% outputs,

%   I_SSD: The sum of squared difference 2D/3D image. The SSD sign is

%          reversed and normalized to range [0 1]

%   I_NCC: The normalized cross correlation 2D/3D image. The values

%          range between 0 and 1

%

% Example 2D,

%   % Find maximum response

%    I = im2double(imread('lena.jpg'));

%   % Template of Eye Lena

%    T=I(124:140,124:140,:);

%   % Calculate SSD and NCC between Template and Image

%    [I_SSD,I_NCC]=template_matching(T,I);

%   % Find maximum correspondence in I_SDD image

%    [x,y]=find(I_SSD==max(I_SSD(:)));

%   % Show result

%    figure,

%    subplot(2,2,1), imshow(I); hold on; plot(y,x,'r*'); title('Result')

%    subplot(2,2,2), imshow(T); title('The eye template');

%    subplot(2,2,3), imshow(I_SSD); title('SSD Matching');

%    subplot(2,2,4), imshow(I_NCC); title('Normalized-CC');

%

% Example 3D,

%   % Make some random data

%    I=rand(50,60,50);

%   % Get a small volume as template

%    T=I(20:30,20:30,20:30);

%   % Calculate SDD between template and image

%    I_SSD=template_matching(T,I);

%   % Find maximum correspondence

%    [x,y,z]=ind2sub(size(I_SSD),find(I_SSD==max(I_SSD(:))));

%    disp(x);

%    disp(y);

%    disp(z);

%

% Function is written by D.Kroon University of Twente (August 2009)

% Convert images to double

T=double(T); I=double(I);

if(size(T,3)==3)

% Color Image detected

[I_SSD,I_NCC]=template_matching_color(T,I);

else

% Grayscale image or 3D volume

[I_SSD,I_NCC]=template_matching_gray(T,I);

end

function [I_SSD,I_NCC]=template_matching_color(T,I)

% Splite color image, and do template matching on R,G and B image

[I_SSD_R,I_NCC_R]=template_matching_gray(T(:,:,1),I(:,:,1));

[I_SSD_G,I_NCC_G]=template_matching_gray(T(:,:,2),I(:,:,2));

[I_SSD_B,I_NCC_B]=template_matching_gray(T(:,:,3),I(:,:,3));

% Combine the results

I_SSD=(I_SSD_R+I_SSD_G+I_SSD_B)/3;

I_NCC=(I_NCC_R+I_NCC_G+I_NCC_B)/3;

function [I_SSD,I_NCC]=template_matching_gray(T,I)

% Calculate correlation output size  = input size + padding template

T_size = size(T); I_size = size(I);

outsize = I_size + T_size-1;

% calculate correlation in frequency domain

if(length(T_size)==2)

FT = fft2(rot90(T,2),outsize(1),outsize(2));

FI = fft2(I,outsize(1),outsize(2));

Icorr = real(ifft2(FI.* FT));

else

FT = fftn(rot90_3D(T),outsize);

FI = fftn(I,outsize);

Icorr = real(ifftn(FI.* FT));

end

% Calculate Local Quadratic sum of Image and Template

LocalQSumI= local_sum(I.*I,T_size);

QSumT = sum(T(:).^2);

% SSD between template and image

I_SSD=LocalQSumI+QSumT-2*Icorr;

% Normalize to range 0..1

I_SSD=I_SSD-min(I_SSD(:));

I_SSD=1-(I_SSD./max(I_SSD(:)));

% Remove padding

I_SSD=unpadarray(I_SSD,size(I));

if (nargout>1)

% Normalized cross correlation STD

LocalSumI= local_sum(I,T_size);

% Standard deviation

stdI=sqrt(max(LocalQSumI-(LocalSumI.^2)/numel(T),0) );

stdT=sqrt(numel(T)-1)*std(T(:));

% Mean compensation

meanIT=LocalSumI*sum(T(:))/numel(T);

I_NCC= 0.5+(Icorr-meanIT)./ (2*stdT*max(stdI,stdT/1e5));

% Remove padding

I_NCC=unpadarray(I_NCC,size(I));

end

function T=rot90_3D(T)

T=flipdim(flipdim(flipdim(T,1),2),3);

function B=unpadarray(A,Bsize)

Bstart=ceil((size(A)-Bsize)/2)+1;

Bend=Bstart+Bsize-1;

if(ndims(A)==2)

B=A(Bstart(1):Bend(1),Bstart(2):Bend(2));

elseif(ndims(A)==3)

B=A(Bstart(1):Bend(1),Bstart(2):Bend(2),Bstart(3):Bend(3));

end

function local_sum_I= local_sum(I,T_size)

% Add padding to the image

B = padarray(I,T_size);

% Calculate for each pixel the sum of the region around it,

% with the region the size of the template.

if(length(T_size)==2)

% 2D localsum

s = cumsum(B,1);

c = s(1+T_size(1):end-1,:)-s(1:end-T_size(1)-1,:);

s = cumsum(c,2);

local_sum_I= s(:,1+T_size(2):end-1)-s(:,1:end-T_size(2)-1);

else

% 3D Localsum

s = cumsum(B,1);

c = s(1+T_size(1):end-1,:,:)-s(1:end-T_size(1)-1,:,:);

s = cumsum(c,2);

c = s(:,1+T_size(2):end-1,:)-s(:,1:end-T_size(2)-1,:);

s = cumsum(c,3);

local_sum_I  = s(:,:,1+T_size(3):end-1)-s(:,:,1:end-T_size(3)-1);

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值