首页 技术 正文
技术 2022年11月8日
0 收藏 396 点赞 1,359 浏览 2060 个字

原本听的是mooc武汉大学的数字图像处理课程,但是无奈老师读ppt的能力太强,不太适应,后面的课程对于实验方面的要求甚低,无奈之下到处找课程,终于找到了一个适合自己的教程《王伟强-数字图像处理》,今天开始连载,希望3.20日之前能够完成课程的学习,加油!

预计连载的目录

  1. 导言与MATLAB快速介绍
  2. 空域处理(I) – 亮度变换(I)
  3. 空域处理(II)- 卷积与线性移动不变系统
  4. 频域处理(I)- 傅立叶变换
  5. 频域处理(II)- 高低频滤波器与频域处理框架
  6. 图像复原(I)- 噪声与相关的去噪技术
  7. 图像复原(II)- 降质函数与约束最小二乘恢复方法
  8. 彩色图像处理
  9. 小波变换与图像处理(I)- 小波的相关理论
  10. 小波变换与图像处理(II)- 尺度函数、小波函数、快速小波变换

基本概念

数字图像处理DigitalImageProcessing,DIP

冈萨雷斯将数字图像处理看成一个黑箱,输入一个图片,输出也是一个图片

图像分析就是输出属性

视觉就是输出理解

matlab:配置环境当前目录和搜索路径

添加或修改搜索路径,右击桌面图标属性修改设置起始位置

matlab:.m文件

matlab分为两种文件,一种是脚本文件,类似于dos系统中的批处理文件,特点就是所有变量都是全局变量,运行完之后的变量不会从系统中清除。另外一种函数文件,外部看是看不出来的,特点就是函数变量除了特殊声明都是局部变量。

数字图像的表示

也就是说,图像的矩阵存储形式是从0,0位置开始,而matlab中图像的矩阵存储形式是1,1开始。

读取一幅图像

使用Matlab ipt读取一幅图像,ipt就是图像处理工具箱。

f=imread('bird.jpg');
  • imread从当前目录读取文件,如果失败,它将尝试在搜索路径中找到该文件
  • 请注意分号;,如果不加分号,命令窗口将显示图像的矩阵值。
  • matlab中的字符串是单引号。

获取图像的信息

显示或写入图像

  • imshow(f)
  • imshow(f,G)
  • imshow(f,[low,high])
  • imshow(f,[])
  • imwrite(f,’filename’)
  • imwrite(f,’filename’,’ext’)
  • imwrite(f,’filename’,’quality’,q)

    质量指标q的范围是0-100,值越低,图像质量越差,压缩率越高。

图像类型

  1. 强度图像/灰度图像
  • 灰度图像是一个数据矩阵,它的值被缩放以表示强度。
  • 当灰度图像的像素是uint8或uint16类型时,它们的取值是

    [0,255]或[0,65535]范围内的整数。

  • 如果图像是double类型的,则像素值为浮点数。按照惯例,经

    过缩放之后double类型的灰度图像的像素值落在[0,1]范围内

  1. 二值图像
  • 二值图像是由0和1组成的逻辑阵列。
  • 数值阵列使用逻辑函数转换为二进制。
  • 如果A包含0和1以外的元素,则使用逻辑函数将所有非零数值转换为逻辑真(1),并将所有值为0的项转换为逻辑假(0)
  1. 索引图像

    BMP图像标识其为索引图像

  • 图像可以是索引图像的,也可以是真颜色图像。
  • 索引图像将颜色作为索引数组存储到colormap图中。

    数据号代表着调色板的索引号,从下往上存储。对于数据量大的图像节省空间

  1. RGB图像

    是目前见到的最多的图像,又叫真彩图像。

  • 真彩色图像不使用colormap;相反,每个像素的颜色值直接存储为RGB三元组。colormap也就是调色板
  • 在MATLAB中,真彩色图像对象的CData属性是一个三维(m×n×3)数组。这个数组由三个m×n矩阵组成,它们沿着第三维连接在一起。

数据类型

C语言中主要是int,double。matlab中int分的很细,u代表不带符号的,uint代表usigned,非负数。

数据类型和图像类型之间转换

读入一个图片通常是整型,直接进行傅里叶变换是错误的,因此需要转换为double型。

  • 通常我们将图像称为(数据 – 图像类型)的图像

    例如“uint8强度图像”仅指代像素值是uint8类型的强度图像

  • 数据类之间转换简单,语法为
B = data class name(A)

其中数据类名是数据类表第一列中的名称之一。例如A是一个uint8类型的数组,精度更高的double类型数组B是由命令B = double(A)生成的。这种转换在整本书中很常见,因为matlab希望数值计算中的操作数是双精度浮点数。

数据转换超过255直接截断过于粗暴,因此ipt中通常采用伸缩的方式

如何分析?im2uint8,所有超过[0,1],以外的数都会进行区分。将<0的-0.5设置为0,>1的1.5设置为1,整体乘以255

所有<0设置0,所有>255设置为1,(128-(-12))/(300+12)=0.4487

索引

w=v ‘ ,代表共轭转置。

A = magic(5),每一行每一列每一个对角线的和都拉丁方5,和为65.

sum(A)是一个行向量,sum(A()是一个数

mean(A)每一科的平均数,mean(A()所有科的平均数

把c语言的 !换成了 ~

  • MATLAB 语言专门针对矩阵运算进行了优化。尽可能地利用这一优势可以极大地加快计算速度。

    • 循环向量化
    • 数组预分配

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,491
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,492
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,293