背景削除プログラム Ver1.0
ァィス,お待たせ~って感じで,画像処理ソフト,完成しましたよ.
息抜きがてらで作ってたので,遅くなってごめんなさぃ
ピグ画像等の背景等を消していくプログラムです.
特徴としては…
ピグ画像の背景の除去に結構特化している事と,最終的に背景色が混同し,パンダ等の白い部分が透けてしまうのを防止してくれる事ですかね
.NET Framework 2.0以上で動くと思います.
とりあえず作ったものなので,重いです.すみませんm(_ _)m
いつも通り,欲しい人は,ピグで喋った事のある人ならあげるので声をかけて下さい.
知らない人は…ゴメンなさぃm(_ _)m
バグ報告や機能追加の要望は気軽に言ってください.
ただ,今月は無茶苦茶に忙しいので,気長に反映を待って下さいwww
~1/2 18:20追記~
1/2の18:20以前にダウンロードされた方は,もう一度ダウンロードしなおしてくださいm(_ _)m
見つけたバグの修正と,終了時の保存確認を追加しました.
公開してすぐの事なので,バージョンは1.0のままでw
で,説明書.
~ファイルを開く~
Openを押して画像を開きます.
テキストボックスにフォルダやファイルのパスを入れておくと,それを反映した状態でダイアログが開きます.
~画像の拡大・縮小~
その領域を消去します.
当然,単にクリックだけすれば,1画素だけの領域となり,その画素だけ消えます.
・RGBモード
ペイントの塗りつぶしのちょっと高機能版です.
トラックバーや数値入力でRGB値を入力しておきます.
画像をクリックすると,その画素から,設定したRGBの数値分許容した範囲を消去します.
全て0なら,ペイントの塗りつぶし同様,その色のみ消去します.
これはR(赤)とB(青)が40,Gを90とした例です.
G(緑)を多く許容しているため,緑である草の部分も含めて消えているのがわかると思います.
・Edgeモード
画像上のエッジを検出し,そのエッジで区切られた領域を消去します.
以下の方法でエッジを検出しておき,画像上で左クリックすると,その領域を消去します.
- Cannyモード -
Cannyの弱閾値と強閾値を指定します.
そして,Cannyボタンを押すことでエッジが検出されます.
Cannyアルゴリズムの詳細は割愛しますが,簡単に説明すると,大きい値(強閾値)でエッジを検出し,小さい閾値(弱閾値)でそのエッジの切れ目を繋ぎます.
強閾値が大きいと目立つエッジのみ検出され,小さいと細かいエッジまで出てきます.
弱閾値が大きい程そのままのエッジとなり,小さい程エッジの切れ目がよく繋がります.
閾値を決め,Cannyボタンを押して…
エッジを検出します.
そして,消したいところをクリックすると,
そのエッジで区切られた領域が消えます.
実際やってみたところ,ピグ画像にはあまり意味が無いかも知れません.
うまく閾値を調整すれば,実世界の写真等では使えるかも?笑
-Originalモード-
ピグの画像は,色の切れ目の部分でスムージングがかかっており,
このように中間色のような画素が存在します.
ペイントの塗りつぶしなどでは,このような画素が残ってしまい,他の画像等と合成した時に色がおかしく,見栄えが悪くなります.
そこで,これを考慮したエッジ検出です.
画像上で,残す絵の中心付近をクリックすると,
中間画素の内側にエッジが生成されます.
その後はCanny同様,消したい所をクリックです.
しかし,アルゴリズムが未だ適当なので,あまりうまく動きません.
使わなくていいですwww
そして,うまく動いた所で以下のRGB&Edgeモードと結果がほぼ変わらないので,おそらく完成させませんwww
・RGB&Edgeモード
基本的に,前述のRGBモードと同じですが,エッジのOriginalモードで述べた中間色画素の事を考慮します.
RGBモードで消した画素に隣接する中間色画素を,一緒に消去します.
例えば,通常のRGBモード(設定は0,0,0)で消去すると,
このように中間色が残ります.
しかし,RGB&Edgeモードで消去すると,
このように中間色画素も消えていることがわかるかと思います.
おそらく,一番うまく消えてくれるモードです.
しかし,たまに消えすぎるように見えることもあるので,単純なRGBモードと併用した方がいいかも知れません.
~保存~
Saveボタンを押すことで,保存されます.
"元のファイル名_0.png"で保存されます.
"_0"が存在した場合,"_1","_2"となっていきます.
つまり,上書き保存はされません!!
バックアップは重要ですよという仕様です.
Saveを押すと,
ココに保存されたよってウィンドウが出ます.
保存時,消去した背景部分は「(R,G,B)=(255,255,255)」,つまり白で保存されます.
この時,「254」という所にチェックが入っていると,元々白だった部分は完全な白ではなく,「(R,G,B)=(254,254,254)」に変換して保存されます.
つまり,ほぼ白ですが背景色とは別の色になるため,その後の処理で背景色として扱われなくなるはずです.
これで,パンダの白い部分などが透けてしまう現象が無くなります.
~Undo(戻る)~
消去をミスった場合,Undoボタンで3回まで戻れます.
~許容RGB値の同期~
Interlockにチェックを入れておくと,RGB値が同じ値で連動して動きます.
~ラベリングのモード~
RGBでの領域選択や,エッジモードでの領域選択でのアルゴリズムの切り替えです.
通常時は4近傍,つまり上下左右だけ見て領域を決定します.
例えばこの画素から見て,
こんな上下左右を見て領域が決まります.
8-Neighborhoodにチェックを入れておくと,8近傍で領域を決定します.
つまり,上下左右+斜め4つで8近傍です.
このような切れ目があったときに,右下の領域を選択したとします.
以上,長々と申し訳ないですが,説明書でした~
息抜きがてらで作ってたので,遅くなってごめんなさぃ
ピグ画像等の背景等を消していくプログラムです.
特徴としては…
ピグ画像の背景の除去に結構特化している事と,最終的に背景色が混同し,パンダ等の白い部分が透けてしまうのを防止してくれる事ですかね
.NET Framework 2.0以上で動くと思います.
とりあえず作ったものなので,重いです.すみませんm(_ _)m
いつも通り,欲しい人は,ピグで喋った事のある人ならあげるので声をかけて下さい.
知らない人は…ゴメンなさぃm(_ _)m
バグ報告や機能追加の要望は気軽に言ってください.
ただ,今月は無茶苦茶に忙しいので,気長に反映を待って下さいwww
~1/2 18:20追記~
1/2の18:20以前にダウンロードされた方は,もう一度ダウンロードしなおしてくださいm(_ _)m
見つけたバグの修正と,終了時の保存確認を追加しました.
公開してすぐの事なので,バージョンは1.0のままでw
で,説明書.
~ファイルを開く~
Openを押して画像を開きます.
テキストボックスにフォルダやファイルのパスを入れておくと,それを反映した状態でダイアログが開きます.
~画像の拡大・縮小~
その領域を消去します.
当然,単にクリックだけすれば,1画素だけの領域となり,その画素だけ消えます.
・RGBモード
ペイントの塗りつぶしのちょっと高機能版です.
トラックバーや数値入力でRGB値を入力しておきます.
画像をクリックすると,その画素から,設定したRGBの数値分許容した範囲を消去します.
全て0なら,ペイントの塗りつぶし同様,その色のみ消去します.
これはR(赤)とB(青)が40,Gを90とした例です.
G(緑)を多く許容しているため,緑である草の部分も含めて消えているのがわかると思います.
・Edgeモード
画像上のエッジを検出し,そのエッジで区切られた領域を消去します.
以下の方法でエッジを検出しておき,画像上で左クリックすると,その領域を消去します.
- Cannyモード -
Cannyの弱閾値と強閾値を指定します.
そして,Cannyボタンを押すことでエッジが検出されます.
Cannyアルゴリズムの詳細は割愛しますが,簡単に説明すると,大きい値(強閾値)でエッジを検出し,小さい閾値(弱閾値)でそのエッジの切れ目を繋ぎます.
強閾値が大きいと目立つエッジのみ検出され,小さいと細かいエッジまで出てきます.
弱閾値が大きい程そのままのエッジとなり,小さい程エッジの切れ目がよく繋がります.
閾値を決め,Cannyボタンを押して…
エッジを検出します.
そして,消したいところをクリックすると,
そのエッジで区切られた領域が消えます.
実際やってみたところ,ピグ画像にはあまり意味が無いかも知れません.
うまく閾値を調整すれば,実世界の写真等では使えるかも?笑
-Originalモード-
ピグの画像は,色の切れ目の部分でスムージングがかかっており,
このように中間色のような画素が存在します.
ペイントの塗りつぶしなどでは,このような画素が残ってしまい,他の画像等と合成した時に色がおかしく,見栄えが悪くなります.
そこで,これを考慮したエッジ検出です.
画像上で,残す絵の中心付近をクリックすると,
中間画素の内側にエッジが生成されます.
その後はCanny同様,消したい所をクリックです.
しかし,アルゴリズムが未だ適当なので,あまりうまく動きません.
使わなくていいですwww
そして,うまく動いた所で以下のRGB&Edgeモードと結果がほぼ変わらないので,おそらく完成させませんwww
・RGB&Edgeモード
基本的に,前述のRGBモードと同じですが,エッジのOriginalモードで述べた中間色画素の事を考慮します.
RGBモードで消した画素に隣接する中間色画素を,一緒に消去します.
例えば,通常のRGBモード(設定は0,0,0)で消去すると,
このように中間色が残ります.
しかし,RGB&Edgeモードで消去すると,
このように中間色画素も消えていることがわかるかと思います.
おそらく,一番うまく消えてくれるモードです.
しかし,たまに消えすぎるように見えることもあるので,単純なRGBモードと併用した方がいいかも知れません.
~保存~
Saveボタンを押すことで,保存されます.
"元のファイル名_0.png"で保存されます.
"_0"が存在した場合,"_1","_2"となっていきます.
つまり,上書き保存はされません!!
バックアップは重要ですよという仕様です.
Saveを押すと,
保存時,消去した背景部分は「(R,G,B)=(255,255,255)」,つまり白で保存されます.
この時,「254」という所にチェックが入っていると,元々白だった部分は完全な白ではなく,「(R,G,B)=(254,254,254)」に変換して保存されます.
つまり,ほぼ白ですが背景色とは別の色になるため,その後の処理で背景色として扱われなくなるはずです.
これで,パンダの白い部分などが透けてしまう現象が無くなります.
~Undo(戻る)~
消去をミスった場合,Undoボタンで3回まで戻れます.
~許容RGB値の同期~
Interlockにチェックを入れておくと,RGB値が同じ値で連動して動きます.
~ラベリングのモード~
RGBでの領域選択や,エッジモードでの領域選択でのアルゴリズムの切り替えです.
通常時は4近傍,つまり上下左右だけ見て領域を決定します.
例えばこの画素から見て,
こんな上下左右を見て領域が決まります.
8-Neighborhoodにチェックを入れておくと,8近傍で領域を決定します.
つまり,上下左右+斜め4つで8近傍です.
このような切れ目があったときに,右下の領域を選択したとします.
以上,長々と申し訳ないですが,説明書でした~