[Mac]图像处理JPEG工具箱jpegtbx_1.4的MATLAB编译及使用

macOS上如何在MATLAB中编译使用jpegtbx_1.4?

预备:jpegtbx_1.4全称是JPEG Toolbox v1.4,是一个对JPEG图像进行处理的函数集合。这个工具箱可以借助MATLAB提取出JPEG图像的头信息、编码信息、DCT系数矩阵、量化表、哈夫曼表等JPEG元素,以供我们图像处理、信息隐藏来使用。

这个工具箱基于IJG(i.e. Independent JPEG Group)进行开发,代码内容是C语言,属于MATLAB\C混合编程。使用这个工具箱,我们需要在MATLAB中用mex命令进行编译。

这个操作在win、Linux中很容易实现,但在macOS中,会遇到问题。

本文涉及组件及版本:
MATLAB R2017b for mac
IJG v9
jpegtbx_1.4
macOS 10.15.1 Catalina

一、配置IJG框架

不能跳过这个步骤,除非你清楚你的mac中已经有IJG框架。

1、下载IJG

官网:www.ijg.org。macOS请选择tar.gz格式的压缩包。下载下来后解压开(我的版本是v9)。

2、安装IJG

里面有一个install.txt,里面详细说明了安装方法。我在这里简要讲一讲。
步骤1:使用终端(Terminal)进入解压出的文件夹。用ls | grep configure查找一下看是否有一个叫configure的执行文件。(如果没有,你可能进错地方了)
步骤2:终端内执行:./configure,系统会自动配置IJG。
步骤3:终端内执行:make,对文件进行编译。
步骤4:终端内执行:make test测试是否可用。如果可用,文件夹内会多出很多图片:
测试成功的案例

恭喜完成第一步。

二、准备编译jpegtbx

这里需要做的准备工作就是,寻找一个lib库。因为编译jpegtbx一定要用到这个库。这个库里放置了编译时要用的头文件。我当初没有人告诉我这个库文件在哪里,自己明知道缺少一个库文件,却不知道这个文件已经悄悄藏在了我的电脑里面。结果苦苦在百度、必应、谷歌上搜了半天,最后在StackOverFlow上有个老外的回答里得到了启发。(半天还算好,我的一个研究生学长弄了两天未果,最终放弃了)。咳咳!!!
使用终端执行:

cd /usr/local/lib             #进入该目录
ls | grep jpeg                #筛选出名称包含jpeg的项目

执行完成后,你应该找到了一个libjpeg.a的文件。这就对了,恭喜你!
如果没有,那证明你的IJG框架没有搭成功,回到“一、配置IJG框架”再试。

三、编译jpegtbx_1.4

做好了一切铺垫,我们开始做最重要的MATLAB编译工作。

打开MATLAB(我的版本是R2017b for mac),一般来说,不低于2012的版本都可以用这个教程。

使用命令:mex -I<IJGPATH> jpeg_read.c <LIBJPEG>来编译jpeg_read()函数。
使用命令:mex -I<IJGPATH> jpeg_write.c <LIBJPEG>来编译jpeg_write()函数。
注意:把IJGPATH替换为你的IJG路径,应该是一个名叫jpeg-9d的文件夹(9是我现在的版本)。假如这个文件夹不在MATLAB的工作路径(PATH)下,你需要使用绝对路径。
LIBJPEG替换为/usr/local/lib/libjpeg.a

正常情况下,不会报错。
执行完成后,MATLAB会恭喜你成功,同时你可以到在jpegtbx_1,4的路径中已经有了后缀名为.mexmaci64的两个文件。编译成功

这样一来,再将jpegtbx_1.4这个文件夹加入MATLAB工作路径,你就可以在MATLAB中使用jpeg_read()和jpeg_write()两个函数来读取和生成JPEG图像了!

四、问题讨论

这是我跳过的坑,可能具有偶然性。如果你发现其他的坑,很欢迎在评论区告诉我!

发布了3 篇原创文章 · 获赞 1 · 访问量 102

猜你喜欢

转载自blog.csdn.net/qq_40625251/article/details/104560226