MatlabLens
本程序是基于 MATLAB 的 GUI 界面的类 Office Lens 应用,还有很多待提高

其中主要功能有
- GUI 界面,方便快捷的操作
- 文件选择功能
- 透视变换
- 图像手动剪切
- 图像降噪
- 调节对比度
- 图像二值化
- 无限撤销功能
- 保存图像
详细说明
- GUI 界面
这次是简单的尝试了下 matlab 自带的 VB 似的 GUI 界面,异常的好用,连监听啊什么的都不用自己写。 - 文件选择功能
利用 uioutfile 函数,调用 Windows 熟悉的文件选择

- 透视变换
透视变换时本程序效率最低,大概需要跑 2min 的功能,利用 MIT 的算法,从左到右从上到下选择要进行透视变换的四个点,这四个点之间的图像将被处理变换为矩形,其原理是将这四个点的坐标,转换为矩形定点,联立求解四元四次方程组,得到透视变换矩阵,将透视变换矩阵作用到四个点中间的其他坐标进行变换。
效率最低的地方应该就是解方程的步骤。

- 图像手动剪切
利用 imcrop 函数,本想在透视变换后直接利用顶点坐标进行裁剪,但其实透视变换后,处理后的图像会对变换后没有像素的地方进行黑色填补,导致顶点坐标发生变化。

图像降噪
对图像进行进行高斯滤波。调节对比度
图像二值化
利用 im2bw 进行二值化,本想是在二值化后进行 OCR 功能,但微软的 API 接口变了,百度的接口变成收费的了,而且还需要考虑利用 MATLAB 调用 Python,所以没有实现。无限撤销功能
在每一步进行图像处理时,将图像 push 进一个数组,撤销时 pop 出数组并移动指针。不过发现想增加前进功能时,需要考虑很多操作逻辑,必须撤销三步之后又操作了一步,这个时候又前进,等等等等,所以取消了前进功能。保存图像
将处理后的图像保存到本地。
感想
最可惜的是没有实现 ocr 功能,和自动进行边缘检测之后进行透视变换,再自动剪裁。
OCR 需要的是接口,自动边缘检测的难度在于图像二值化的效果必须很理想,然后选择合适的算子。
令人开心的是,已经基本完成大部分功能,自动化是进行优化。
不过以下有一些疑问:
- 如何将 .m 文件编译成不需要 MATLAB 的可执行文件
- 如何对透视变换进行优化
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Yvon Shong!
评论