您可以使用im2col *将图片转换为列格式,以便每个块形成[64 * 4096]矩阵的列。然后对每列应用转换,并使用bsxfun来向量化错误计算。

DomainImage=rand(512);

RangeImage=rand(512);

DomainImage_col = im2col(DomainImage,[8 8],'distinct');

R = im2col(RangeImage,[8 8],'distinct');

[x y]=ndgrid(1:8);

function [x_dash, y_dash] = ApplyTransformation(x,y)

x_dash = x;

y_dash = y;

end

[x_dash, y_dash] = ApplyTransformation(x,y);

idx = sub2ind([8 8],x_dash, y_dash);

D_trans = DomainImage_col(idx,:); %transformation is reduced to matrix indexing

Error = 0;

for mn = 1:64

Error = Error + bsxfun(@minus,R(mn,:),D_trans(mn,:).').^2;

end

[minerror ,min_ij]= min(Error,[],2); % linear index of minimum of each block;

[min_i min_j]=ind2sub([64 64],min_ij); % convert linear index to subscript

解释:

我们的目标是尽可能减少循环次数。为此,我们应该避免矩阵索引,而应该使用矢量化。嵌套循环应转换为一个循环。作为第一步,我们可以创建一个更优化的循环:

min_ij = zeros(4096,1);

for kl = 1:4096 %%% => 1:size(D_trans,2)

minerror = 9999;

min_ij(kl) = 0;

for ij = 1:4096 %%% => 1:size(R,2)

Error = 0;

for mn = 1:64

Error = Error + (R(mn,kl) - D_trans(mn,ij)).^2;

end

if(Error < minerror)

minerror = Error;

min_ij(kl) = ij;

end

end

end

我们可以重新安排循环,我们可以将最内部的循环作为外部循环,并将最小值的计算与错误的计算分开。

% Computation of the error

Error = zeros(4096,4096);

for mn = 1:64

for kl = 1:4096

for ij = 1:4096

Error(kl,ij) = Error(kl,ij) + (R(mn,kl) - D_trans(mn,ij)).^2;

end

end

end

% Computation of the min

min_ij = zeros(4096,1);

for kl = 1:4096

minerror = 9999;

min_ij(kl) = 0;

for ij = 1:4096

if(Error(kl,ij) < minerror)

minerror = Error(kl,ij);

min_ij(kl) = ij;

end

end

end

现在代码的排列方式可以最好地进行矢量化:

Error = 0;

for mn = 1:64

Error = Error + bsxfun(@minus,R(mn,:),D_trans(mn,:).').^2;

end

[minerror ,min_ij] = min(Error, [], 2);

[min_i ,min_j] = ind2sub([64 64], min_ij);

*如果您没有图像处理工具箱,可以找到更有效的im2col实施{。{3}}。

*整个计算只需不到一分钟。

matlab中图像太大,图像处理:算法在MATLAB中耗时太长相关推荐

  1. python图片-Python中的十大图像处理工具

    原标题:Python中的十大图像处理工具 导读:本文主要介绍了一些简单易懂最常用的Python图像处理库. 作者:Parul Pandey 来源:大数据文摘(ID:BigDataDigest) 当今世 ...

  2. matlab中gad,10大经典算法matlab代码以及代码详解【数学建模、信号处理】

    [实例简介] 10大算法程序以及详细解释,包括模拟退火,禁忌搜索,遗传算法,神经网络.搜索算法. 图论. 遗传退火法.组合算法.免疫算法. 蒙特卡洛.灰色预测.动态规划等常用经典算法.是数学建模.信号 ...

  3. 深入学习OpenCV中图像相似度的算法

    最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜 ...

  4. 论文:回声消除中的LMS和NLMS算法与MATLAB实现

    博客地址:凌逆战(转载请注明出处) 论文地址:Adaptive Algorithms For Acoustic Echo Cancellation In Speech Processing 自适应滤波 ...

  5. 回声消除中的LMS和NLMS算法与MATLAB实现

    自适应滤波是数字信号处理的核心技术之一,在科学和工业上有着广泛的应用领域.自适应滤波技术应用广泛,包括回波抵消.自适应均衡.自适应噪声抵消和自适应波束形成.回声对消是当今通信系统中普遍存在的现象.声回 ...

  6. 大津算法的matlab实现

    大津算法详解 一.算法功能 ​ 图像分割就是把图像分成若干个特定的.具有独特性质的区域并提出感兴趣目标的技术和过程.它是由图像处理到图像分析的关键步骤. ​ 大津算法也称最大类间差法,由大津于1979 ...

  7. matlab整定串级pid,PID算法在Matlab串级控制中的应用

    PID算法在Matlab串级控制中的应用 自114 1112002039 陈艳 前言:这个专题是由王娟老师给我们授课,我感觉收获挺大的,尤其是matlab仿真软件的使用,为我以后的实验课打下良好的基础 ...

  8. dqn在训练过程中loss越来越大_DQN算法实现注意事项及排错方法

    在学习强化学习过程中,自己实现DQN算法时,遇到了比较多的问题,花了好几天的时间才得以解决.最后分析总结一下,避免再走弯路. 有可能开始实现出来的DQN算法,无论怎么训练总是看不错成果.需要注意的地方 ...

  9. (Matlab实现)蚂蚁狮子优化算法在电力系统中的应用

    目录 1 知识一网打尽 2 蚂蚁狮子优化算法在电力系统经济调度中的应用 3 运行结果 4 Matlab代码实现 1 知识一网打尽 这里总结一位博主的电力系统经济调度目录 蚂蚁狮子优化算法(完整Matl ...

  10. 机器学习与数据挖掘中的十大经典算法

    转载https://www.cnblogs.com/liulunyang/p/3868808.html 参考可见 https://blog.csdn.net/fuqiuai/article/detai ...

最新文章

  1. Android Studio 快捷键
  2. MySQL 笔记6 -- 函数与事务
  3. AI顶会直播丨深度学习顶级会议ICLR 2021中国预讲会明天召开,为期三天五大论坛...
  4. 历届试题 合根植物(查并集,模板+优化)
  5. 多级队列调度算法可视化界面_冷月手撕408之操作系统(8)-处理机调度
  6. 深度学习笔记(30) Inception网络
  7. Perl篇:获取操作系统的信息
  8. Linux系统管理员应该知道的20个系统监控工具
  9. python3 scrapy中文文档_Python3爬虫入门:Scrapy 框架
  10. nuxt.js 全局 js_使用nuxt js在vuetify js中进行高级颜色管理
  11. STM32单片机初学2-从Keil工程创建开始
  12. 大数据的应用场景都有哪些(农业篇)
  13. 基于Hyperlynx VX.2.5 的DDR3仿真之一:Verifying That the Software Recognizes Your Design Correctly
  14. 惯性测量单元预积分原理与实现
  15. android图片资源加密解密,[原创]cocos2d游戏图片资源解密
  16. Java——匿名内部类
  17. 关于视频变速播放软件
  18. Shell和Jenkins讲解
  19. 小程序发布之后无法生成海报问题
  20. 如何判断一个结构体的大小

热门文章

  1. RocketMQ源码分析之RocketMQ事务消息实现原下篇(事务提交或回滚)
  2. CentOS7下搭建LAMP+FreeRadius+Daloradius Web管理
  3. 11.18-11.19总结(transform,transition,媒体查询,弹性盒子)
  4. 数据为王:大数据如何影响消费金融
  5. Fastjson 爆出远程代码执行高危漏洞,更新版本已修复
  6. CRM脱机下使用说明_海天
  7. C++双冒号::的作用
  8. 分数化小数c语言题目,习题 2-5 分数化小数 (decimal)(C语言版)
  9. 唐筛的准确率这么低为什么还要做_【NT 唐筛 四维】 【唐筛结果通知】...
  10. python 类函数 成员函数_python中的类函数、静态函数、成员函数以及类变量、成员变量...