近似色探索
近似色を探して似ている色であれば色を残して、似ていなければ色を白に設定しています。
閾値を低く設定すれば判定が厳しくなり、閾値を高く設定すれば判定が緩くなります。
private Bitmap searchApproximationColor( Bitmap bitmap, int approximationNumber, int YYY, int XXX ){ 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 ); if( YYY < 0 ){ YYY = 0; } else if( width <= YYY ){ YYY = width -1; } if( XXX < 0 ){ XXX = 0; } else if( height <= XXX ){ XXX = height -1; } int targetBitmapColor = pixels[( YYY + XXX * width )]; for( int YY = 1; YY < width; ++YY ){ for( int XX = 0; XX < height; ++XX ){ int bitmapColor = pixels[( YY + XX * width )]; int rr = Color.red( targetBitmapColor ) - Color.red( bitmapColor ); int gg = Color.green( targetBitmapColor ) - Color.green( bitmapColor ); int bb = Color.blue( targetBitmapColor ) - Color.blue( bitmapColor ); if( approximationNumber < Math.sqrt( rr * rr + gg * gg + bb * bb ) ){ pixels[( YY + XX * width )] = Color.rgb( 255, 255, 255 ); } } } bitmap.setPixels( pixels, 0, width, 0, 0, width, height ); return bitmap; }
オリジナル:
近似色探索(真中・閾値30)(違いは詳細で見てください):
近似色探索(真中・閾値60)(違いは詳細で見てください):
近似色探索(真中・閾値90)(違いは詳細で見てください):
近似色探索(左下・閾値30)(違いは詳細で見てください):
近似色探索(左下・閾値60)(違いは詳細で見てください):
近似色探索(左下・閾値90)(違いは詳細で見てください):
近似色探索(右上・閾値30)(違いは詳細で見てください):
近似色探索(右上・閾値60)(違いは詳細で見てください):
近似色探索(右上・閾値90)(違いは詳細で見てください):
ちゃんとやるならタップした画像の座標をベースにして近似色を探します。。。これでネタ切れ。_| ̄|○
今までに紹介してきた処理はPhotoshopで簡単に処理できます。。。が、GIMPでも簡単に処理できるんだよね。
Photoshopを使ってみてツールの凄さを実感したのと同時にGIMPの凄さも実感しました。