画像をカラーからグレースケールアルゴリズム、Androidに変換して適用するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4045894

  •  27-09-2019
  •  | 
  •  

質問

これらのアルゴリズムの1つを使用して、RGB画像をグレースケールに変換しようとしています:

明度法は、最も目立つ色と最も目立たない色を平均します。 (max(R、G、B)+ min(R、G、B))/ 2。

平均法では、値を単純に平均します:(R + G + B)/ 3。

光度の式は0.21R + 0.71 G + 0.07Bです。

しかし、私は非常に奇妙な結果を得ます!これを達成する方法は他にもあると思いますが、この方法は可能ですか?

コードは次のとおりです: ジェネラコディセタグプレ

役に立ちましたか?

解決

特にシフトで符号拡張が行われている場合は、取得するコンポーネントの一部ではないビットを取り除く必要があります。 ジェネラコディセタグプレ

他のヒント

あなたが作ったものは私には大丈夫に見えます。

私はかつてこれをJavaで、ほとんど同じ方法で行いました。 RGBの0〜255色の値の平均を取得して、グレースケールを取得します。これは、あなたの色によく似ています。 ジェネラコディセタグプレ

これをコーディングするために鍬を求めているのではなく、アルゴリズムを求めていると思いますか?

http://www.dfanning.com/ip_tipsによると、「正しい」アルゴリズムはありません。/color2gray.html

彼らは使用します ジェネラコディセタグプレ

Javaで各ピクセルを変更することはできますが、それは非常に非効率的です。オプションがある場合は、ColorMatrixを使用します。詳細については、Androidのドキュメントを参照してください:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ColorMatrixSample.html

マトリックスの彩度を0に設定して、グレースケールにすることができます。

本当にJavaで実行したい場合は、実行した方法で実行できますが、最初に各要素をマスクする必要があります。つまり、& 0xffを適用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top