Matlab二值圖像柵格化和圓域範圍框定

本文以2017年華爲杯數學建模A題中震區高程數據,實現對海拔高於3000m的震區做閾值截斷,將海拔大於等於3000m的地區賦予新值255,將海拔小於3000m地區賦予新值0,從而獲得震區3000m海拔高度下的二值圖像。震區圖和3000m海拔高度下的二值圖像分別如圖1,圖2 所示:
在這裏插入圖片描述
··················································圖1 震區三維高程地形圖

在這裏插入圖片描述
··················································圖2 震區3000m海拔高度下的二值圖像

1.給二值圖像添加網格線(輔助線)或叫柵格化:
在這裏插入圖片描述
2.在1的基礎之上對圓域範圍框定:
在這裏插入圖片描述

代碼:

% 重要參數設置
r = 69;
c = [252,323]
max(c(1)-r,1)
min(c(1)+r,n)
max(c(2)-r,1)
min(c(2)+r,m)
% 二值圖像中顯示出障礙區域大小
I=imread('qq.bmp');
I=rgb2gray(I);
[m,n] = size(I);
imshow(I)
hold on %向圖上添加元素的命令

% 畫輔助線
g = 20;
vX = [(g:g:n);(g:g:n)];
vY = [vX(1,:)*0+1;vX(2,:)*0+m];
hY = [(g:g:m);(g:g:m)];
hX = [hY(1,:)*0+1;hY(2,:)*0+n];
% line(vX,vY,'Color',[0.35,0.35,0.35])
% line(hX,hY,'Color',[0.35,0.35,0.35])
line(vX,vY,'Color',[0,0,0])
line(hX,hY,'Color',[0,0,0])


%% 圖上畫圓圈指定範圍
%添加圓心
plot(c(1),c(2),'marker','*','markersize',3);%圓心(100,100)
%畫出圓周即圓圈
t=0:.01:2*pi;
x11=c(1)+r*cos(t);%12.692爲半徑,cx=100
y11=c(2)+r*sin(t);%12.692爲半徑,cy=100
plot(x11,y11);
%% 圖上對圓圈內白色區域上色:可以用於標識障礙物,無人機需要繞飛
hold on
R=r^2;
%二值圖像維度
% for i=max(c(1)-r,1):min(c(1)+r,n) %第1個最大,第n個最小
%     for j=max(c(2)-r,1):min(c(2)+r,m)
for i=max(c(1)-r):min(c(1)+r) %第1個最大,第n個最小
    for j=max(c(2)-r):min(c(2)+r)
        %matlab中的條件 && 表示 and || 表示 or 至於一個 & 和 | 是邏輯操作運算
        %圓內白色區域上色:判定條件是圓域內&&二值圖像像素值爲255表示白色。
        if ((abs(i-c(1)))^2+(abs(j-c(2)))^2<R&&I(j,i)==255)  %圓內
            plot(i,j,'g.');
        end
    end
end
% hold on;
% rectangle('Position',[max(c(1)-r,1),min(c(1)+r,n),max(c(2)-r,1),min(c(2)+r,m)],'facecolor','w'),%中心點A
%'doc  rectangle : Curvature',[1,1] 畫出來是個圓形
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章