今日は別の問題があります。バイナリ行列 t があります。ここで、1 は河道を表し、0 は洪水面と周囲の山を表します。
t = Alog>10;
figure
imshow(t)
axis xy
さらに計算するために、河道の領域を各方向に数ピクセル拡大したいと思います。一般的に言えば、後の水理モデルに大きな領域を含めるために、画像に表示されるチャネルを広くしたいと考えています。
これは私の試みで、特定の地域では機能しますが、川が xy 軸に対して斜めに走っている地域では、水路を広げません。これに近づくには流れがあるようで、なかなか掴めません。
[q,o] = find(t == 1);
qq = zeros(length(q),11);
oo = zeros(length(o),11);
% add +-5 pixel to result
for z=1:length(q)
qq(z,:) = q(z)-5:1:q(z)+5;
oo(z,:) = o(z)-5:1:o(z)+5;
end
% create column vectors
qq = qq(:);
oo = oo(:);
cords = [oo qq]; % [x y]
% remove duplicates
cords = unique(cords,'rows');
% get limits of image
[limy limx] = size(t);
% restrict to x-limits
cords = cords(cords(:,1)>=1,:);
cords = cords(cords(:,1)<=limx,:);
% restrict to y-limits
cords = cords(cords(:,2)>=1,:);
cords = cords(cords(:,2)<=limy,:);
% test image
l = zeros(size(img));
l(sub2ind(size(l), cords(:,2)',cords(:,1)')) = 1;
figure
imshow(l)
axis xy
これは私が得るイメージです:
一部の領域ではチャネルが広がりますが、一般的に、私のアプローチには欠陥があるようです. ピクセルの対角線で同じアプローチを使用すると、 [1 1; のペアが増えるだけなので、線はまったく広がりません。2 2; 3 3; 等]。これに対するより良いアプローチ、または画像処理の領域からの何かはありますか? 設定された直径のぼかしフィルターは、多少似たように機能するはずですが、役立つものは見つかりませんでした...
PS: すでに 10 人の担当者がいますが、画像を追加することはできませんでした。ここに直接リンクがあります。
http://imageshack.us/a/img14/3122/channelthin.jpg http://imageshack.us/a/img819/1787/channelthick.jpg