imresizemex在Matlab中的功能是什么?

时间:2016-03-16 21:31:18

标签: matlab

我试图使用C创建一个图像大小调整代码来完成matlab中的imresize.m。我坚持在imresize.m中调用imresizemex。似乎imresizemex是一个只能在Matlab中调用的编译机器代码(我发现它是一个Matlab私有文件夹中的imresizemex.mexw64文件,没有可用的源代码)。我也尝试用C调用它,但失败了。有谁知道在哪里可以找到imresizemex的源代码?非常感谢!

1 个答案:

答案 0 :(得分:3)

我想我弄清楚了^ ^。它执行三次卷积插值的加权乘法和求和部分。这是我的Matlab代码替换imresizemex。虽然慢了近6秒,但它产生了完全相同的结果。

function outimg=reducesize(inimg, weights,indices,dim)

% reduce first dimension 
reduce1=zeros(dim(1),size(inimg,2));
weight1=weights{1};
index1=indices{1};
for i=1:size(inimg,2)
    for j=1:dim(1)
        w11=weight1(j,:);
        ind11=index1(j,:);
        B=double(inimg(ind11,i)); 
        v=w11.*B';
        reduce1(j,i)=sum(v);
    end
end

% reduce second dimension 
reduce2=zeros(dim(1),dim(2));
weight2=weights{2};
index2=indices{2};
for i=1:dim(1)
    for j=1:dim(2)
        w22=weight2(j,:);
        ind22=index2(j,:);
        B=reduce1(i,ind22);
        v=w22.*B;
        reduce2(i,j)=sum(v);
    end
end

outimg=round(reduce2);
相关问题