首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab:矩阵操作:更改二进制矩阵中中心像素周围的像素的值

Matlab:矩阵操作:更改二进制矩阵中中心像素周围的像素的值
EN

Stack Overflow用户
提问于 2013-04-23 01:56:16
回答 2查看 1.2K关注 0票数 1

今天我还有另一个问题:我有一个二进制矩阵t,其中1表示河道,0表示洪水平面和周围的山脉:

代码语言:javascript
复制
t = Alog>10;
figure
imshow(t)
axis xy

为了进一步计算,我想在每个方向上将河流通道的面积扩展几个像素。一般来说,我希望在图像中显示更宽的通道,以便在以后的水力模型中包含更大的区域。

这是我的尝试,在某些地区确实有效,但在河流与x-y轴成对角的地区,它不会加宽河道。在接近这个的过程中似乎有一种流动,我不太理解。

代码语言:javascript
复制
[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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-23 02:17:52

如果您有图像处理工具箱,则应使用imdilate函数。这将执行形态dilation operation。尝试以下代码:

代码语言:javascript
复制
SE = strel('square',3);
channelThick = imdilate(channelThin,SE);

其中SE是用于扩展存储在channelThin中的图像的3x3正方形structuring element。这将在每个方向上将channelThin中的区域扩展一个像素。若要扩展更多,请使用更大的结构化元素或多次迭代。

票数 1
EN

Stack Overflow用户

发布于 2013-04-23 02:11:41

您可以从图像处理中应用morphological operations。在您的示例中可以使用Morphological dilation

在图像处理工具箱中,可以使用bwmorth命令BW2 = bwmorph(BW,'dilate')或imdilate命令IM2 = imdilate(IM,SE)

其中IM是您的图像,SE是结构化元素。您可以将SE = ones(3);设置为将二进制图像放大“一个像素”-但可以根据您的应用程序进行更改。或者,如果需要,您可以使用相同的结构元素将图像放大几次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16153603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档