私はこのようなバイナリラスタを持っている:ラスタの再帰アルゴリズムまたはフラッドフィリングアルゴリズム?
101101
010111
101011
111101
は、今私は、行で、この行を実行する必要があります(!の行のセルのみ) 行を通過し、1ある隣接するセルを数えます。そして私はこのようなベクトルなどを取得したいと思います。それ以上のラスタの例えば は、次のようになります。
1st row: 1 2 1
2nd row: 1 3
3rd row: 1 1 2
4th row: 4 1
私は上の洪水充填アルゴリズムについて多くを読んで。しかし、私はちょうどそれを正しくしません。
私はこの再帰アルゴリズム試してみました:
rec=function(x)
{if (x==0)
{return 0)
else return(1+rec(x+1))}
をしかし、それは働いていません。
okありがとうございます。私はそれを試み、それは小さなラスターのために働いた。しかし、私は大きなラスタ(180x480)に対処しなければならず、時間がかかります。たぶん、私のバージョンだけでは十分に効率的ではありません。 – Cocilein
このアルゴリズムは可能な限り最良の実行時間を持っています。すべてのラスター要素を一度だけ訪問します。それはどんな妥当なラスタサイズでもすばらしく速くなるはずです。 – MBo