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

プロフィール

Akira

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

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

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

04 | 2017/05 | 06
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 29 30 31 - - -

趣味のブログ

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購入

二値化

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

二値化【Binarization】では画像の輝度値が指定した値(しきい値【Threshold】)以上の場合は、値未満の場合はにする処理を行います。

二値化元画像二値化処理後
元画像
 二値化後

二値化処理では上図のように、しきい値付近に輝度値の変動がある場合、二値化処理を行うと点々とした画素が残ってしまうため、この場合は二値化処理を行う前に平滑化フィルタメディアンフィルタなどのノイズ除去を行ってから二値化処理を行う場合が多くあります。

また、二値化処理を行うと画像の輝度値は白と黒しかないため、の輝度値をの輝度値をとし、1画素を1ビットであらわす事ができ、画像データサイズを小さくすることができるのですが、1画素を1ビットであらわすと各画素の輝度値の参照がかえって面倒になってしまうので、画像処理のプログラムではの輝度値を255の輝度値をとして、1画素8ビット(1バイト)で扱う場合の方が一般的です。
(フォトレタッチ系のソフトでは1画素1ビットで扱う場合の方が多いと思います。)

【二値化処理の応用例】
 ●欠陥検出
 領域分割、抽出
 ●処理のマスク用
など


【二値化プログラム例】
●効率の悪いプログラム
for (j = 0; j < Height ; j++){
    for ( i = 0; i < Width; i++){
        //入力画像の輝度値の取得
        Bright =
pSrc[i + j * Width];
        //二値化処理
        if (Bright >= Threshold)
           
pDst[i + j * Width] = 255;
        else
           
pDst[i + j * Width] =0;
    }
}

このサンプルは実は二値化サンプルプログラムのページで紹介している内容なのですが、
このプログラムでは画像の全画素をif文で処理しているので、非常に非効率です。
この部分はルックアップテーブルを用いて最適化します。
また、この例では二重ループを用いて画像の輝度値を二次元的に参照していますが、二値化処理では近傍画素を用いて処理を行わないので、画像データをただの一次元的な配列として捉えても構いません。

ということで、最適化したのが以下の例です。
 
●最適化したプログラム

unsigned char LUT[256] = {0};
//二値化ルックアップテーブルの作成
for ( i = Threshold; i < 256; i++)
    LUT[i] = 255;
//二値化処理
for ( i = 0; i < Width * Height; i++)
    pDst[i] =  LUT[ pSrc[i] ];

最適化したサンプルプログラムの例を以下のページにまとめました。参考まで。
.NET(C++/CLI)による画像拡大縮小表示、画像処理サンプルプログラム
 
   

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

この記事に対するコメント

この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://imagingsolution.blog107.fc2.com/tb.php/103-5f82c40f
この記事にトラックバックする(FC2ブログユーザー)

現在の閲覧者数: / 合計