Tutorial1Activityクラスと同じ場所にHighLowLightFilterクラスを作成します。その後、filterメソッドに以下のコードを入力します。
public int[] filter(int[] imageArray, int width, int height, int max , int min) { int table[]=new int[256]; for(int i =0;i < 256;i++){ if(i < min){//① table[i]=min; }else if(i > max){//② table[i]=max; }else{ table[i]=i; } } int length = width*height; int[] oimgArray = new int[imageArray.length]; int rgb; int red,green,blue; for(int i =0;i < length;i++){ rgb = imageArray[i]; red = (rgb >> 16) & 0xff; green = (rgb >> 8) & 0xff; blue = (rgb) & 0xff; oimgArray[i]=255*16777216+ table[red]*65536+table[green]*256+table[blue]; } return oimgArray; }
①と②では上限と下限を決め、それを超えた場合には上限や下限に値を変換しています。
最後に、 Tutorial1Activityクラスのint imageArray[]=ba2ia(ba);の下に以下の文を記入します。
imageArray=new HighLowLightFilter().filter(imageArray, imagewidth, imageheight, 200,50);
第四引数が上限を、第五引数が下限を示します。
以下に実機での実行結果を示します。ヒストグラムから上限下限に多く分布していることがわかります。また、全体的にコントラストが落ちていることがわかります。
0 件のコメント:
コメントを投稿