ImageJ是一个基于java的科学图像处理软件,它是由National Institutes of Health开发的。可运行于Microsoft Windows,Mac OS,Mac OS X,Linux,和Sharp Zaurus PDA等多种平台。ImageJ能够显示,编辑,分析,处理,保存,打印8位,16位,32位的图片, 支持TIFF, PNG, GIF, JPEG, BMP, DICOM, FITS等多种格式。ImageJ支持图像栈(stack)功能,即在一个窗口里以多线程的形式层叠多个图像, 并行处理。只要内存允许,ImageJ能打开任意多的图像进行处理。除了基本的图像操作, 比如缩放,旋转, 扭曲, 平滑处理外,ImageJ还能进行图片的区域和像素统计, 间距,角度计算, 能创建柱状图和剖面图,进行傅里叶变换。
比如下面这张照片,上面有着很有规律的条纹噪声。那么其FFT频谱图上面就会对应出现非常规则的亮点。这些点就是条纹在频域空间的对应。
用ImageJ打开这张图片,然后选择Process -> FFT -> FFT生成频谱图。可以看出除中心亮点外,还对称分布着几个亮点:
现在,打开画刷(Paintbrush tool),并设置画笔颜色为黑色,然后调整画笔宽度:
如果擦掉这几个亮点,再做一次FFT反变换(Process -> FFT -> Inverse FFT),那么就能够较好的恢复原图像:
从老照片扫描或者翻拍后,由于相纸的原因,经常会有网格图案,影响显示效果。下面的例子使用同样的方法利用傅里叶变换去除原图像中的噪声:
但是,不可避免的,图像会变得模糊。
另外,在ImageJ中也可以很方便的进行区域选取。如下图所示,在工具栏上选择椭圆形选择工具,然后框选频谱图上的低频部分,菜单栏中选择Edit -> Clear将其擦除,即进行高通滤波(如果选择Edit -> Clear outside,则会将选择框外的区域擦除,即进行低通滤波)。
参考: