zoukankan      html  css  js  c++  java
  • 数字图像处理(MATLAB版)学习笔记(1)——第1章 绪言

    0、下定决心

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

    1、本章知识点结构

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

    2、书中例子实践

     第一个例子,试一试手。

    1 function f = twodsin(A, u0, v0, M, N)
    2 f = zeros(M, N);
    3 for c = 1:N
    4     v0y = v0 * (c - 1);
    5     for r = 1:M
    6         u0x = u0 * (r - 1);
    7         f(r, c) = A * sin(u0x + v0y);
    8     end
    9 end

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

    >> timeit(@() twodsin(1, 1/(4*pi), 1/(4*pi), 512, 512))
    
    ans =
    
        0.0154

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

    >> timeit(@() twodsin(1, 1/(4*pi), 1/(4*pi), 512, 512))
    
    ans =
    
        0.0263

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

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

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

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

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

    >> timeit(@() twodsin2(1, 1/(4*pi), 1/(4*pi), 512, 512))
    
    ans =
    
        0.0072

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

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

    >> [X,Y]=meshgrid(1:3,10:14)
    
    X =
    
         1     2     3
         1     2     3
         1     2     3
         1     2     3
         1     2     3
    
    
    Y =
    
        10    10    10
        11    11    11
        12    12    12
        13    13    13
        14    14    14

    总结一下

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

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

  • 相关阅读:
    Oracle中TO_DATE格式
    实现带查询功能的Combox控件
    Combox和DropDownList控件的区别
    C# 获取字符串中的数字
    C# try catch finally 执行
    树形DP codevs 1814 最长链
    codevs 2822 爱在心中
    匈牙利算法 cojs.tk 搭配飞行员
    匈牙利算法 codevs 2776 寻找代表元
    2016-6-19 动态规划,贪心算法练习
  • 原文地址:https://www.cnblogs.com/endlesscoding/p/6675148.html
Copyright © 2011-2022 走看看