matlab中如何编程序进去

matlab中如何编程序进去,第1张

matlab 程序文件代码是以m文件的形式呈现的。将matlab代码编写进m文件内然后运行即可。

例子:

建立一个 helloworldm

文件内包括内容如下:

fprintf('Hello World!');

使用快捷键F5直接运行,然后可以在控制台下看到打印的:

Hello World!

可以写程序,并且不用编译就可以运行。

可以编译为独立的exe文件。查compile有关的命令,Matlab书籍上都有介绍。

Matlab擅长图像处理,如果有问题,换个函数就行了,读不成问题。

写程序得看具体情况。

Matlab作为一个编程语言,我个人的看法是:无所不能。

这几种运动估计都比较简单,我建议你参考《视频信号处理》这本书

我给你FS的代码你可以参考

function [f_diff_final,MVs]=BlockMatch(fc,fr,N,W,type,bShow)

% [f_diff,MVs]=BlockMatch(fc,fr,N,W,type,bShow)

% Block matching algorithm

% fc is the current frame, fr is the refernce frame

% N is the block size and W is the half size of the searching window

% The actual size of the searching window is 2W+1 X 2W+1

% type: searching strategy ('FS' = default, 'TSS', 'TDL', 'OTS', 'CSA', 'OSA')

% bShow: show the difference image with estimated motion vectors (default: 0)

% type is the searching strategies, currently only "FS" (full search) is

% supported

% The output includes the frame difference with motion compensation,

% f_diff, and the estimated motion vectors of all blocks, MVs (which is a

% 2-D cell matrix)

f_diff_final=[];

f_diff=[];

MVs=[];

if nargin<2

    disp('At least twp arguments are needed!');

    return;

end

if any(size(fc)~=size(fr))

    disp('The two frames should be of the same size!');

    return;

end

if nargin<6

    bShow=0;

    if nargin<5

        type='FS'; % Full search

        if nargin<3

            N=8;

        end

        if nargin<4

            W=N2;

        end

    end

end

N_1=N-1;

f_size=size(fc);

fc=double(fc);

fr=double(fr);

if numel(f_size)~=2

    disp('The input frames must be 2-D matrices!');

    return;

end

if any(rem(f_size,N)~=0)

    disp('The size of the frames should be exactly dividable by the block size!');

    return;

end

height=f_size(1);

width=f_size(2);

f_diff=zeros(f_size);

MVs=cell(height/N,width/N);

for x=1:N:width

    for y=1:N:height

        % Set searching window

        ymin=max(1,y-W);

        ymin_1=ymin-1;

        ymax=min(height-N_1,y+W);

        xmin=max(1,x-W);

        xmin_1=xmin-1;

        xmax=min(width-N_1,x+W);

        fc_block=fc(y:y+N_1,x:x+N_1); % To-be-encoded block

        xxyys_checked=zeros(ymax-ymin_1,xmax-xmin_1); % Flags for checked locations

            % Add new searching strategies here         

             % {'FS','FullSearch','Full Search'}; 

                MSEs=Inf(ymax-ymin_1,xmax-xmin_1);

                block_diff=cell(size(MSEs));

                for xx=xmin:xmax

                    for yy=ymin:ymax

                        block_diff_new=fc_block-fr(yy:yy+N_1,xx:xx+N_1);

                        block_diff{yy-ymin_1,xx-xmin_1}=block_diff_new;

                        MSEs(yy-ymin_1,xx-xmin_1)=mean(abs(block_diff_new(:)));

                    end

                end

                % Get the minimal MSE and the 1-D index

                [MSE_min,index]=min(MSEs(:));

                % Transform the 1-D index into 2-D index

                [yy_min,xx_min]=ind2sub(size(MSEs),index);

                % Set the motion vector

                MVs{ceil(y/N),ceil(x/N)}=[ymin+yy_min-y xmin+xx_min-x];

                % Set the difference block with motion compensation

                f_diff(y:y+N_1,x:x+N_1)=block_diff{yy_min,xx_min};

    end

end

f_diff_final=int16(f_diff);

以上就是关于matlab中如何编程序进去全部的内容,包括:matlab中如何编程序进去、用matlab编写程序、视频压缩 运动估计算法 matlab代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10639016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存