第一部分 安装libpng
最近在研究IPOL网站上的Multiscale Retinex的文章和源代码,文章的主要部分都已经翻译,对应的源代码也已经下载下来了,但是代码是在Linux系统上运行的,之前没有接触过Linux系统,所以没办法只有安装 ubuntu操作系统,安装的过程也遇到了一些问题,详细的可以参考(CSDN关于ubuntu系统搜狗输入法的安装)。代码下载下来之后,按照README.TXT的描述,直接在工程文件夹下打开终端,运行【 make】命令就能执行编译的操作,在意料之中的是编译出错了。编译情况如下图所示:
错误提示为:缺失png.h头文件,自己也曾试图将该头文件从网上下载下来,拷贝到该项目的文件夹中,但依然提示相同的错误。出现这个错误自己也是有心里准备的,因为在RAEDME.TXT文件中提示系统的编译和运行需要libpng header and libraries,文件中的原文为:
The libpng header and libraries are required on the system for
compilation and execution. See http://www.libpng.org/pub/png/libpng.html
比较好的方法是按照网站http://geeksww.com网站中Installing Libpng on Ubuntu Linux的方法(http://geeksww.com/tutorials/libraries/libpng/installation/installing_libpng_on_ubuntu_linux.php)按照其中的步骤一步一步的来,首先第一步(Install zlib development package):sudo apt-get install zlib1g-dev
第二步(Downloading Libpng):wget http://prdownloads.sourceforge.net/libpng/libpng-1.5.4.tar.gz?
download
第三步(Extracting files from the downloaded package):tar xzf libpng-1.5.4.tar.gz?download.1
图片比上图只是多了上面这行命令,但是在主文件下会有解压得到的文件。然后进入libpng-1.5.4文件夹,输入命令:cd libpng-1.5.4
第四步(Configuring Libpng Library):./configure –prefix=/usr/local/libpng
其中等号右面为要安装的目录,
第一次按照这种方式安装并没有成功,而是采用默认的安装目录的方式,也就是上面的命令去掉安装目录这部分,即:./configure 。
第五步(Compiling Libpng):make
第六步(Installing libpng): sudo make install
至此libpng安装结束,此时再运行Retinex程序时不会再提示缺少png.h头文件等信息,也进一步的说明了安装成功了,但是有出现了新的问题,就是缺少fftw3.h头文件,和缺少png.h头文件的过程类似,这个问题在README.TXT文件中也有说明:
The fftw3 header and libraries are required on the system for
compilation and execution. See http://www.fftw.org/
有用的资料:
第二部分 安装FFTW3
错误提示如上图所示,有了前面的类似的经验,从FFTW官网上下载最新的FFTW3的压缩包,网站为:
http://www.fftw.org/download.html,下载下来后,解压到主文件夹下,然后进入解压后的文件夹中,运行终端,执行命令:./configure
会出现如下界面:
第二步,编译该文件:make
第三步,安装:sudo make install
至此FFTW3的安装过程已经全部结束,后面就可以对Retinex程序进行编译和运行操作了。
第三部分 Retinex程序的编译和运行
结束了前面的必要的安装库的操作之后,就可以对Retinex程序实现编译和运行操作了。通过make命令进行编译,会生成很多后缀名为.o的文件和一个可执行文件MSR_original,通过终端执行命令:
注意后面第二行才是正确的输入形式,因为README.TXT文件中对于输入的介绍是很有误导性的,之前一直按照他的方式来输入总是提示输入参数的个数不对的信息,但是最终也是没有找到合适的输入方式,通过发邮件给国外的作者一直也没有回,可能太小儿科了吧,所以就是指望不上了,网上这方面的信息非常的少,问了群里也很少有人知道,所以最后还是得靠自己,自己能够明显的感觉到问题的突破口应该在于程序的理解上,所以自己硬着头皮读了些相关的内容,在读的过程中,自己也在不断的尝试,但是始终都没有成功,最后都要放弃了,看了下主文件夹下突然多了两个处理好的效果图,欣喜若狂,因为这说明至少有一次是我输入正确的,然后通过查看终端的历史命令(命令:history)记录找到了问题的答案。
2016.7.7修改,最后的输入有错误,(1)少输入了参数-M及其值。(2)倒数第二个参数应为MSR_rgb。
另外,该程序只能处理.png格式的图片。