0

画像内のピクセルをある程度黒く (半黒) 置き換えて、完全に黒くしたいと考えています。

これを行う方法はsetRGB(int x, int y, int rgb). 私はこれを知っている。私が知らないのは、セミブラックのピクセルを検出する方法です。

私は試しました(iはですBufferedImage):

final int rgb = i.getRGB(x, y);
if (rgb == -16777216) {
    i.setRGB(x, y, -16777216);
}

これを行うには、純粋な黒のピクセルを純粋な黒に置き換えるだけです。

画像を暗くすることも試みましたが、それもうまくいきません。

一般的な黒さをテストする方法についてのアイデアはありますか?

私の目標:私が読んでいる画像は薄いテキストです。これにより、このテキストをより太字にしたいと思います。

4

1 に答える 1

4

受け取る整数は、赤、緑、青、およびアルファ値の組み合わせを表します。基本的に、次のことを行う必要があります。

  • その整数をコンポーネントの赤、緑、青の値に分解します
  • これらの値から、ピクセルの全体的な「明るさ」を評価します

大まかな実装として、次のようなことができます。

int pixVal = ... getRGB() as you have
int red = (pixVal >>> 16);
int green = (pixVal >>> 8) & 0xff;
int blue = pixVal & 0xff;
int brightness = (red + green + blue) / 3;
if (brightness < 16) {
  // pixel is black
}

ここで、値 16 は大まかな値です。理想的には、これを特定の画像に合わせて調整します。

純粋主義者は、ピクセルの知覚された「明るさ」は文字通り赤/緑/青のピクセルの平均値ではない (人間の目はこれらのコンポーネントに等しく敏感ではないため) と不満を言うかもしれません。しかし、それは大まかなアイデアです。

于 2012-05-05T01:44:52.767 に答える