数字图像处理学习笔记(一)
digital_image_process
数字图像处理学习笔记, 根据以下学习指南进行:
-
学习用书: 数字图像处理 MATLAB 版 冈萨雷斯著
推荐两本书,一本偏理论, 一本偏代码实战(Matlab), 打包下载地址: 链接:https://pan.baidu.com/s/1Ir3vW_GwTOXbX-QIHkLkxA
提取码:nd2a偏理论: <数字图像处理_第三版_冈萨雷斯>
偏实战: <数字图像处理(MATLAB版)(中译版)[冈萨雷斯]>
包含书里的图片素材
-
学习内容: 第 1 章、 第 2 章、 第 3 章、 第 6 章、 第 9 章的 9.1~9.3 小节、
第 10 章的 10.1~10.3 小节、 第 11 章的 11.1~11.2 小节 -
学习要求:为了增强理解,需要根据自己对方法的理解编写相应的 matlab程 序,
书中的示例程序可以作为参考。 -
图像处理高阶算法
学 习 内 容 : SIFT[1], LBP[2], BoW[3], affine transformation[4], similarity
transformation[5][1] material: https://blog.csdn.net/zddmail/article/details/7521424
code: https://github.com/sun11/sw-sift (matlab 版)
https://github.com/paulaner/SIFT (python 版)
[2] material: https://blog.csdn.net/heli200482128/article/details/79204008
code: https://github.com/michael92ht/LBP ( python 版)
https://github.com/bikz05/texture-matching ( python 版)
[3] material: https://blog.csdn.net/tiandijun/article/details/51143765
code: https://github.com/qijiezhao/SIFT_BOW_Usage ( python 版)
https://github.com/lucifer726/bag-of-words- ( python 版)
[4] material: https://www.cnblogs.com/ghj1976/p/5199086.html
[5] material: https://blog.csdn.net/u014096352/article/details/53526747
说明
由于MATLAB基本操作之前学过,主要对遗忘的内容进行笔记;
除了MATLAB代码,加入相关Python3代码。其中使用opencv-python,
pillow(PIL),
skimage等工具。
很久之前的笔记, 适合CV初学者进行学习
内容列表(已完成)
- CH01_CH02:MATLAB数据类型与基本操作;
- CH03:gamma亮度与对比度拉伸变换,直方图均衡化与匹配,空间滤波
- CH06:索引图像概念,图像提取&分离通道,彩色空间转换,彩色映射变换,彩色图像空间滤波,彩色边缘检测,彩色图像分割
- CH09:膨胀,腐蚀,顶帽,黑帽,击中或击不中变换,查找表
- CH10:点、线检测(canny、Hough),阈值处理
- CH11:链码、最小周长多边形的多边形近似、标记、边界片段、骨骼
- 高阶:SIFT
第一章 绪论
使用MATLAB图像处理工具箱IPT函数,并且本书开发了新函数,每个函数的源代码包含在各章节或附录C中
第二章 基本原理
Matlab支持图片格式
图像操作
1.读取图像:f=imread('xxxx.jpg')
2.读取行列:[m,n]=size(f)
, whos f
显示数组附加信息。第一维表示垂直方向,size(f,1)
表示行数
3.显示图像:imshow(f,G)
若将G省略,默认灰度级数为256;G=[low high]
表示low以下为黑,high以上为白;G=[ ]
表示low默认为f中最小值,high为最大值
4.函数pixval:交互显示单个像素亮度值;若按住鼠标左键不放,可用于测量距离
5.保存图像:imwrite(f,'xxxx.jpg')
- JPEG压缩:
imwrite(f,'xxx.jpg','quality',q)
q为0-100的整数,q越小图像退化越严重 - 可用imfinfo计算压缩率
K=imfinfo('test.jpg');
image_bytes = K.Width*K.Height*K.BitDepth/8;
compressed_bytes = K.FileSize;
compressed_ratio = image_bytes/compressed_bytes;
K结构体成员如下图
- tif同分辨率尺寸缩放
数据类
图像类型
- 亮度图像(Intensity images)
- 二值图像(Binary images):数据类为logical。A为由0、1构成的数值数组,
B=logical(A)
,islogical判断 - 索引图像(Indexed images)
- RGB图像(RGB images)
数据类与图像数据类型间的转换
- 数据类转换:B=logical(A)或uint8(A); double转uint8,会将[0 255]以外去掉,然后去掉小数点部分
- 图像类型转换:
- im2uint8:[0 1]范围内乘255,范围外置为0,1。
- im2uint16:与int8类似,65535。
- mat2gray:只能输入double,转换为[0 1]的double;mat2gray(A,[Amin,Amax])规定转换后的0,1。
- im2double:若输入为uint8,每个值除以255;若为uint16,除以65535。
- im2bw:
im2bw(f,T)
T的取值为[0 1];若输入uint8,会先每个值除以255;可以用关系运算’gb=f>2’替代。
数组索引
- 向量索引:v([1 4 7])
- 矩阵索引:
1.A(D),D为逻辑数组,将所有为1的以列向量排列
2.一个:,将全部元素以逐列形式排成一个列向量,sum(A(:))等价于sum(sum(A))
例2.5
- 垂直翻转
fp=f(end:-1:1,:);
- 二次取样
fs=f(1:2:end,1:2:end);
标准数组
运算符
1.算数运算符
- max&min
2.关系运算符 ~=
3.逻辑运算符 & | ~
代码优化
- tic toc 计时;t1/(t2+eps)
- 预分配数组
单元数组与结构体
//单位数组
c={'guess',[1;2],3}
c{1}
//结构体
field='first';
value=1;
c=struct(field,value);
标签:github,数组,python,数字图像处理,笔记,学习,https,图像,com
From: https://blog.csdn.net/qq_44710568/article/details/136831088