- MATLABプログラミング 質問箱 その4
214 :デフォルトの名無しさん[sage]:2014/08/22(金) 12:01:14.93 ID:HUPln6ac - scilab+SIVPで画像処理をしてるけど処理が激遅で困ってます
┌──┐ │ ○ │→┌───┐ └──┘ └───┘ ↑みたいな480×640の画像で、真ん中の円の部分を長方形の画像に展開したいんですが、 1ドットずつ長方形の枠に色情報を移すようなループ処理でやってるせいか超遅い・・・ 円の半径は480/2の240として、円の最外周から30ドットくらいまでを長方形の画像に 展開するのに高速で終わるようにするにはどうしたら良いでしょうか。 今は下みたいな処理をしています。 MARUは480*640*3の配列で、SIKAKUは30*1500*3の配列 MARUで指定する座標の色情報を一つずつSIKAKUの配列に入れて行く r=240 //半径r while(r>210) //半径の最大から最小値まで繰り返す(行置換) a=360 //360°ぐるりと回りながらドット取得 j=1 //長方形展開後の色情報を格納する列番号 while(a>0) //角度を360から0まで繰り返す(列置換) x=round(px+r*cosd(a)) //○画像の抽出したいドットの横方向座標取得 y=round(py+r*sind(a)) //○画像の抽出したいドットの縦方向座標取得 SIKAKU(i,j,1)=MARU(y,x,1) //R・G・Bそれぞれ円の座標の色情報を SIKAKU(i,j,2)=MARU(y,x,2) //長方形の画像の指定する場所に格納 SIKAKU(i,j,3)=MARU(y,x,3) j=j+1 //長方形展開後の次の色情報を格納する場所の列指定 a=a-0.24 //0.24°角度を移動 (半径480ドットの円の円周≒1500ドット、360/1500=0.24) end r=r-1 //最外周から1ドットずつ内側に移動 i=i+1 //長方形の画像の次の色情報を格納する場所の行指定 end この後さらに複数の長方形に展開した画像を結合して長い円筒にカメラを突っ込んだような画像から、 円筒を唐竹割りしたような展開画像を作りたいけど良い方法有りますでしょうか。
| - MATLABプログラミング 質問箱 その4
216 :214[sage]:2014/08/22(金) 16:30:56.24 ID:HUPln6ac - まだループが有るけど大分早くなったので途中経過・・・
後は動画から連続する画像取得とその展開、展開画像の結合か・・・先は長い(´・ω・`) i=1 r=240 //半径r a=0:(360/1500):360 while(r>210) MARU_R=DR(round(py+r*sind(a)),round(px+r*cosd(a))) MARU_B=DG(round(py+r*sind(a)),round(px+r*cosd(a))) MARU_G=DB(round(py+r*sind(a)),round(px+r*cosd(a))) MARU_R=diag(MARU_R)' MARU_B=diag(MARU_B)' MARU_G=diag(MARU_G)' SIKAKU(i,ANS_yoko,1)=sum(MARU_R,'r') SIKAKU(i,ANS_yoko,2)=sum(MARU_B,'r') SIKAKU(i,ANS_yoko,3)=sum(MARU_G,'r') r=r-1 i=i+1 end
|
|