二维图像的匹配追踪重建--MATLAB代做-FPGA代做

发布时间:2021/11/17 浏览数:2227

1.问题描述:

        算法假定输入信号与字典库中的原子在结构上具有一定的相关性,这种相关性通过信号与原子库中原子的内积表示,即内积越大,表示信号与字典库中的这个原子的相关性越大,因此可以使用这个原子来近似表示这个信号。当然这种表示会有误差,将表示误差称为信号残差,用原信号减去这个原子,得到残差,再通过计算相关性的方式从字典库中选出一个原子表示这个残差。迭代进行上述步骤,随着迭代次数的增加,信号残差将越来越小,当满足停止条件时终止迭代,得到一组原子,及残差,将这组原子进行线性组合就能重构输入信号。

2.部分程序:

clc;
clear;
close all;

% 记录时间
a1=clock;

%读入图像
load reference_measurement.mat;
Im=double(rgb2gray(images));


%整幅图像,对每一行分别进行处理
image2=zeros(64,64);
for i=1:64
    i
    bat=Im(i,1:64);
    
    %迭代次数
    iterative_number=60;
    
    %用于存储匹配追踪得到的图像
    

    [a,N]=size(bat);
    
    %初始化重建信号、差值信号
    signal=bat;
    signal_reconstruct=zeros(1,N);
    signal_r=bat;
    
    %尺度因子
    a_base=2;
    j_min=0;
    j_max=ceil(log2(N)); 

    %平移因子
    u_base=1/2;
    p_min=0;
    
    %频率因子
    v_base=pi;
    k_min=0;
    
    %相位因子
    w_base=pi/6;
    i_min=0;
    i_max=12;

    %预处理
    signal_reconstruct=(1/N)*sum(signal);
    signal_r=signal-signal_reconstruct;

    %开始迭代处理
    for n=1:iterative_number

        % 寻找最佳原子
        [proj,scale,translation,freq,phase]=select_best(signal_r,N,a_base,j_min,j_max,u_base,p_min,v_base,k_min,w_base,i_min,i_max);

        t=0:N-1;

        t=(t-translation)/scale;
        
        %重构原子
        g=(1/sqrt(scale))*exp(-pi*t.*t).*cos(freq*t+phase);
        %归一化
        g=g/sqrt(sum(g.*g));
        
        %构造重建信号,加上原子与在其上投影的乘积
        signal_reconstruct=signal_reconstruct+proj*g;
        
        %更新误差信号
        signal_r=signal_r-proj*g;
        
    end
 
    image2(i,1:64)=signal_reconstruct;

end

%读入原图像
image1=Im;

%原图像和重建图像对比
subplot(121);
imagesc(image1);
title('原始图像');
colormap(gray);
subplot(122);
imagesc(image2);
title('重建图像');
colormap(gray);

3.仿真结论:


Copyright 2017-2024 © 嘉兴麦特莱博软件开发工作室
  • 网站备案号:浙ICP备18008591号-1