二値化
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; }
オリジナル:
二値化(白と黒):
二値化(黄と黒):
二値化(緑と黒):
二値化(青と黒):
二値化(紫と黒):
二値化(ピンクと黒):
二値化(白と青):