我今天有另一個問題: 我有一個二進制矩陣t,其中1代表河道,0代表洪水面和周圍山脈:Matlab:矩陣操縱:改變二進制矩陣中心像素周圍的像素值
t = Alog>10;
figure
imshow(t)
axis xy
爲了進一步計算,我想擴大河道的面積在每個方向幾個像素。一般而言,我想要在圖像中顯示更寬的通道,以在後面的水力模型中包含更大的區域。
這是我的嘗試,它在某些區域有效,但在河流對角線到x-y軸的區域,它不會加寬通道。似乎有一個流程正在接近這一點,這是我無法理解的。
[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
完美的,我期待的快速簡單的解決方案。我想知道是否有辦法找到像這樣的解決方案(之前沒有使用它們),而不詢問這樣的社區。我無法將我的問題與這些工具聯繫起來...... – TheodorBecker 2013-04-22 18:50:15