计算laws的matlab代码

很简单的代码:不过花了codeforge上的10个点,自己写也早写出来了;

  代码如下:

文件:calLaws.m

function [y,h_v,h_h]=calLaws(x,id,LocalEnergy)
for dim=1:2
    if dim==1
        FilterId=upper(id(1:2)); % Input argument "id" is undefined.
    else
        FilterId=upper(id(3:4));
    end
    if strcmp(FilterId,'L5'), h(dim,1:5)=[ 1  4  6  4  1];
    elseif strcmp(FilterId,'E5'), h(dim,1:5)=[-1 -2  0  2  1];
    elseif strcmp(FilterId,'S5'), h(dim,1:5)=[-1  0  2  0 -1];
    elseif strcmp(FilterId,'W5'), h(dim,1:5)=[-1  2  0 -2  1];
    elseif strcmp(FilterId,'R5'), h(dim,1:5)=[ 1 -4  6 -4  1];
    elseif strcmp(FilterId,'__'), h(dim,1:5)=[ 0  0  1  0  0];
    end
end
h_v=h(1,:);
h_h=h(2,:);

% Perform the filtering
y=filter2(h_v,filter2(h_h,x));

if exist('LocalEnergy')==1 
    y=avgsmth(abs(y),LocalEnergy);%LocalEnergy?????????5??????
end

文件 avgsmth.m

function y=avgsmth(x,M,N)
% AVGSMTH  Smooth an image with an MxN averaging filter
%       y=avgsmth(x,M,N)

if nargin<3,%若输入参数小于三个!!!
  N=M;
end

w=ones(M,1)/M;
y=filter2(w,x);
w=ones(1,N)/N;
y=filter2(w,y);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值