色空間を変換する

そもそも 色空間とは???
色を表す 数字の組み合わせであることは 違いがないが WEBをあっちこっち見てみても ARGB とかグレースケールぐらいしかなじみが無い。ところがOpenCvが対応しているパターンには ゆうに10は越える種類がある。なにがなんやら・・???
深追いは無理と判断し、テスト用の画像を準備してグレースケール変換テスト開始 !!

 テスト画像

public class OpenCVnyumonActivity extends Activity {
    ImageView imgv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.colorsample);
        Bitmap src2 = src.copy(Bitmap.Config.ARGB_8888, true);   <---(1)
        Mat mat = android.BitmapToMat(src2);

        Imgproc.cvtColor(mat , mat, Imgproc.COLOR_RGB2GRAY);        
        Imgproc.cvtColor(mat , mat, Imgproc.COLOR_GRAY2BGRA,4); <---(2)

        Bitmap dsc= Bitmap.createBitmap(mat.width(), mat.height(), Bitmap.Config.ARGB_8888);
        android.MatToBitmap(mat, dsc);

        imgv = (ImageView)findViewById(R.id.imageView1);
        imgv.setImageBitmap(dsc);
    }
}

(1)Win7のpaintで書き込んだ画像(png)でも ARGB_8888に変換しないとBitmapToMatが正常に実行できなかった。
(2)Imgproc.cvtColorでグレースケールにした後 グレースケールからBGRに変換しないと起動してすぐActivityが終了してしまう。ただし LogCatにはなにも記録されない。 

グレースケール変換結果

例のすずらんの画像をグレースケールにすると

色空間の概念を十分に理解しておかないと後で苦労するのかな?? 若干不安

参照URL
http://opencv.jp/cookbook/opencv_img.html#id3
http://geekn-nerd.blogspot.jp/2012/02/opencv-for-android.html

 by Android2.2 with OpenCv 2.3.1 for Android   
スポンサーリンク
Rectangle大広告
Rectangle大広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする