《数字图像处理与机器视觉》是一本书,主要介绍的是图像处理与机器视觉方面的知识。
最近在看这本书入门,顺便记录下在学习的过程中碰到的问题和实践,作为backup。好记性不如烂笔头
为了更好的理解书中内容,还是需要装一个工具,手动实现下书中的流程,或者自己动手实现新的小功能。
首先必备工具VS或者MATLAB,Mac版的MATLAB可以在百度上搜索破解版的,离线安装,然后替换一个库,用离线license激活就可以使用了。
第0章主要介绍了图像、像素的一些基本知识
图像的分类:一般为亮度图,RGB图,索引图,二值图和多帧图像
还有图像空间,分辨率,邻接性,连通性,区域和边界等预备知识,这些建议在网上找相关资料熟悉下。初次理解的话还是很有些绕。
第1章介绍了MATLAB的工作环境,具体语言,与图像处理相关的函数及库等
第2章介绍了Visual C++图像处理基础,提一下BMP位图,在windows平台很常见的图像保存格式
- BMP位图主要分为四个部分:
1.位图文件头数据结构,BITMAPFILEHEADER;
2.位图信息头数据结构,BITMAPINFOHEADER;
3.调色板,即索引表;
4.实际位图数据;
- C++自带的Img类和该书陪套的ImgProcess,含源码,可以阅读下源码便与理解书中内容
第3章为图像的点运算
在前面的基础知识铺垫后,开始学习最基本的图像处理操作:
RGB->灰度图,然后统计其灰度直方图
灰度直方图主要描述了一幅图像灰度级的统计信息,简单来说就是统计一幅图中各个级别灰度出现的次数
MATLAB里面已经有灰度直方图函数imhist,动手操作下,进行对比(建议不要读较大的图片,我用的一张1536*2048的图,读了快十秒)
效果如下:
=== 2018-1-11 ===
灰度图的线型变换
公式为O = Fa * I + Fb;
其中O为输出图像想,I为输入图像;
该公式为一次线性函数,有几个规律如下:
通过公式也可以发现O最后计算的值有可能大于255或者小于0,会因为亮度达到饱和而丢失部分细节
- Fa > 1时,处理后的图片对比度增大;
- Fa < 1时,处理后的图片对比度减小;
- Fa = 1 & Fb != 0时,图像整体亮度发生变化;
- Fa = -1, Fb = 255时,灰度反转,可以增强暗色图片中亮度较大的细节
一些“比较好玩”(有用)的MATLAB函数
最后附上张灰度处理效果图subplot(2,2,1),可以参见百度百科subplot的解释,说的非常清楚;
stem(X,Y,‘.’),这个百度上也有stem和stem,这两篇博客结合起来看,stem的用法基本上就很全面了;
其实MATLAB自带的有函数说明和example可以点进去查看;
第一张是原图:
第二张是灰度处理图,对比起来看很方便:
因为之前博客里面有谈到用OpenGL的shader来调节图片亮度,取反和生成灰度图,所以这一节相对比较简单,权当练手吧。
=== 2018-1-11 ===
最后遗留一个问题O = Fa * I + Fb;
当Fa为-1时,Fa * I 全部为0,这个比较诡异,明天再排查下是不是MATLAB的特性
=== 2018-1-12 ===
今天用MATLAB验证了下:
令Fa = -1, Fb = 0,最后得到O的灰度矩阵全部为0;
令Fa = 1,Fb = 256,最后得到O的灰度矩阵全部为255;
所以应该是MATLAB把O判断为图像类数据,做了类似防止内存溢出的安全处理,把矩阵内灰度值做了限制,保证其位于(0~255)之间
如果没有CSDN积分 ,也可以直接戳这里下载数字图像处理与机器视觉 密码: f5cb
下一篇:继续学习图像处理中常见的灰度变换