0、下定决心

当当入手数字图像处理一本,从此开此正式跨入数字图像处理大门。以前虽然多多少少接触过这些东西,也做过一些相关的事情,但感觉都不够系统,也不够专业,从今天开始,一步一步地学习下去,相信会有成果的。

1、本章知识点结构

下面的思维导图主要用xmind制作。知识点是对第1章的一些个人认为比较重要的知识概括了一下,然后加了自己的一点点理解。

2、书中例子实践

第一个例子,试一试手。

 function f = twodsin(A, u0, v0, M, N)
f = zeros(M, N);
for c = :N
v0y = v0 * (c - );
for r = :M
u0x = u0 * (r - );
f(r, c) = A * sin(u0x + v0y);
end
end

运行速度,只要0.0154秒,但是书上的用了0.0471秒,看来我的电脑比作者的电脑好了不少哈,或者是高版本的MATLAB(2014a),优化做得更好。

>> timeit(@() twodsin(, /(*pi), /(*pi), , ))

ans =

    0.0154

将第一个例子的第2行注释掉,运行如下,果然速度还是下降了不少,所以还是预分配内存比较好。

>> timeit(@() twodsin(, /(*pi), /(*pi), , ))

ans =

    0.0263

就是一个二维的sin(x,y)函数,它的幅度就表示亮度,如下图所示,黑白正弦起伏,感觉很不错的,MATLAB果然很强大。

>> f=twodsin(, /(*pi), /(*pi), , );
>> imshow(f,[]);

当然此例子的关键不在画出图像,而是要通过向量化的方式将上述函数中的两个for循环去掉,从而提高算法的速度。

 function f = twodsin2(A, u0, v0, M, N)
r = :M-;
c = :N-;
[C, R] = meshgrid(c, r);
f = A * sin(u0 * R + v0 * C);

同样的参数,只用了0.0072,比上个0.0154,快了50%多。

>> timeit(@() twodsin2(, /(*pi), /(*pi), , ))

ans =

    0.0072

对meshgrid(M,N)函数,我是直接把它理解为生个一个网格,这个网格的就是MxN的面积大小,而向量M和N中的元素,就是这个网格上的点,可以用如下图来表示,更加直观一点,如理解有误,欢迎指正。

上述网格表示的是如下meshgrid,有了图,应该非常容易理解。

>> [X,Y]=meshgrid(:,:)

X =

Y =

总结一下

通过对本章的学习,对图像的理解,更加深入,可以从数学的角度来看一幅图像,同时,也更加清楚以明白图像的信息是如何存储的。这一章中,也讲子许多MATLAB的技巧,很实用,也深深体会到了MATLAB处理矩阵的强大功能,这一优势确实是C/C++/C#等语言无法比拟的。路漫漫,吾必将上下求索。Keep on!!

本博文纯原创,未经博主同意(我的邮箱:endless@139.com),请勿转载。有想交流学习的小伙伴,可以加我的QQ:1449494575,欢迎各位。

数字图像处理(MATLAB版)学习笔记(1)——第1章 绪言的更多相关文章

  1. 数字图像处理(MATLAB版)学习笔记(2)——第2章 灰度变换与空间滤波

    0.小叙闲言 1.本章整体结构 2.书中例子 例2.1 主要是使用函数imadjust,来熟悉一下灰度处理,体验一把 >> imread('myimage.jpg'); >> ...

  2. 锋利的jQuery第2版学习笔记4、5章

    第4章,jQuery中的事件和动画 注意:使用的jQuery版本为1.7.1 jQuery中的事件 JavaScript中通常使用window.onload方法,jQuery中使用$(document ...

  3. 锋利的jQuery第2版学习笔记6、7章

    第6章,jQuery与Ajax的应用 Ajax的优势和不足 Ajax的优势 1.不需要插件支持 2.优秀的用户体验 3.提高Web程序的性能 4.减轻服务器和带宽的负担 Ajax的不足 1.浏览器对X ...

  4. C++Primer第5版学习笔记(二)

    C++Primer第5版学习笔记(二) 第三章的重难点内容         这篇笔记记录了我在学习C++常用基本语法的学习过程,基本只记录一些重难点,对概念的描述不是一开始就详尽和准确的,而是层层深入 ...

  5. C++Primer第5版学习笔记(一)

    C++Primer第5版学习笔记(一) 第一.二章的重难点内容        这个笔记本主要记录了我在学习C++Primer(第5版,中文版)的过程中遇到的重难点及其分析.因为第一.二章都比较简单,因 ...

  6. [学习一个] Matlab GUI 学习笔记 Ⅰ

    Matlab GUI 学习笔记 Ⅰ 1. Foreword Matlab 是严格意义上的编程语言吗?曾经有人告诉我他是通过 Matlab 学会了面对对象编程,我是不信的,但这依然不妨碍它在特殊领域的强 ...

  7. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  8. 【Head-First设计模式】C#版-学习笔记-开篇及文章目录

    原文地址:[Head-First设计模式]C#版-学习笔记-开篇及文章目录 最近一年断断续续的在看技术书,但是回想看的内容,就忘了书上讲的是什么东西了,为了记住那些看过的东西,最好的办法就是敲代码验证 ...

  9. C++Primer第5版学习笔记(四)

    C++Primer第5版学习笔记(四) 第六章的重难点内容         你可以点击这里回顾第四/五章的内容       第六章是和函数有关的知识,函数就是命名了的代码块,可以处理不同的情况,本章内 ...

随机推荐

  1. vue1升级到vue2的问题

    router 不能用map方法了,需要改router的结构改为 routers= [ { // 当没有匹配路由时默认返回的首页        path:'/index',        compone ...

  2. DOM树的增查改删总结

    DOM树的增查改删总结 摘要:对HTML DOM的操作是前端JavaScript编程时必备的技能,本文是我自己对DOM树操作的总结,主要是方法的罗列,原理性的讲述较少,适合大家用于理清思路或是温习 一 ...

  3. Docker存储驱动之Btrfs简介

    简介 Btrfs是下一代的copy-on-write文件系统,它支持很多高级特性,使其更加适合Docker.Btrfs合并在内核主线中,并且它的on-disk-format也逐渐稳定了.不过,它的很多 ...

  4. android性能优化的一些东西

    说到android性能优化,总觉得是一个很模糊的东西,因为app的性能始终适合手机本身的性能挂钩的,也许一些消耗内容的操作,在一些移动设备可以运行,但是在另外一些上面就会出现内存溢出的问题,但是不管怎 ...

  5. markdown中常见的转义字符

    markdown中的转义字符 字符 转义后字符 & & " " > > < < 不断空格   \ \\ ` \` * \* _ \_ {} ...

  6. php 实现简单购物车

    今天在练习购物车以及提交订单,写的有点头晕,顺便也整理一下,这个购物车相对来说比较简单,用于短暂存储,并没有存储到数据库, 购物车对于爱网购的人来说简直是熟悉的不能再熟悉了,在写购物车之前,我们首先要 ...

  7. ERP实施顾问是干什么的?

    ERP实施序列的人员,统称为ERP实施顾问. ERP实施顾问“是把公司的ERP实施作为己任,并投入大量的人力和财力以实现这一目标的群体”.他们精通ERP理论与ERP软件的使用方法,熟练运用项目实施方法 ...

  8. 如何让celery接受定制的参数

    背景介绍 最近的一个项目使用到celery结算订单,使用celery的确很方便.但是复杂的内部框架导致了需要传人大量的参数例如数据库配置文件等.下面先来看看我仿照官网写的代码.所有代码都放到githu ...

  9. ASP日期格式化函数

    Public Function GetFormatDate(DateAndTime, para)On Error Resume NextDim y, m, d, h, mi, s, strDateTi ...

  10. JAVA基础:求一个数组的中心元素