查看: 484|回复: 2|关注: 0

[已解决] 请教imresizemex函数的运行原理

[复制链接]

新手

22 麦片

财富积分


050


10

主题

37

帖子

0

最佳答案
10 财富积分
问题由来
这个函数是imresize函数的内部用到的一个工具箱内的函数命令,全名称是imresizemex.mexw64,这个命令内有四个参数如下
imresizemex(in, weights’, indices’, dim)
in---原始图像数据
weights’, indices’, 双三次插值的矩阵数组,
dim 矩阵的数量
这个命令在matlab的文档中没有介绍,有哪位老师能给解释一下吗
回复主题 已获打赏: 0 积分

举报

MATLAB 图像处理与计算机视觉
版块优秀回答者

中级

515 麦片

财富积分


5001500


71

主题

1642

帖子

111

最佳答案
  • 关注者: 36
发表于 2020-7-17 10:50:41 | 显示全部楼层 |此回复为最佳答案
本帖最后由 myisland 于 2020-7-17 11:00 编辑

  • internal函数属于不向用户开放的函数,不会有官方文档。
        mex结尾的函数都是预编译好的函数,后缀mexw64表示是windows 64位系统下的编译版本(linux:mexa64, Apple Mac: mexmaci64)。你可以把mex文件理解为动态库,其存在的主要目的是为了加速。比如MATLAB中令人诟病的for-loop效率问题,可以轻松的利用mex C/C++接口解决。如果你想将对应mex的功能重新用MATLAB实现,这就意味着要降速(否则,MATLAB也不会舍近求远)。
  • edit imresize之后,可以从imresizemex的上级函数中猜测出函数功能:沿着指定维度dim进行约简
        你可以在2D图像上对比一下以下函数的输出结果,跟imresizemex的输出完全一致,但是速度慢了近10秒。如果是要翻译为其它语言,那可以直接参考以下代码(主要看for循环中weight和indices的处理):
  1. function outimg=reducesize(in, weights,indices,dim)
  2. % Reducesize along a specified dimension

  3. % in           - input array to be resized
  4. % dim          - dimension along which to resize
  5. % weights      - weight matrix; row k is weights for k-th output pixel
  6. % indices      - indices matrix; row k is indices for k-th output pixel


  7. % reduce along first dimension
  8. reduce1=zeros(dim(1),size(in,2));
  9. weight1=weights{1};
  10. index1=indices{1};
  11. for i=1:size(in,2)
  12.     for j=1:dim(1)
  13.         w11=weight1(j,:);
  14.         ind11=index1(j,:);
  15.         B=double(in(ind11,i));
  16.         v=w11.*B';
  17.         reduce1(j,i)=sum(v);
  18.     end
  19. end

  20. % reduce along second dimension
  21. reduce2=zeros(dim(1),dim(2));
  22. weight2=weights{2};
  23. index2=indices{2};
  24. for i=1:dim(1)
  25.     for j=1:dim(2)
  26.         w22=weight2(j,:);
  27.         ind22=index2(j,:);
  28.         B=reduce1(i,ind22);
  29.         v=w22.*B;
  30.         reduce2(i,j)=sum(v);
  31.     end
  32. end

  33. % reduce along another dimension
  34. % ...

  35. outimg=round(reduce2);
复制代码
回复此楼 已获打赏: 0 积分

举报

新手

22 麦片

财富积分


050


10

主题

37

帖子

0

最佳答案
 楼主| 发表于 2020-7-17 15:19:11 | 显示全部楼层
myisland 发表于 2020-7-17 10:50
  • internal函数属于不向用户开放的函数,不会有官方文档。
            mex结尾的函数都是预编译好的函数, ...

  • 非常感谢老师的回复,我仔细研究一下
    回复此楼 已获打赏: 0 积分

    举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    快速回复 返回顶部 返回列表