2016-05-03 3 views
0
for y=q-100:q+100 
for x=r-100:r+100 
    for c=x-1:x+1 
    for d=y-1:y+1 
    t=impixel("imagename",c,d); 
    if (t>121) 
     m(c,d)=255; 
    end 
    end 
    end 
end 
end 
imshow(m); 

これは長い時間コードを実行するため、計算時間を最小限に抑える必要があります。bsxfunを使用する場合と使用しない場合のこのコードの最適化方法を教えてください。

+1

本当にすべてのループでイメージをリロードする必要がありますか?本当の意図は何ですか?私はこれをより現実的にする必要があると思います。 1つのイメージ、またはたくさんのイメージがありますか? – crobar

+0

これは、特定の座標を囲む領域で操作しなければならない1つの画像です。そしてその領域は200×200ピクセルであり、各ピクセルは周囲の8ピクセルをチェックしているからです。 –

答えて

0
for y=q-100:q+100 
for x=r-100:r+100 
    c=x-1;d=y-1; 

    // top 3 pixels 
    t=impixel("imagename",c,d);if (t>121) m(c,d)=255; end 
    c=c+1; 
    t=impixel("imagename",c,d);if (t>121) m(c,d)=255; end 
    c=c+1; 
    t=impixel("imagename",c,d);if (t>121) m(c,d)=255; end 

    // right pixel 
    d=d+1; 
    t=impixel("imagename",c,d);if (t>121) m(c,d)=255; end 

    // bottom 3 pixels 
    d=d+1; 
    t=impixel("imagename",c,d);if (t>121) m(c,d)=255; end 
    c=c-1; 
    t=impixel("imagename",c,d);if (t>121) m(c,d)=255; end 
    c=c-1; 
    t=impixel("imagename",c,d);if (t>121) m(c,d)=255; end 

    // left pixel 
    d=d-1; 
    t=impixel("imagename",c,d);if (t>121) m(c,d)=255; end 
end 
end 

これはネストループバージョンよりも境界チェックが少ないです。

+0

しかし、計算時間はまったく短縮されませんでした。 –

関連する問題