Android Image Processing
RGBA model for Image Analysis
1. tones/colors-colors transmitted by objects
ColorMatrix hueMatrix = new ColorMtrix ();
HueMatrix. setRotate (0, hue );
HueMatrix. setRotate (1, hue );
HueMatrix. setRotate (2.hue );
2. saturation-the purity of the color, from (0) to 100% saturation.
ColorMatrix saturationMatrix = new ColorMatrix ();
SaturationMatrix. setSaturation (saturation );
3. brightness/brightness-relative brightness of the color
ColorMatrix lumMatrix = new ColorMatrix ();
LumMatrix. setScale (lum, lum, lun, 1 );
The main code is as follows:
Public class MainActivity extends Activity implements SeekBar. OnSeekBarChangeListener {
Private ImageView imageView;
Private SeekBar seekBar1, seekBar2, seekBar3;
Private static int MAX = 255;
Private static int IN = 127;
Private MediaPlayer player;
Float a, B, c;
Private Bitmap bitmap;
@ Override
Protected void onCreate (Bundle savedInstanceState ){
Super. onCreate (savedInstanceState );
SetContentView (R. layout. activity_main );
Bitmap = BitmapFactory. decodeResource (getResources (), R. drawable. g );
ImageView = (ImageView) findViewById (R. id. imageView );
SeekBar1 = (SeekBar) findViewById (R. id. seekBar1 );
SeekBar2 = (SeekBar) findViewById (R. id. seekBar2 );
SeekBar3 = (SeekBar) findViewById (R. id. seekBar3 );
SeekBar1.setOnSeekBarChangeListener (this );
SeekBar2.setOnSeekBarChangeListener (this );
SeekBar3.setOnSeekBarChangeListener (this );
SeekBar1.setMax (MAX );
SeekBar2.setMax (MAX );
SeekBar3.setMax (MAX );
SeekBar1.setProgress (IN );
SeekBar2.setProgress (IN );
SeekBar3.setProgress (IN );
ImageView. setImageBitmap (bitmap );
Player = MediaPlayer. create (this, R. raw .);
Player. start ();
}
@ Override
Public boolean onCreateOptionsMenu (Menu menu ){
// Inflate the menu; this adds items to the action bar if it is present.
GetMenuInflater (). inflate (R. menu. main, menu );
Return true;
}
@ Override
Public void onProgressChanged (SeekBar arg0, int arg1, boolean arg2 ){
// TODO Auto-generated method stub
Switch (arg0.getId ()){
Case R. id. seekBar1:
A = (arg1-IN) * 1.0F/IN * 180;
Break;
Case R. id. seekBar2:
B = arg1 * 1.0F/IN;
Break;
Case R. id. seekBar3:
C = arg1 * 1.0F/IN;
Break;
}
ImageView. setImageBitmap (new ImageHelper (). handleImageView (bitmap, a, B, c ));
}
Class ImageHelper {
Public static Bitmap handleImageView (Bitmap bm, float bug, float B, float c ){
Bitmap bm1 = Bitmap. createBitmap (bm. getWidth (), bm. getHeight (), Bitmap. Config. ARGB_8888 );
Canvas canvas = new Canvas (bm1 );
Paint paint = new Paint (Paint. ANTI_ALIAS_FLAG );
ColorMatrix hm = new ColorMatrix ();
Hm. setRotate (0, bug );
Hm. setRotate (1, bug );
Hm. setRotate (2, bug );
ColorMatrix sm = new ColorMatrix ();
Sm. setSaturation (B );
ColorMatrix lm = new ColorMatrix ();
Lm. setScale (c, 1 );
ColorMatrix Imagem = new ColorMatrix ();
Imagem. postConcat (hm );
Imagem. postConcat (sm );
Imagem. postConcat (lm );
Paint. setColorFilter (new ColorMatrixColorFilter (Imagem ));
Canvas. drawBitmap (bm, 0, 0, paint );
Return bm1;
}
}
}