鳴門教育大学大学院 授業科目「画像情報処理研究」に関する情報提供ページ 2011年度版
○ 参考書:「画像処理工学」末松良一,山田浩尚著,コロナ社,2000.ISBN4-339-04398-2
○ 参考書:「C言語による画像処理入門」安居院猛,長尾智晴著,昭晃堂,2000.ISBN4-7856-3124-4
「画像情報処理研究」の実習では,Windows XP に Visual C++ Express Editionがインストールされた環境を使います。
実習で使うツールと画像データ,サンプルプログラムは,以下のとおりです。
【鳴門教育大学の教育用情報システムにおけるC++の使い方】
Microsoft Visual C++ Express Edition(VC++ EE)の環境
(1) VC++ EE用の環境変数が登録されたコマンドプロンプトを起動します。
(2) コンパイル・リンクは,cl /EHsc <C++プログラム名> とします。
上記の設定を実行するバッチファイル例: vcl.bat
バッチファイルの使用方法: vcl <C++プログラム名>
【画像処理用C++プログラムの使い方】
共通ヘッダファイル:eps-header.hhをプログラムの最初に
#include "eps-header.hh"
として使います。
取り扱える画像ファイルの形式は,8ビット,24ビット,32ビット形式の圧縮なしのBMPファイルのみです。画像の大きさは,縦方向をライン,横方向をピクセルと表記します。
画像処理プログラム用ヘッダーファイルの一覧
共通ヘッダーファイル:eps-header.hh 【imageクラスの利用方法】
フーリエ変換用ヘッダーファイル:fft-header.hh 【fourierクラスの利用方法】
画像処理プログラムの一覧
【グレイスケール画像処理】
ヒストグラムを求め,グラフ化した画像を作成するプログラム:histogram.cpp
ヒストグラムを求め,CSV形式のファイルに出力するプログラム:histogram_csv.cpp
ヒストグラムを平滑化するプログラム:smooth_hist.cpp
輝度値を反転するプログラム:invert.cpp
輝度値を線形変換するプログラム:linear.cpp
グレイスケール画像を2値化したディザ画像に変換するプログラム (ランダム法):dither_rnd.cpp
グレイスケール画像を2値化したディザ画像に変換するプログラム (組織的ディザ法):dither_org1.cpp
グレイスケール画像を2値化したディザ画像に変換するプログラム (組織的ディザ法,縦横4倍):dither_org4.cpp
グレイスケール画像を2値化したディザ画像に変換するプログラム (誤差拡散法 その1):dither_err1.cpp
グレイスケール画像を2値化したディザ画像に変換するプログラム (誤差拡散法 その2):dither_err2.cpp
グレイスケール画像を2値化したディザ画像に変換するプログラム (誤差拡散法 その3):dither_err3.cpp
3×3マスクによるフィルタリング・プログラム:filter_3x3.cpp
ガウシアンフィルタ・プログラム:filter_gauss.cpp
点状のノイズを加えるプログラム:dot_noise.cpp
メディアンフィルタ・プログラム:median.cpp
幾何変換(最近隣内挿法)プログラム:affine_nn.cpp
幾何変換(共一次内挿法)プログラム:affine_bl.cpp
幾何変換(sinc関数)プログラム:affine_sinc.cpp sinc関数と3次式による近似式の比較(エクセルファイル)
幾何変換(三次内挿法(キュービック・コンボリューション))プログラム:affine_cc.cpp
【カラー画像処理】
輝度値を反転するプログラム:invert_c.cpp
幾何変換(三次内挿法(キュービック・コンボリューション))プログラム:affine_cc_c.cpp
【2値画像処理】
グレイスケール画像の2値化(判別分析法)プログラム:binary_da.cpp
2値画像の膨張処理(8近傍)プログラム:dilate_8.cpp
2値画像の膨張処理(4近傍)プログラム:dilate_4.cpp
2値画像の収縮処理(8近傍)プログラム:erode_8.cpp
2値画像の収縮処理(4近傍)プログラム:erode_4.cpp
2値画像の細線化処理(Erode法)プログラム:skl_erode.cpp (細線化処理用サンプル画像 英文字:letterA.bmp,線分:lines.bmp)
2値画像の細線化処理(Hilditchの方法)プログラム:skl_hilditch.cpp (細線化処理用サンプル画像 英文字:letterA.bmp,線分:lines.bmp)
2値画像から直線用Hough変換画像を生成するプログラム:hough_conv.cpp (直線抽出用サンプル画像 lines.bmp,lines_90cw.bmp,lines_180cw.bmp)
Hough変換画像から直線を抽出するプログラム:hough_inv.cpp
【画像に対する2次元フーリエ変換】
1次元フーリエ変換説明資料(パワーポイントファイル),1次元フーリエ変換(N=4)の例(エクセルファイル)
共通ヘッダーファイル(eps-header.hh)に加えて,フーリエ変換用ヘッダーファイル(fft-header.hh 【fourierクラスの利用方法】)も使う。
2次元複素数配列データをテキスト形式で利用するため,本画像処理プログラムで定義したComplex Text形式のファイルフォーマットを使う。
グレイスケール画像をテキストファイル(Complex Text形式)に変換するプログラム:bmp2cpx.cpp
テキストファイル(Complex Text形式)のデータ(0: 実数部,1: 虚数部,2: 振幅,3: パワー値,4: パワーのデシベル値,5: 位相) からグレイスケール画像を作成するプログラム:cpx2bmp.cpp
特定の周波数成分を持つ空間領域のテキストファイル(Complex Text形式)のデータを作成するプログラム:make_cpx.cpp
テキストファイル(Complex Text形式)のデータからグレイスケール画像(振幅等と位相)を作成するプログラム:cpx2amp_phase.cpp
グレイスケール画像を高速フーリエ変換したデータのテキストファイルComplex Text形式)を作成するプログラム:fft_bmp2cpx.cpp
周波数/空間領域のテキストファイルComplex Text形式)を読み込み高速フーリエ逆変換/フーリエ変換して,(0:
実数部,1: 虚数部,2: 振幅,3: パワー値,4: パワーのデシベル値,5: 位相)のグレイスケール画像を作成するプログラム:fft_cpx2bmp.cpp
テキストファイルComplex Text形式)を読み込み高速フーリエ変換/逆変換して,テキストファイルComplex Text形式)を作成するプログラム:fft_cpx2cpx.cpp
グレイスケール画像の特定のバンド幅の周波数領域をフィルタリングするプログラム:band_filter.cpp
グレイスケール画像の特定周波数成分を調整するプログラム:fft_adjust.cpp
グレイスケール画像をFFTを使って拡大(2, 4, 8…倍)するプログラム:enlarge_by_fft.cpp
2つのグレイスケール画像を読み込み,周波数成分の振幅と位相を交換した2つのグレイスケール画像を作成するプログラム:ex_amp_phase.cpp
ガウシアンフィルタ用画像を生成するプログラム:gauss_img.cpp
グレイスケール画像に対して,FFTを使った畳み込み演算によりフィルタリングするプログラム:fft_convolution.cpp
グレイスケール画像用サンプル(256×256):naruto1.bmp
グレイスケール画像を点対称画像に変換するプログラム:ptr_symmetry.cpp
画像透かし用サンプル画像(256×256,点対称):naruto2.bmp (naruto1.bmpから作成)
グレイスケール画像にFFTを使って画像透かしを入れる(取り出す)プログラム:fft_watermark.cpp
【画像処理用C++プログラムのファイル一式】 eps-processor.zip
(1) Linux,Cygwin用makeファイル(Makefile-eps-g)の使い方
Windows用nmakeファイルも作成するとは,Makefile-eps-gの中にNMAKE_FILEをnmakeファイル名と記述します。
make -f Makefile-eps-g clean
make -f Makefile-eps-g all
(2) Windows用nmakeファイル(Makefile-eps-n)の使い方
nmake /f Makefile-eps-n clean
nmake /f Makefile-eps-n all
更新日:2011年10月12日