はじめに 例えば以下の2つの画像,左と右の色を比べたときにどちらの方が色が近いと思いますか? #FF0000と#400000 #FF0000と#FFBF00 単純にRGB値の距離を計算すると二つの色の距離は同じ. しかし1つ目の画像は単に暗くなっただけなのに対して,2つ目の画像は色相が変わっているため,例えば写真のマッチングを取る場合は上の方が似た色として判別した方が都合が良くなったりする. こうした色の距離,色差の計算について実装してみた. ソースはJava 8を前提に書いているが,Androidでも動作する(はず).ただし,AndroidではColorクラスが違うため適宜変更してほしい. 下準備 JavaとAndroidのColorクラスの違いや,RGB値の保存などを目的として下記のクラスを準備する.RGB値のint値を受け取るとそれぞれをdoubleの値として配列を作成し,保存する.
![色の距離(色差)の計算方法 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/958ad8cf0cb658f00dc4d8eff65db67dbb295a7a/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUU4JTg5JUIyJUUzJTgxJUFFJUU4JUI3JTlEJUU5JTlCJUEyJUVGJUJDJTg4JUU4JTg5JUIyJUU1JUI3JUFFJUVGJUJDJTg5JUUzJTgxJUFFJUU4JUE4JTg4JUU3JUFFJTk3JUU2JTk2JUI5JUU2JUIzJTk1JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz05ZTNhOTE1MGI5MzVlNWU2ZTY5OGRkZmVlMzg0NGNjMQ%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBzaGluaWRvJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0wZjdlYTA5NjU0YmE5ZTg2MjFmYTczNzk2Mzg3NTYzNA%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Deefc2df4c20adcfc88da30cdd50e1d2f)