/image-processing-notebook

Jupyter notebooks for Digital Image Processing

Primary LanguageJupyter NotebookMIT LicenseMIT

数字图像处理学习笔记

Preface

这个repo仅用于个人修读研究生学位中对数字图像处理技术的学习笔记整理。根据实验室的研究方向和导师的要求,我主要关注以下方面:

  • 数字图像处理技术与FPGA相结合,
  • 红外图像(灰度图像)和3D点云融合,
  • 机器学习模型在图像处理中的应用
    • 机器学习模型在FPGA上部署
  • 异构计算

不过该项目目前(2023.05)主要还是以一个初学者的角度出发,以Jupyter Notebook作为载体,使用python语言学习和实现数字图像处理的经典方法,包括但不限于图像增强,图像变换,以及特征提取和分析等。这些笔记经过进一步整理将会发布在我的博客

Usage

如果要运行该repo中的代码,需要提前安装conda环境,Anaconda/Miniconda均可。然后使用命令创建虚拟环境img并激活:

$ conda env create --file environment.yml
$ conda activate img

然后需要在项目根目录下执行以下命令:

  • pip install [-e] ./,安装imgtools/供notebooks调用;
  • python init.py,以下载所有的示例图片

最后在项目根目录下运行jupyter notebook或者jupyter lab打开项目即可。

为了更好的适应使用git管理Juptyer Notebook,所有提交到远端的Notebook中均使用nbstripout过滤掉输出数据,因此clone项目后需要重新运行以观察输出。

此外,由于Github LFS不友好的机制,所有的图片文件均使用图床sm.ms进行管理。此部分代码见ImageHosting

ImageHosting

ImageHosting对外提供了sm.ms的管理对象smms_app和对应的类SmmsApp,并提供了一组易于使用的API用于加载图像到本地。要使用它们,参考以下示例:

from imgtools.ImageHosting import smms_app
from pathlib import Path

smms_app('2uzYGhVDw1F6Nv5''x.png')

由于重载了__call__方法,所以可以像调用一个函数一样调用实例smms_app

入参:

  • 图像在图床网站中的哈希值
  • 目标文件名

效果:

  • 将指定的图片按目标文件名保存至本地

返回值:

此repo暂接受任何PR。

any2png

由于sm.ms不支持上传BMP和TIFF格式的图片,因此需要一个工具将其转换为同样是无损压缩的PNG格式。见any2png.py

以BMP格式为例,运行python3 imgtools/utils/any2png.py /path/to/image.bmp,即可在相同路径下生成PNG格式的图片。

References

Python Programming

  1. Python 3.10 Documentations
  2. Pillow Documentations: a fork of PIL(Python Image Library)

图片素材来源

  1. images from Digital Image Processing 3rd edition
  2. 《图像处理与图像分析技术(C/C++语言版)》随书课件

For Starter

  1. Digital Image Processing, 4th Edition(Global), Rafael C. Gonsalez
  2. 图像处理与图像分析基础(C/C++语言版), 任明武, 南京理工大学