既存の画像の上に色を重ねるアルゴリズムを探しています。次のアプリ(壁画家)に似たもの:http://itunes.apple.com/us/app/wall-painter/id396799182?mt = 8
既存の画像に壁をペイントして別の色に変更できるように、同様の機能が必要です。
私はyuvまたはrgbモードの両方で作業できます。
既存の画像の上に色を重ねるアルゴリズムを探しています。次のアプリ(壁画家)に似たもの:http://itunes.apple.com/us/app/wall-painter/id396799182?mt = 8
既存の画像に壁をペイントして別の色に変更できるように、同様の機能が必要です。
私はyuvまたはrgbモードの両方で作業できます。
を使用してグラフィックスコンテキストに描画してみることができますkCGBlendModeColor
。ドキュメントから:
背景の輝度値を、ソース画像の色相と彩度の値とともに使用します。このモードでは、画像のグレーレベルが保持されます。このモードを使用して、モノクロ画像に色を付けたり、カラー画像に色を付けたりすることができます。
他のブレンドモードで実験することもうまくいくかもしれません。詳細については、ドキュメントを参照してください(「kCGBlendMode」を検索してください)。
RGBおよびYUVカラーモデルは、この方法で色を変更するのにあまり適していません。これに最適なカラーモデルはHLSだと思います。
リンク:RGBからHLSおよびHLSからRGBへの変換ソースコード
GIMPのPhotoshopなどの写真編集アプリで、これら3つのコンポーネントの効果を評価できます。
写真の壁をうまくペイントするには、次の2つの手順を実行する必要があります。
画像内の壁の境界を見つけます(画像の色付けする部分を選択します)
選択した領域に目的の色を適用します
最初のステップは難しい部分です。これは、Photoshopの魔法の杖ツールが行うことと似ています。そして実際、魔法の杖のアルゴリズムを検索すると、Objective-Cコードを使用したこの記事のようないくつかの優れた記事が見つかります。
CGContextSetBlendMode
2番目のステップははるかに簡単で、とを使用して実行できますCGContextDrawImage
。