基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真

1.程序功能描述

      基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真,输入一张平面建筑群的地图,然后通过机器视觉识别地图里面的障碍物,然后通过dijkstra算法搜索路径。

2.测试软件版本以及运行结果展示

MATLAB2022A版本运行


3.核心程序

% 读取图片

% 从文件'map.jpg' 中读取图像并存储在 Maps 变量中

Maps = imread('map2.jpg');

% 将读取的图像存储到 Maps0 中,可能用于后续的比较或其他操作

Maps0 = Maps;

% 创建一个新的图形窗口

figure;

% 显示图像 Maps

imshow(Maps);

% 为图像添加标题为 '建筑群平面图'

title('建筑群平面图');

% 鼠标点击起点

% 等待用户按下鼠标按钮

waitforbuttonpress;

% 获取当前鼠标点击位置的坐标

point  = get(gca,'CurrentPoint');

% 将鼠标点击的坐标四舍五入并加 1 存储在 S1 中,作为起点

S1    = round(point(1, 1:2)) + 1;

.....................................................................

Path_search(:,3:4)      = 1;

% 显示结果

% 定义显示路径的颜色

clor=[0,0,255];

% 如果原始图像是单通道,将其复制为三通道

if size(Maps0, 3) == 1

    Maps0 = double(repmat(Maps0, [1,1,3]));

end

% 分离原始图像的 RGB 通道

R = Maps0(:, :, 1);

G = Maps0(:, :, 2);

B = Maps0(:, :, 3);

% 将地图遮罩部分的颜色设置为定义的颜色

R(map_mask) = clor(1);

G(map_mask) = clor(2);

B(map_mask) = clor(3);

% 合并修改后的 RGB 通道

Maps0 = cat(3, R, G, B);

% 在图像上添加路径形状

Maps0 = insertShape(Maps0, 'Rectangle', Path_search, 'Color', [255,0,0], 'LineWidth', 4);

Maps0 = insertShape(Maps0, 'Rectangle', Path_search(1, :), 'Color', [0,255,0], 'LineWidth', 20);

Maps0 = insertShape(Maps0, 'Rectangle', Path_search(end, :), 'Color', [255,155,0], 'LineWidth', 20);

% 创建一个新的图形窗口显示结果

figure;

imshow(Maps0);

% 为结果图像添加标题,显示路线规划结果和路径长度,此处可能存在错误,因为 dist 变量在前面未定义,可将 dist 的计算添加到 Dijkstra 算法中

title(['路线规划结果,路线长度:',num2str(dist)]);

4.本算法原理

      利用高清摄像头等设备,从不同角度对平面建筑群进行拍摄,获取连续的图像序列。这些图像需覆盖目标区域,确保采集到所有建筑、道路及相关地标信息,为后续处理提供丰富原始素材。通过图像预处理,如灰度化、滤波降噪等操作后,运用边缘检测算法(如 Canny 边缘检测)识别建筑轮廓、道路边界等显著特征。同时,结合纹理分析、形状识别技术区分不同建筑类型、路口形态,将视觉图像转化为可供算法处理的结构化特征数据。机器视觉用于获取和处理地图图像信息,将现实场景中的平面建筑群地图转换为计算机能够理解和处理的数据形式。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容