◆ このWeb ページで行うこと
※ Octave での画像ファイルの入出力については,別のページで説明している.
必見 Web ページ: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/
必見 Web ページ: http://www.eecs.berkeley.edu/Research/Projects/CS/vision/bsds/
この Web ページの手順をそのままなぞる場合には, 下記の手順で画像ファイルのダウンロードと確認を行う.
◆ 使用する画像ファイルのダウンロード手順例
cd /tmp curl -O https://www.kkaneko.jp/sample/lena_std.jpg curl -L https://github.com/opencv/opencv/blob/master/samples/data/fruits.jpg?raw=true -o fruits.jpg
◆ 設定例
setenv("CFLAGS", "-D__STDC_CONSTANT_MACROS"); setenv("CXXFLAGS", "-D__STDC_CONSTANT_MACROS"); addpath ("/usr/local/MatlabFns/FingerPrints"); addpath ("/usr/local/MatlabFns/FrequencyFilt"); addpath ("/usr/local/MatlabFns/GreyTrans"); addpath ("/usr/local/MatlabFns/LineSegments"); addpath ("/usr/local/MatlabFns/Match"); addpath ("/usr/local/MatlabFns/Misc"); addpath ("/usr/local/MatlabFns/PhaseCongruency"); addpath ("/usr/local/MatlabFns/Projective"); addpath ("/usr/local/MatlabFns/Robust"); addpath ("/usr/local/MatlabFns/Rotations"); addpath ("/usr/local/MatlabFns/Shapelet"); addpath ("/usr/local/MatlabFns/Spatial"); addpath ("/usr/local/share/octave/mex");
octave
MatlabFns を使わないときは mono3, mono4 を含む行(下記では太字)を無視すること
※ Windows では「imread("r:/lena_std.jpg");」のようになる.
rgb = imread("/tmp/lena_std.jpg"); mono = rgb2gray( rgb ); rgb2 = imread("/tmp/fruits.jpg"); mono2 = rgb2gray( rgb2 ); mono3 = uint8( step2line(100, -1) * 255 ); mono4 = uint8( starsine( sze = 256, wavelength = 8, nScales = 1, ampExponent = 3 ) * 255 ); colormap(gray(256)); imshow(mono); imshow(mono2); imshow(mono3, [0 1]); imshow(mono4, [0 1]);
元画像 |
![]() |
![]() |
||
濃淡画像 |
![]() |
![]() |
![]() |
![]() |
◆ Ubuntu 11.10 での実行結果例
■ 画像から輝度ヒストグラムを作成する Octave プログラム例
imhist( double(mono), 256 );
◆ 実行結果の例
■ 輝度ヒストグラムの平滑化を行う Octave プログラム例
rgb = imread("/tmp/lena_std.jpg"); mono = rgb2gray( rgb ); r = histeq( double(mono) );
◆ 実行結果の例
![]() |
![]() |
![]() |
![]() |
念のため、輝度ヒストグラムの平滑化を行ったあとの画像についてヒストグラムを表示させてみる.
rgb = imread("/tmp/lena_std.jpg"); mono = rgb2gray( rgb ); MA = double( max(max(mono)) ); imhist( histeq( double(mono)/MA ) );
■ Octave プログラム例
rgb = imread("/tmp/lena_std.jpg"); mono = rgb2gray( rgb ); r = entropyfilt( mono ) );
◆ 実行結果の例
![]() |
![]() |
![]() |
![]() |
例: mono は画像,0.5 は倍率.'cubic' については「help interp2」
bw = imresize( mono, 0.5, 'cubic' ) );
Octave の次の関数を使う.
s = 5; f = fspecial("gaussian", s * 5, s); surfl( f );
mono2 = imfilter(double(mono), f, "same"); imshow( mono2, [min(min(mono2)) max(max(mono2))])
※ colormap がおかしいときは,「map = gray(256); colormap(map);」を実行してください.
to be written. log, unsharp, motion, sobel, kirsch,
rgb = imread("/tmp/lena_std.jpg"); mono = rgb2gray( rgb ); colormap(gray(256)); # ガウシアンフィルタ s = 5; f = fspecial("gaussian", s * 5, s); surfl( f ); gray2 = filter2( f, mono, "same" ); colormap(map); imagesc( mono ); w = input("please press Enter to proceed"); imagesc( gray2 ); w = input("please press Enter to proceed"); [Dx, Dy] = gradient(double(mono)); imagesc( Dx ); w = input("please press Enter to proceed"); imagesc( Dy ); w = input("please press Enter to proceed"); [Dx, Dy] = gradient(double(gray2)); imagesc( Dx ); w = input("please press Enter to proceed"); imagesc( Dy ); w = input("please press Enter to proceed");