【エラーで止まる原因として想定する事】
find(B(:,X))が「0×1 の空の double 列ベクトル」になる場合。つまりその列は全部黒の場合です。その場合、rmoutliers()も空の列ベクトルを、mean()とround()はNaNを返します。白い箇所が見つからなかった場合、直行する白線を描画しない様にすれば止まらなくなります。
if ~isnan(Y)
yline(Y,'Color','w'); % y座標を白い線で表示
end
【他に気になる事】
二値化画像は、RGB成分をそれぞれ二値化した3次元行列になっています。そのままこのプログラムで処理するとR成分についてしか処理しません。下記の様にグレースケール画像に変換してから二値化すべきだと思います。
B = rgb2gray(mydata{k}) > 254;