gpt4 book ai didi

matlab - 使用 matlab 进行洪水填充

转载 作者:太空宇宙 更新时间:2023-11-03 19:50:03 26 4
gpt4 key购买 nike

我是 MATLAB 的新手,我正在尝试使用这个 algorithm 实现洪水填充在 matlab 中,我不知道我做错了什么可能是我没有正确使用递归函数,但我仍然不知道出了什么问题,这段代码使我的 matlab 关闭我正在使用以下代码我从早上开始就尝试调试它但未能找到问题

function [ colored_Image ] = floodFill( image, target_Loc_x, target_Loc_y, targetColor, replacementColor )
colored_Image = image;

if (target_Loc_x >= 1) && (target_Loc_x <= size(image,1)) && (target_Loc_y >= 1) && (target_Loc_y <= size(image,2))
if image(target_Loc_x,target_Loc_y) == targetColor
colored_Image(target_Loc_x,target_Loc_y) = replacementColor;
colored_Image = floodFill(colored_Image,target_Loc_x ,target_Loc_y + 1, targetColor, replacementColor);
colored_Image = floodFill(colored_Image,target_Loc_x + 1,target_Loc_y, targetColor, replacementColor);
colored_Image = floodFill(colored_Image,target_Loc_x,target_Loc_y - 1, targetColor, replacementColor);
colored_Image = floodFill(colored_Image,target_Loc_x - 1,target_Loc_y, targetColor, replacementColor);
end

end


end

调用这个函数使用

image = floodFill(im,1,1,0,127);
imshow(image);

我是我的 200 x 200 矩阵图像我想要我的黑色 (0) 到灰色 (127),任何帮助将不胜感激

最佳答案

您可能达到了 Matlab 的递归限制。我的计算机没有崩溃,但生成此错误:

Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N) to change the limit. Be aware that exceeding your available stack space can crash MATLAB and/or your computer.

解决此问题的方法是重写 floodFill,使其不使用递归。有一些alternative algorithms on Wikipedia .

还有:aardvarkk's answer对 Matlab 的 column-major 提出了一个重要观点索引。您可以通过交换所有 x 和 y 变量来修复函数。

关于matlab - 使用 matlab 进行洪水填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14238083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com