ます’s Blog - どうでもいい記事100選

どうでもいい記事100選

二値化

Xに代入している値は0や255になっていますが、条件分岐のところで表現したいrr・gg・bb値を代入する事で様々な色に変更できます。

  private Bitmap effectBinarization( Bitmap bitmap ){

    if( bitmap == null ){
      bitmap = BitmapFactory.decodeResource( getResources( ), R.drawable.original ).copy( Bitmap.Config.ARGB_8888, true );
    }

    if( bitmap == null ){
      return bitmap;
    }

    if( bitmap.isMutable( ) != true ){
      bitmap = bitmap.copy( Bitmap.Config.ARGB_8888, true );
    }

    int height   = bitmap.getHeight( );
    int width    = bitmap.getWidth( );
    int[] pixels = new int[( width * height )];
    bitmap.getPixels( pixels, 0, width, 0, 0, width, height );

    for( int YY = 0; YY < width; ++YY ){
      for( int XX = 0; XX < height; ++XX ){

        int bitmapColor = pixels[( YY + XX * width )];

        int rr = Color.red( bitmapColor );
        int gg = Color.green( bitmapColor );
        int bb = Color.blue( bitmapColor );

        int X, Y;
        Y = ( rr + gg + bb ) / 3;

        if( Y < 128 ){
          X = 0;
        } else {
          X = 255;
        }

        rr = X;
        gg = X;
        bb = X;

        pixels[( YY + XX * width )] = Color.rgb( rr, gg, bb );
      }
    }

    bitmap.setPixels( pixels, 0, width, 0, 0, width, height );

    return bitmap;
  }

オリジナル:
f:id:masugata:20110405125239:image:medium
二値化(白と黒):
f:id:masugata:20110331140844:image:medium
二値化(黄と黒):
f:id:masugata:20110331140834:image:medium
二値化(緑と黒):
f:id:masugata:20110331140806:image:medium
二値化(青と黒):
f:id:masugata:20110331140823:image:medium
二値化(紫と黒):
f:id:masugata:20110331140828:image:medium
二値化(ピンクと黒):
f:id:masugata:20110331140839:image:medium
二値化(白と青):
f:id:masugata:20110331151809:image:medium