• 締切済み

マスク画像の自動作成

読み込んだ画像(Bitmap)を透過したいのですが、 透過色指定だと周りの部分のみ透過したいのに、内側の 同色の透過したくない部分も透過されてしまうため、 読み込んだ画像のマスク画像を自動で作成したいと考えています。 何かよい方法はないでしょうか? サンプルのHPなどありましたら教えていただければと思います。 よろしくお願いいたします。

みんなの回答

  • suzrun
  • ベストアンサー率25% (13/52)
回答No.3

どうも言っていることに差異を感じられるようなので僕の考えている方法を詳しく列挙してみます。分かりやすいようにちょっと冗長に書くので高速化はご自由に。同じでしたらごめんなさい。 1) 元画像から作業用コピー画像を複製して、同時に同じサイズのマスク用画像(全面黒)を作成する。 2) 作業用コピー画像の最初のドットを起点に塗りつぶしを開始する。塗りつぶしの方法はアルゴリズムとかで検索すれば幾らでも出てくるので参考URLを参考にしなくてもいい。同時にマスク画像の塗りつぶされた箇所と一致するドットを白くする。 3) 必要なら最後のドットを起点にもやったり、四隅全部から塗りつぶせばいい。 4) 画像に何色が使われているか分からないので塗りつぶした作業用コピー画像は復元不可能。よってぽい。しかし何処を塗りつぶしたかのデータはマスク画像にきちんと残ってるから世は事もなし。 どうでしょうか?

参考URL:
http://lee.phys.titech.ac.jp/~yasutake/PaintArea.html
  • suzrun
  • ベストアンサー率25% (13/52)
回答No.2

内側に透過色がさせたい部分がある場合は「そこを透過すべきかどうか」コンピュータじゃ判断できないので不可能だと思います。手動でマスクを作るか、最初のドットを透過色とするしかないでしょうね。

Caya
質問者

お礼

再度回答ありがとうございます。 内側は透過させなくて良いのですが、周りの透過色と同じ色を 使っている場合もあります。 簡単な例としては、背景が白くて、白いお皿を黒いペンで書いてあり、さらに白いお饅頭が黒いペンで書いてあるようなそんな場合は、 周りの部分だけを透過させたいのですが・・・ 周りを一度黒で塗りつぶして、それを別イメージにコピーさせ、 周りを白く塗り、内側を黒く塗ろうと思っても、黒い線まで塗りつぶさせようと思ったのですが、一番周りのお皿を黒いペンまで塗りつぶさせたいのに、お饅頭の黒いペンまでしか塗りつぶされない・・・ と言った感じで今何かよい方法が無いか考えているところです。 また、お皿がイメージの幅を超えて描画されている場合は周りを黒く塗るのもうまくいかずにいます^^;;;

  • suzrun
  • ベストアンサー率25% (13/52)
回答No.1

例えば透過色に白を使っているのに表示したい部分にも白が含まれているということでしょうか? 個人的には「被らせるなよ」と言いたいところですが、マスク自動作成プログラムという観点でしたら最初のドットからペイントソフトの塗りつぶし方式(同色なら上下左右方向に関数を再起的に呼び出し。あちこちのサイトで解説されていると思うので詳細は割愛)を応用できないでしょうか? ただしドーナツみたいに表示したい画像に囲まれている透過部分がある場合はこれじゃあ対処できません。というかその場合はプログラムで識別できないので人力に頼るしかないんじゃないかと思います。

Caya
質問者

お礼

回答ありがとうございます。 色の被りですが、ユーザーが自由にイメージを指定できるようにしたいので、被らないイメージを使用してください、などの規制を無いようにしたいので、マスクを使いたいと思っています。 塗りつぶしをする方法を今試していますが、内側を黒いマスクを作るのが難しいですね。。。 何かよい方法があるのでしょうか?