Octave でのカラー画像の平滑化を説明する.
Octave の imsmooth パッケージを使う.詳しくは https://octave.sourceforge.io/image/function/imsmooth.html
◆ この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 curl -O https://www.kkaneko.jp/sample/test.bmp
octave
画像ファイルを変数 に読み込み表示
※ Windows では「imread("r:/lena_std.jpg");」のようになる.
rgb = imread("/tmp/lena_std.jpg"); frgb = imread("/tmp/fruits.jpg"); rgb3 = imread("/tmp/test.bmp"); colormap(gray(256)); imshow(rgb); imshow(rgb2); imshow(rgb3 * 255);
元画像 |
![]() |
![]() |
![]() |
■ 事前準備
http://www.eecs.berkeley.edu/Research/Projects/CS/vision/bsds/ で,「Util」をクリック. 「Lab2RGB.m」と 「RGB2Lab.m」をダウンロード.わかりやすいディレクトリに置いておく.
■ ガウシアン平滑化を行う Octave プログラム (Octave program for Isotropic Gaussian Smoothing)
「"Bilateral"」は ガウシアン平滑化 「sigma = 6)」の部分は調整してください
※ Octave 3.6.1, Ubuntu 11.10 で動作確認済み.
source "RGB2Lab.m" source "Lab2RGB.m" rgb = imread("/tmp/lena_std.jpg"); [lab(:,:,1), lab(:,:,2), lab(:,:,3)] = RGB2Lab(rgb); flab = imsmooth(lab, "Gaussian", sigma = 6); frgb = Lab2RGB( flab(:,:,1), flab(:,:,2), flab(:,:,3) ); colormap(gray(256)); imshow(rgb2);
◆ 実行結果の例
![]() |
![]() |
![]() |
■ 事前準備
http://www.eecs.berkeley.edu/Research/Projects/CS/vision/bsds/ で,「Util」をクリック. 「Lab2RGB.m」と 「RGB2Lab.m」をダウンロード.わかりやすいディレクトリに置いておく.
「"Bilateral"」は Gaussian Bilateral filtering 「sigma = 6)」の部分は調整してください
※ Octave 3.6.1, Ubuntu 11.10 で動作確認済み.
source "RGB2Lab.m" source "Lab2RGB.m" rgb = imread("/tmp/lena_std.jpg"); [lab(:,:,1), lab(:,:,2), lab(:,:,3)] = RGB2Lab(rgb); flab = imsmooth(lab, "Bilateral", sigma_d = 8, sigma_r = 20/255); frgb = Lab2RGB( flab(:,:,1), flab(:,:,2), flab(:,:,3) ); colormap(gray(256)); imshow(rgb2);
◆ 実行結果の例
![]() |
![]() |
![]() |
「"Perona and Malik"」は Perona, Malik らの nonlinear isotropic diffusion 平滑化 「10」, 「0.25」の部分は調整してください
※ Octave 3.6.1, Ubuntu 11.10 で動作確認済み.
source "RGB2Lab.m" source "Lab2RGB.m" rgb = imread("/tmp/lena_std.jpg"); [lab(:,:,1), lab(:,:,2), lab(:,:,3)] = RGB2Lab(rgb); flab = imsmooth(lab, "Perona and Malik", 10, 0.25); frgb = Lab2RGB( flab(:,:,1), flab(:,:,2), flab(:,:,3) ); colormap(gray(256)); imshow(rgb2);
◆ 実行結果の例
![]() |
![]() |
![]() |
「"Average"」は Rectangular averaging linear フィルタによる平滑化 「[10 10]」の部分は調整してください
※ Octave 3.6.1, Ubuntu 11.10 で動作確認済み.
source "RGB2Lab.m" source "Lab2RGB.m" rgb = imread("/tmp/lena_std.jpg"); [lab(:,:,1), lab(:,:,2), lab(:,:,3)] = RGB2Lab(rgb); flab = imsmooth(lab, "Average", [10 10]); frgb = Lab2RGB( flab(:,:,1), flab(:,:,2), flab(:,:,3) ); colormap(gray(256)); imshow(rgb2);
◆ 実行結果の例
![]() |
![]() |
![]() |
「"Disk"」は Circular averaging linear フィルタによる平滑化 「8」の部分は調整してください
※ Octave 3.6.1, Ubuntu 11.10 で動作確認済み.
source "RGB2Lab.m" source "Lab2RGB.m" rgb = imread("/tmp/lena_std.jpg"); [lab(:,:,1), lab(:,:,2), lab(:,:,3)] = RGB2Lab(rgb); flab = imsmooth(lab, "Disk", 8); frgb = Lab2RGB( flab(:,:,1), flab(:,:,2), flab(:,:,3) ); colormap(gray(256)); imshow(rgb2);
◆ 実行結果の例
![]() |
![]() |
![]() |
「"Median"」は Median フイルタによる平滑化. 「[8 8]」の部分は調整してください
※ Octave 3.6.1, Ubuntu 11.10 で動作確認済み.
source "RGB2Lab.m" source "Lab2RGB.m" rgb = imread("/tmp/lena_std.jpg"); [lab(:,:,1), lab(:,:,2), lab(:,:,3)] = RGB2Lab(rgb); flab = imsmooth(lab, "Median", [8 8]); frgb = Lab2RGB( flab(:,:,1), flab(:,:,2), flab(:,:,3) ); colormap(gray(256)); imshow(rgb2);
◆ 実行結果の例
![]() |
![]() |
![]() |