このページでは画像全体の平均の色を計算し、平均色で画像全体を塗り潰す画像処理を紹介します。
そのような画像処理が何の役に立つのか疑問に感じるかもしれませんが、例えば高校文化祭向けモザイクアートを色鉛筆で作るでは、色鉛筆で塗り潰した画像の平均色を計算し、それをもとにモザイクアートを作成しています。
その他にも様々な応用例が考えられますしExcelで平均色を求めるのは簡単ですから、このページで紹介させていただきます。
【図1】編集前の画像
上図が編集前の画像です。この画像の平均色は直感的に黄緑になると分かるでしょう。
平均色で塗り潰した結果が下図です。
【図2】平均色で塗り潰した画像
以下の式で画像全体の平均色を求めることができます。AVERAGEは平均値を求めるExcel関数でその引数に画像の全範囲を指定すればよいだけです。
【編集後R】=AVERAGE(【編集前R】の全セル)
【編集後G】=AVERAGE(【編集前G】の全セル)
【編集後B】=AVERAGE(【編集前B】の全セル)
この式は必ず0~255の範囲に入りますから、255を超えた場合はどうしようかと考える必要はありません。
計算結果が小数点以下になる可能性はありますから、整数に切り捨てる処理は必要です。INT関数で囲います。INT関数は小数点以下を切り捨てて整数にします。
【編集後R】=INT(AVERAGE(【編集前R】の全セル))
【編集後G】=INT(AVERAGE(【編集前G】の全セル))
【編集後B】=INT(AVERAGE(【編集前B】の全セル))
【編集後R】シートのA1からKN200のセルに以下の数式を入力します。セルのアルファベットを$$で囲うことでセル範囲の絶対参照をしています。こうすることで全てのセルに同じ式を入力できますから入力が簡単になります。
【編集後G】シートのA1からKN200のセルに以下の数式を入力します。セルのアルファベットを$$で囲うことでセル範囲の絶対参照をしています。こうすることで全てのセルに同じ式を入力できますから入力が簡単になります。
【編集後B】シートのA1からKN200のセルに以下の数式を入力します。セルのアルファベットを$$で囲うことでセル範囲の絶対参照をしています。こうすることで全てのセルに同じ式を入力できますから入力が簡単になります。
【編集後C】シートには以下の数式が入力されていますから、RGBの値を元に24ビットフルカラーの数値が表示されます。全てのセルに4359791と入力されていますが、この4359791が黄緑を表しています。
【編集後の画像を描く】マクロを実行します。マクロを実行したときに「実行時エラー'1004':セルの書式が多すぎるため、書式を追加できません。」というエラーが出る場合があります。その場合は【編集後画像】シートを一旦削除してファイルを保存して閉じて、開きなおして【編集後画像】シートを作り直してから、再度マクロを実行してみてください。
また、【編集後画像】シートを表示した状態でマクロを実行すると、PCの負荷が大きく途中で止まってしまうことがありますので別のシートを表示した状態で実行してください。
「編集後画像」シートが黄緑で塗り潰されました。編集前の画像の平均色で塗り潰された結果です。
ExcelのAVERAGE関数を利用して画像の平均色で塗り潰すことができました。
|