基于機器視覺和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 邊緣檢測)識別建筑輪廓、道路邊界等顯著特征。同時,結合紋理分析、形狀識別技術區分不同建筑類型、路口形態,將視覺圖像轉化為可供算法處理的結構化特征數據。機器視覺用于獲取和處理地圖圖像信息,將現實場景中的平面建筑群地圖轉換為計算機能夠理解和處理的數據形式。
