私は、ヒストグラム均等化を使用してこの画像からの移動のようなことをしようとしているプロジェクトに取り組んでいます
http://zerocool.is-a-geek.net/wp-content/uploads/2011/12/input-300x200.jpg
「http://zerocool.is-a-geek.net/wp-content/uploads/2011/12/hist_before.png」
この画像に
http://zerocool.is-a-geek.net/wp-content/uploads/2011/12/output-300x200.jpg
「http://zerocool.is-a-geek.net/wp-content/uploads/2011/12/hist_after.png」
しかし、私はそれを理解できないようです。
これは、同じタイプの調整を実装する必要がある私の拡張画像コードです。
public void EnhancedImage (File fileName) {
double sumc = 0;
for(int r = 0; r < array.length; r++){
for(int c = 0; c < array[r].length; c++){
sumc = r+c;
if (sumc <= array[r][c]) {
sumc = array[r][c];
}
newc = Math.round(maxshade * ((double)sumc / pixtot));
array[r][c] = (int) (newc);
if (array[r][c] > 255) {
array[r][c] = 255;
}
}
}
私が使用したいアルゴリズムは以下のとおりです。ここで、maxShadeは画像の最大シェード(通常は255)です。sumcはc以下の値を持つ画像内のピクセルの総数であり、pixtotはピクセルの総数です。写真の中の:
newc := round(maxShade * ((double)sumc / pixtot))
しかし、私がそれを正しく行ったかどうかはわかりません...現在、私の画像は本当に暗くなります。
どんな助けでもいただければ幸いです!! ありがとう。
また、私のpixtotルーチン:
pixtot = 0;
for(int y = 0; y < imageArray.length; y++)
for(int x = 0; x < imageArray[0].length; x++)
pixtot = x+y;