画像処理ソリューション
これを見れば画像処理の入門から基礎~応用まで全てがわかるのを目指して!
   
翻訳(Translate)

プロフィール

Akira

ニックネーム:Akira
東京都の町田事業所に勤務
画像処理ソフトの開発を行っています。リンクフリーです!
詳細プロフィールは こちら
お問い合わせは、こちら↓

【補助HP】
画像処理ソリューションWeb版 【Newブログ】
イメージングソリューション

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

01 | 2009/02 | 03
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

趣味のブログ

iPhone萬歳!
iPhoneの情報いろいろ。
ブログ学習帳
ブログ、SEO、アフィリエイト情報など(まだまだこれから)
俺流クラフト日記
ハンドメイド作品の記録(現在、放置中)

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

平面の方程式


下図のように点(X0, Y0, Z0)を通り、法線ベクトルが

  平面の方程式

の平面の方程式は

  
a(Xi - X0) + b(Yi - Y0) +  c(Zi - Z0)  =  0

となり、一般に

  aX + bY + cZ + d = 0

とします。
  平面の方程式

【考え方】
法線ベクトル(a, b, c)と、点(X0, Y0, Z0)を始点とし平面上の任意の点(Xi, Yi, Zi
終点とするベクトルとのなす角度は90度なので、内積が0となるため

  a(Xi - X0) +
b(Yi - Y0) +  c(Zi - Z0)  =  0

となります。
この式を整理すると先ほどの平面の方程式
  
  aX + bY + cZ + d = 0

となる訳です。

ここで、平面の方程式を求める時には、平面は三次元空間上の3点
(X0, Y0, Z0)
(X1, Y1, Z1)(X2, Y2, Z2)から求まるのですが、法線ベクトルは
3点からなる2つのベクトルの外積から求まるので

(a, b, c) = ( (Y1 - Y0) × (Z2 - Z0) - (Y2 - Y0)
× (Z1 - Z0) ,
                (Z1 - Z0)
× (X2 - X0) - (Z2 - Z0) × (X1 - X0) ,
               
(X1 - X0) × (Y2 - Y0) - (X2 - X0) × (Y1 - Y0) )

となるので、平面の方程式が求まります。
 
  平面の方程式

もしくは平面の方程式を連立方程式的に求める場合は、平面の方程式には
未知数が4つあるので、未知数4つに対して、式が3本しか成り立たないので、
未知数を求めることができません。

そこで、法線ベクトルが単位ベクトルとなるように
 a2 + b2 + c2 = 1
という条件を付けてラグランジュの未定乗数法で解ける?と思いますが、
ちょっと難しくなってしまうので、平面の方程式の全体をdで割って、

  aX + bY + cZ + 1 = 0

という形式で平面の方程式を求めます。

4点以上の点から平面の方程式を求める場合には、最小二乗法
擬似逆行列を使って求めます。
それぞれの解き方については、下記ページを参照願います。

  

Loading...
スポンサーリンク

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

.NET(C++/CLI)による画像拡大縮小表示、画像処理サンプルプログラム

メインページ画像処理プログラミング

これまで紹介してきた内容の総集編的なサンプルプログラムを作成してみました。
これから画像処理を学ぶ人にも使ってもらえると幸いです。
でも、これ以上の内容は本職の仕事にも差し支えそうなので、これがギリかも。
(ちなみに本職では画像処理ツール画像処理アルゴリズムの開発やってます。)

基本的な機能としては
●拡大縮小表示(10,25,50,75,100,150,200,500,750,1000,5000,10000%)
●内挿補間表示
(NearestNeighbor, Bilinear, Bicubic, HighQualityBilinear, HighQualityBicubic)
●カラーモノクロ変換(RGB平均、YUVのY)
●二値化処理(しきい値設定可)
●ファイルフォーマット変換(bmp,jpg,png,tifファイルの読み込み、保存)

画像処理ではモノクロ8Bitでの画像処理が多いのですが、Windowsのペイントとかで
サンプル画像を作成するとカラーになってしまうので、モノクロ変換は重宝すると思います。

サンプルプログラムのソースはこちら
I.Eにて右ボタンで対象をファイルに保存)よりダウンロードできます。Visual C++ 2005 Express EditionによりC++/CLIで作成しています。

 内挿補間表示

NearestNeighbor表示例
NearestNeighbor

Bicubic表示例

Bicubic


 カラーモノクロ変換

カラー画像
カラー画像

モノクロ変換(R,G,B平均) 
メニューのフィルタ→カラーモノクロ変換1にて実行
  Gray = (R + G + B) / 3

カラーモノクロ変換

モノクロ変換(YUVのY) メニューのフィルタ→カラーモノクロ変換2にて実行
  Gray = 0.299×R + 0.587×G + 0.114×B

カラーモノクロ変換


以下、モノクロ変換部分のソースコード
//--------------------------------------------------------------
//【関数名 】:Filter::Color2Gray1
//【処理概要】:カラー画像をモノクログレーへ変換
//【引数  】:pSrc        = 入力画像(24Bitカラー)(In)
//            :pDst        = 出力画像(8Bitモノクロ)(In)
//            :Width        = 画像の幅(In)
//            :Height        = 画像の高さ(In)
//【戻り値 】:なし
//【備考  】:Mono = (R + G + B) / 3
//---------------------------------------------------------------
void Filter::Color2Mono1(unsigned char* pSrc, unsigned char* pDst, int Width,
                                 int
Height){
    int i, j;
    int SrcStride, DstStride;

    //入力画像(カラー画像)のメモリの幅
    SrcStride = ((Width * 24 + 31) / 32) * 4;
    //出力画像(モノクロ画像)のメモリの幅
    DstStride = ((Width * 8 + 31) / 32) * 4;

    for (j = 0; j < Height; j++){
        for (i = 0; i < Width; i++){
            pDst[i + j * DstStride] = (                       //Mono
                         pSrc[i * 3 +     j * SrcStride]   //B
                       + pSrc[i * 3 + 1 + j * SrcStride]   //G
                       + pSrc[i * 3 + 2 + j * SrcStride]   //R
                       ) / 3;
        }
    }
}

//--------------------------------------------------------------
//【関数名 】:Filter::Color2Gray2
//【処理概要】:カラー画像をモノクログレーへ変換
//【引数  】:pSrc        = 入力画像(24Bitカラー)(In)
//            :pDst        = 出力画像(8Bitモノクロ)(In)
//            :Width        = 画像の幅(In)
//            :Height        = 画像の高さ(In)
//【戻り値 】:なし
//【備考  】:Mono = 0.299 * R + 0.587 * G + 0.114 * B
//            :YUV変換のYと同じ
//---------------------------------------------------------------
void Filter::Color2Mono2(unsigned char* pSrc, unsigned char* pDst, int Width,
                                  int
Height){
    int i, j;
    int SrcStride, DstStride;
    unsigned char RLut[256], GLut[256], BLut[256];

    //入力画像(カラー画像)のメモリの幅
    SrcStride = ((Width * 24 + 31) / 32) * 4;
    //出力画像(モノクロ画像)のメモリの幅
    DstStride = ((Width * 8 + 31) / 32) * 4;

    //RGBそれぞれのLUTを作成
    for (i = 0; i < 256; i++){
        RLut[i] = (unsigned char)System::Math::Round(0.299 * i);
        GLut[i] = (unsigned char)System::Math::Round(0.587 * i);
        BLut[i] = (unsigned char)System::Math::Round(0.114 * i);
    }
   
    for (j = 0; j < Height; j++){
        for (i = 0; i < Width; i++){
            pDst[i + j * DstStride] =                             //Mono
                         BLut[pSrc[i * 3 +     j * SrcStride]]    //B
                       + GLut[pSrc[i * 3 + 1 + j * SrcStride]]    //G
                       + RLut[pSrc[i * 3 + 2 + j * SrcStride]]    //R
                       ;
        }
    }
}


 二値化処理

元画像
元画像

モノクロ変換
モノクロ変換

二値化しきい値設定
二値化しきい値設定

二値化処理
二値化処理

以下、二値化処理部分のソースコード
//-------------------------------------------------------------
//【関数名 】:Filter::Binarization
//【処理概要】:二値化
//【引数  】:pSrc        = 入力画像(8Bitモノクロ)(In)
//            :pDst        = 出力画像(8Bitモノクロ)(In)
//            :Width        = 画像の幅(In)
//            :Height        = 画像の高さ(In)
//            :Threshold    = しきい値(In)
//【戻り値 】:なし
//【備考  】:
//--------------------------------------------------------------
void Filter::Binarization(unsigned char* pSrc, unsigned char* pDst, int Width,
                               int Height, int Threshold){
    int i;
    int BufSize;
    unsigned char LUT[256] = {0};
   
    //画像全体のメモリサイズ
    BufSize = (Width + 3) / 4 * 4 * Height;

    //二値化ルックアップテーブルの作成
    for ( i = Threshold; i < 256; i++)
        LUT[i] = 255;

    //二値化処理
    for ( i = 0; i < BufSize; i++)
        pDst[i] =  LUT[ pSrc[i] ];

}


 関連ページ

 
二値化
  処理時間の計測(Stopwatchクラス)
  ウィンドウを開く/閉じる
  ウィンドウの押されたボタンを取得(DialogResultプロパティ)
  フォーム(ウィンドウ)のサイズ固定
  フォーム間参照
  テキストボックスの文字列を変数へ代入
  ファイルパス(フルパス)からファイル名、拡張子、ディレクトリの取得
  Graphicsオブジェクトの作成
  画像の拡大縮小表示(高機能版)
  画像の輝度値を取得、設定する
 
Loading...
スポンサーリンク

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

【C++/CLI】処理時間の計測(Stopwatchクラス)

メインページC++/CLI プログラミング

処理時間の計測には.NET以前ではGetTickCountQueryPerformanceCounterなどを使って
計測していましたが、.NETではStopwatchクラスを使えば簡単に計測ができます。

使用方法はこんな感じ↓

//Stopwatchの初期化
Diagnostics::Stopwatch^ sw = gcnew Diagnostics::Stopwatch();

//計測開始
sw->Start();

  処理1
      
//計測停止
sw->Stop();
//処理時間の表示
MessageBox::Show("処理時間1 = " + sw->ElapsedMilliseconds.ToString() + "msec");

///////////////////////////////////////////////////
//経過時間のリセット
sw->Reset();


//計測開始
sw->Start();

  処理2
      
//計測停止
sw->Stop();
//処理時間の表示
MessageBox::Show("処理時間2 = " + sw->ElapsedMilliseconds.ToString() + "msec");

計測を開始するにはStart()
計測を停止するにはStop()
処理時間はElapsedMillisecondsでミリ秒単位で処理時間が取得できます。

ミリ秒以下のより詳細な処理時間を調べたい場合は

double dTime = sw->ElapsedTicks / (double)Diagnostics::Stopwatch::Frequency;

というようにします。(上記では秒単位です。)

続けて処理時間を計測するときは、Reset()するのをお忘れなく。

  

Loading...
スポンサーリンク

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

アンシャープマスキング(鮮鋭化フィルタ)

メインページ画像フィルタ処理
 
アンシャープマスキング【unsharp masking】とは、画像のボヤけた輪郭を強調する
フィルタ処理です。

アンシャープマスキング処理前アンシャープマスキング処理後
元画像 アンシャープマスキング後

【処理アルゴリズム】
元画像データ

元画像データ
                 ↓
元画像データの平滑化処理を行い、元画像から平滑化データを差し引きます。
                 ↓

元画像データと平滑化データとの差分
                 ↓
差し引いた分を元画像に上乗せします。
                 ↓

アンシャープ処理後データ
この処理により、平滑化処理でボヤけてしまう分だけ、逆に輪郭をくっきりさせる事ができます。

この処理をカーネルで表現すると


アンシャープマスキングカーネル
となります。
kは任意レートで、値が大きいほど、輪郭が鮮明になる効果が高くなります。
(後半の元画像から平滑化画像を引いている部分の処理はラプラシアンフィルタ
と呼ばれます。)


今回は3×3のマスクサイズを例にとって紹介しましたが、マスクサイズを大きくすると
マスクサイズ
よりも小さなパターンを強調する効果を得る事もできます。
Loading...
スポンサーリンク

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

判別分析法(大津の二値化)

メインページ画像フィルタ処理
 

判別分析法【discriminant analysis method】は大津の二値化とも言われ、分離度(separation
metrics)という値が最大となるしきい値を求め、自動的に二値化を行う手法です。

分離度はクラス間分散(between-class variance)
クラス内分散(within-class variance)
との比で求める事ができ、以下の様に求める。

判別分析法

しきい値  で二値化したとき、しきい値よりも輝度値が小さい側(黒クラス)の画素数をω1
平均をm1、分散をσ1、輝度値が大きい側(白クラス)の画素数を
画素数をω2平均をm2
分散をσ2、画像全体の画素数をωt平均をmt分散をσtとしたときクラス内分散σw2

  クラス内分散

クラス間分散σb2

  クラス間分散

としてあらわす事ができる。
ここで、全分散(total variance)σt

  全分散

としてあらわす事ができることから、求めるクラス間分散とクラス内分散との比である分離度

  分散度

となり、この分離度が最大となるしきい値 t を求めればよい。
ここで、全分散σtはしきい値に関係なく一定なので、
クラス間分散σb2最大となるしきい値を
求めればよい事が分かる。
さらにクラス間分散の式の分母もしきい値に関係なく一定なので、クラス間分散の分子

  ω1 ω2 (m1 - m2)2

が最大となるしきい値 t を求めればよい。
結局、標準偏差とか関係なく、黒、白それぞれの領域のヒストグラムから、画素数ωと輝度値の
平均値から上記の値が最大となるしきい値 t をしらみつぶしに求めればいいので、以外と簡単...

【処理例】
判別分析法
判別分析法
判別分析法判別分析法
判別分析法判別分析法

上記例のように、判別分析法はおおむね良好な結果を得る事ができます。


関連記事
  二値化標準偏差

   

Loading...
スポンサーリンク

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

Pタイル法

メインページ画像フィルタ処理
 

Pタイル法【Percentile Methodは、画像の二値化したい領域が全画像の領域に占める割合を
パーセント(%)で指定し二値化する手法です。

【処理例】

  Pタイル法

    二値化する割合を23%で指定し二値化↓

  Pタイル法

【処理アルゴリズム】
  まず最初に画像のヒストグラムを取得します。

  Pタイル法  

  このヒストグラムを見ると、輝度値でおおよそ160前後で二値化すると、目的の画像が得られそうな
  事が分かります。

  次にヒストグラムの輝度値が高い方から頻度を足していき、その頻度の合計が指定した割合を超える
  輝度値をしきい値とし、二値化処理を行います。

  Pタイル法

  実際の処理では、例えば画像サイズが640×480画素だとすると、全画素数は307,200画素なので、
  二値化する割合が23%のときは23%に相当する画素数は
    307,200 × 0.23 = 70,656画素
  なので、ヒストグラムの頻度を輝度値の高い方から(黒側の面積を指定する場合は低い方から)足して
  いった時に70,656画素を初めて超える輝度値を二値化のしきい値とします。

  Pタイル法では、二値化する領域の大きさが一定の場合、画像の明るさが変動しても、二値化された
  画像は変わらない事がメリットです。
  一般にカメラから得られる画像の輝度値はカメラ本体の温度変化により変動し、LEDなどの照明も
  長時間使用していると暗くなる傾向があるので、固定しきい値による二値化処理よりも安定的に
  二値化処理を行うことが可能となります。
  もっとも、二値化する領域の大きさの変動が大きい場合は不向きです。
Loading...
スポンサーリンク



現在の閲覧者数: / 合計