プレイ日記
moh6an moh6an
エアブラシ画像生成研究会
12そうだね
プレイ済み
返信[1]
親投稿
moh6an moh6an
突然ムスカのごとくイメージが掴めたので書く 円フィルの生成は画素配列xyが円中心からの距離=(縦座標-直径)の2乗+(横座標-直径)の2乗より少ない=内円・外円判断 ・juhsyは現時点で座標軸全ピクセルに対しバカ正直に計算している。 ・が左右上下のどれか計算すればあとは線対称と点対称が同じなのだから1/4しか計算する必要がない ・ブラシの場合円中心からの距離に応じて段々α濃度を濃くすれば完成 ・円フィルの場合端から計算して内円に入ればあとは線中心まで内円なのでその後の計算は不要 ・フラットブラシの場合そのままだとドットが気になるのでオーバサンプリングを行う ・元解像度より高い解像度で円フィルを作成する>出力解像度のブロック単位で平均化(例:3倍解像度なら3*3の平均) ・出力がα濃度、そして同じく端から計算して濃度が設定αに達したらそのα値で線x軸中心まで同じαに設定
0そうだね
プレイ済み
返信[2]
親投稿
moh6an moh6an
以上を32bit整数XY配列に対して行い、αを255に設定 元画像配列からブラシ影響矩形の切り出しを行う ブラシ画像と合成を行い>元画像配列にcopyで書き戻し&GLOADで表示
0そうだね
プレイ済み
返信[3]
親投稿
みなつ tksm372
そして ・毎回生成するのは時間もったいないから、ブラシの種類毎に透明度付きで256x256くらいのXY配列を予め計算してファイルに保存しておいて、あとはサイズ毎に縮小すればいいや ・あれ?てことは、丸い形状じゃなくて、任意の画像をブラシにできるんじゃない? となって、ペイントソフトのブラシ定義になっていくんですね(´・ω・`)
1そうだね
プレイ済み
返信[4]
親投稿
moh6an moh6an
メモリが少ないので、ブラシ用に大きなメモリ配列を確保するのは・・・(NGワードで使用できず)(;´Д`)
0そうだね
プレイ済み
返信[5]
親投稿
moh6an moh6an
他の案として、端部x座標の一次配列を計算しておくというのを考えてます(^v^)
0そうだね
プレイ済み
返信[6]
親投稿
moh6an moh6an
イメージホース機能は他の人に任せます。(´・ω・`)
0そうだね
プレイ済み
返信[7]
親投稿
moh6an moh6an
あまりにも大人げ無い話なのですが、プリレンダのビットマップが好きではなくて、全部計算で生成したい派なので、めんどくさいこだわりを我ながら持て余す
0そうだね
プレイ済み
返信[8]
親投稿
みなつ tksm372
気持は分かります(´・ω・`)
0そうだね
プレイ済み
返信[9]
親投稿
moh6an moh6an
この状況を打破する為にカッチョイイアイコン募集中。
0そうだね
プレイ済み
返信[10]
親投稿
しんいち stgf1080
にわかに私も画像処理はじめてみました。 手始めにボカシをガウシアン方式(のつもり^^;)で試してみましたが、BIGでもとても遅かった(400×240の画像で3000msec弱くらいだったかな)。まだ話題のARYOPとか使ってないので速くなると思うんだけど、いわゆるRGBREADをビット演算使わずに四則演算だけで実現するところでハマり中^^; 見たところ、エアブラシもガウシアンボカシも原理は同じような気がする(要は中心から離れるほど係数小さくなる感じ?)ので、参考にしたいなぁと思ってます。 プリレンダ、ブラシのサイズが大きくなると、配列より毎回計算の方が速くなる可能性もありますね。
0そうだね
プレイ済み
返信[11]
親投稿
そひ ladixsofiya
はい(使い回し)
1そうだね
プレイ済み
返信[12]
親投稿
moh6an moh6an
>しんいちさん 四則演算より論理演算の方が扱いやすくかつ高速なので論理演算が使える非ARYOP環境では無理に使う必要はないと思いますよ?、
1そうだね
プレイ済み
返信[13]
親投稿
moh6an moh6an
>そひさん えーん(´Д⊂ヽカッチョワルイよ~
0そうだね
プレイ済み
返信[14]
親投稿
moh6an moh6an
ガウシアンぼかしの解説を見てみたのですが、うん 「なるほどわからん!!!」(^ν^) (数式を見ると頭が痛くなる奴)
0そうだね
プレイ済み
返信[15]
親投稿
moh6an moh6an
みなつさん口がにやけてる・・・・(;´Д`)
1そうだね
プレイ済み
返信[16]
親投稿
みなつ tksm372
( `・﹃・´) ダラー
0そうだね
プレイ済み
返信[17]
親投稿
moh6an moh6an
えーん(´Д⊂ヽ
0そうだね
プレイ済み
返信[18]
親投稿
みなつ tksm372
ブラシの濃度が0~255に変化する部分を直線以外にできれば、ボケ足の硬さを調整できるんじゃないかなーと思ったのですが、どういう曲線にすればいいのかなかなか思いつかなかった(´・ω・`)
0そうだね
プレイ済み
返信[19]
親投稿
しんいち stgf1080
四則演算で頑張ってたのは、ARYOPでガウシアン速くしようと思ってたからですよ~(^o^) で、色々悩んでたのですが、moh6anさんも少し前に検討されてたみたいですね。さっきプレイ日記見つけました^^; まさに私が悩んでたことと同じみたい。 因みにガウシアン、私も全然自信無いです。数式も良く分かってません^^; ただ、ネットで見かけた幾つかのうち、3×3とか5×5のテーブルに係数決め打ちの方法があって、ツールではそれで実装されてることが多い、見たいなこと載ってたので、それをマネしただけでした。そんなに難しくないと思いますよ。
0そうだね
プレイ済み
返信[20]
親投稿
しんいち stgf1080
参考になるか分かりませんが、ARYOPを使った決め打ちガウシアン作ってみたので紹介しておきます。 キー:ZBLENK4E BIGで作りました(3号で試そうと思ったらARYOP買ってなかった)。 多分すごく遅いと思います。そしてBIGではARYOP使わず普通にRGBREADでやった方が速かった^^; (適用した配列が小さいせいか、私のコーディング自体が下手っぴなのか) 普通?のボカシはボカす範囲に対するボカシ具合均一だと思うので、例えばプログラム中の3×3のGAUSS3配列には全て1/9が入る感じだと思います。
0そうだね
プレイ済み
返信[21]
親投稿
moh6an moh6an
ちょっとソース見てみましたが、3*3の配列とかにARYOP使って、全ピクセルで呼び出し行ってりゃそりゃ遅いっすよ!!ARYOPの呼び出しコストが掛かりすぎます。ARYOP使う配列はもっと多い配列に一括で行うことで高速化しますよ!!
1そうだね
プレイ済み
返信[22]
親投稿
moh6an moh6an
わかりやすい解説サイトがあったのでやっと理解しました。>ガウシアンぼかし、周辺ピクセルを足して平均するのね・・・ ガウシアンぼかしをARYOPに適用したい場合COPYコマンドで配列からxy1要素分削ったり足したりしてずらした配列を用意してAOPADDさせたらいいのでは?と思いました。
1そうだね
プレイ済み
返信[23]
親投稿
moh6an moh6an
PPPPPPPP0 0pppppppp とか・・・
0そうだね
プレイ済み
返信[24]
親投稿
しんいち stgf1080
あっそうか。1ドットずつの処理にしてたのはボカシペンみたいなのを考えてて、それでエアブラシも同じようなもんかなぁと思ったのでした。 でもボカシを使うケースを考えてみると、風景の遠くの方を広くボカすとかありそうだし、1ドットずつの処理だけじゃ実用的じゃないですね。 範囲一括ボカシも考えてみようかな。 #画像処理なかなか楽しい(^o^)
0そうだね
プレイ済み
返信[25]
親投稿
moh6an moh6an
ある程度の領域を一括でぼかし処理してしまった配列を作ってしまって、それをエアブラシ濃度で合成してしまうアプローチがARYOP演算には向いてそうです・・・
0そうだね
プレイ済み
返信[26]
親投稿
moh6an moh6an
>みなつさん すえさんは前述のオーバーサンプリングでやってますね。 円中心座標からの距離がでるのですからあとは半径比率に応じて円カーブでも三角関数でも指数関数でもベジェ曲線でもお好みで、juhsyは内部的にはただの直線で計算、表示には三角関数つかってます(ブラシのGUIとか)
1そうだね
プレイ済み
返信[27]
親投稿
moh6an moh6an
アプローチとしては要素ずらしを行ったRGB分離配列を#AOPMAD,出力配列,色配列,1/9,出力配列 で各周辺ピクセル毎にループという感じですかね?
0そうだね
プレイ済み
返信[28]
親投稿
みなつ tksm372
にゃるほど! 三角関数はいいですね(*´▽`*) 指数関数だと、透明領域の外周側(αが0に近づくところ)か内周側(αが255に近づくところ)のどっちかしか滑らかにならないけど、それはそれでブラシとしてはありなのかも ベジェ曲線はどうなってるのかよく分からないので、調べてみますっε≡≡ヘ( ´Д`)ノ
0そうだね
プレイ済み
返信[29]
親投稿
moh6an moh6an
要素ずらし配列だと、画素の端のピクセルが反対側の端に移動してしまうことが判明。orz 素直にgSaveでずらした配列を取得すりゃよかった。
1そうだね
プレイ済み