addgrid.m

来自「用于对天文图像进行去噪和探测」· M 代码 · 共 270 行

M
270
字号
%AddGrid.m
%作者:韦海萍;
%日期:2007-8-22;
%用途:根据给定的目标位置,在输入图像中加跟踪框;

function  [ImageOut]=AddGrid(I, Height, Width, Xlabel, Ylabel)

if isempty(Xlabel)==0
    for num=1:size(Xlabel,2)
        Line=Xlabel(num);
        Column=Ylabel(num);
        %------------- 中心区域  -----------------------
        if Line>20 && Line<=Height-20 && Column>20 && Column<=Width-20
            %------------- 竖线 ---------------------
            for i=Line-20:Line+20
                for j=0:2
                    I(i,Column-20+j)=1;
                    I(i,Column+20-j)=1;
                end
            end
            for i=Line-17:Line+17
                for j=0:2
                    I(i,Column-17+j)=65535;
                    I(i,Column+17-j)=65535;
                end
            end
            %-------------- 横线 -----------------------
            for j=Column-20:Column+20
                for i=0:2
                    I(Line-20+i,j)=1;
                    I(Line+20-i,j)=1;
                end
            end
            for j=Column-17:Column+17
                for i=0:2
                    I(Line-17+i,j)=65535;
                    I(Line+17-i,j)=65535;
                end
            end
            %--------------- 左边缘 -------------------------
        elseif Line>20 && Line<=Height-20 && Column<=20
            %-------------- 竖线 ----------------------
            for i=Line-20:Line+20
                for j=0:2
                    I(i,j+1)=1;
                    I(i,Column+20-j)=1;
                end
            end
            for i=Line-17:Line+17
                for j=0:2
                    I(i,j+4)=65535;
                    I(i,Column+17-j)=65535;
                end
            end
            %-------------- 横线 -----------------------
            for j=1:Column+20
                for i=0:2
                    I(Line-20+i,j)=1;
                    I(Line+20-i,j)=1;
                end
            end
            for j=4:Column+17
                for i=0:2
                    I(Line-17+i,j)=65535;
                    I(Line+17-i,j)=65535;
                end
            end
            %------------------- 右边缘 -----------------------------
        elseif  Line>20 && Line<=Height-20 && Column>Width-20
            %------------- 竖线 ---------------------
            for i=Line-20:Line+20
                for j=0:2
                    I(i,Column-20+j)=1;
                    I(i,Width-j)=1;
                end
            end
            for i=Line-17:Line+17
                for j=0:2
                    I(i,Column-17+j)=65535;
                    I(i,Width-3-j)=65535;
                end
            end
            %-------------- 横线 -----------------------
            for j=Column-20:Width
                for i=0:2
                    I(Line-20+i,j)=1;
                    I(Line+20-i,j)=1;
                end
            end
            for j=Column-17:Width-3
                for i=0:2
                    I(Line-17+i,j)=65535;
                    I(Line+17-i,j)=65535;
                end
            end
            %------------------- 上边缘 -----------------------------
        elseif  Line<=20 && Column>20 && Column<=Width-20
            %------------- 竖线 ---------------------
            for i=1:Line+20
                for j=0:2
                    I(i,Column-20+j)=1;
                    I(i,Column+20-j)=1;
                end
            end
            for i=4:Line+17
                for j=0:2
                    I(i,Column-17+j)=65535;
                    I(i,Column+17-j)=65535;
                end
            end
            %-------------- 横线 -----------------------
            for j=Column-20:Column+20
                for i=0:2
                    I(i+1,j)=1;
                    I(Line+20-i,j)=1;
                end
            end
            for j=Column-17:Column+17
                for i=0:2
                    I(i+4,j)=65535;
                    I(Line+17-i,j)=65535;
                end
            end
            %------------- 下边缘  -----------------------
        elseif Line>Height-20 && Column>20 && Column<=Width-20
            %------------- 竖线 ---------------------
            for i=Line-20:Height
                for j=0:2
                    I(i,Column-20+j)=1;
                    I(i,Column+20-j)=1;
                end
            end
            for i=Line-17:Height-3
                for j=0:2
                    I(i,Column-17+j)=65535;
                    I(i,Column+17-j)=65535;
                end
            end
            %-------------- 横线 -----------------------
            for j=Column-20:Column+20
                for i=0:2
                    I(Line-20+i,j)=1;
                    I(Height-i,j)=1;
                end
            end
            for j=Column-17:Column+17
                for i=0:2
                    I(Line-17+i,j)=65535;
                    I(Height-3-i,j)=65535;
                end
            end
            %------------- 左上角  -----------------------
        elseif Line<=20 && Column<=20
            %------------- 竖线 ---------------------
            for i=1:Line+20
                for j=0:2
                    I(i,j+1)=1;
                    I(i,Column+20-j)=1;
                end
            end
            for i=4:Line+17
                for j=0:2
                    I(i,j+4)=65535;
                    I(i,Column+17-j)=65535;
                end
            end
            %-------------- 横线 -----------------------
            for j=1:Column+20
                for i=0:2
                    I(i+1,j)=1;
                    I(Line+20-i,j)=1;
                end
            end
            for j=4:Column+17
                for i=0:2
                    I(i+4,j)=65535;
                    I(Line+17-i,j)=65535;
                end
            end
            %------------- 右上角  -----------------------
        elseif Line<=20  && Column>Width-20
            %------------- 竖线 ---------------------
            for i=1:Line+20
                for j=0:2
                    I(i,Column-20+j)=1;
                    I(i,Width-j)=1;
                end
            end
            for i=4:Line+17
                for j=0:2
                    I(i,Column-17+j)=65535;
                    I(i,Width-3-j)=65535;
                end
            end
            %-------------- 横线 -----------------------
            for j=Column-20:Width
                for i=0:2
                    I(i+1,j)=1;
                    I(Line+20-i,j)=1;
                end
            end
            for j=Column-17:Width-3
                for i=0:2
                    I(i+4,j)=65535;
                    I(Line+17-i,j)=65535;
                end
            end
            %------------- 左下角 -----------------------
        elseif Line>Height-20 && Column<=20
            %------------- 竖线 ---------------------
            for i=Line-20:Height
                for j=0:2
                    I(i,j+1)=1;
                    I(i,Column+20-j)=1;
                end
            end
            for i=Line-17:Height-3
                for j=0:2
                    I(i,j+4)=65535;
                    I(i,Column+17-j)=65535;
                end
            end
            %-------------- 横线 -----------------------
            for j=1:Column+20
                for i=0:2
                    I(Line-20+i,j)=1;
                    I(Height-i,j)=1;
                end
            end
            for j=4:Column+17
                for i=0:2
                    I(Line-17+i,j)=65535;
                    I(Height-3-i,j)=65535;
                end
            end
            %------------- 右下角  -----------------------
        elseif Line>Height-20 && Column>Width-20
            %------------- 竖线 ---------------------
            for i=Line-20:Height
                for j=0:2
                    I(i,Column-20+j)=1;
                    I(i,Width-j)=1;
                end
            end
            for i=Line-17:Height-3
                for j=0:2
                    I(i,Column-17+j)=65535;
                    I(i,Width-3-j)=65535;
                end
            end
            %-------------- 横线 -----------------------
            for j=Column-20:Width
                for i=0:2
                    I(Line-20+i,j)=1;
                    I(Height-i,j)=1;
                end
            end
            for j=Column-17:Width-3
                for i=0:2
                    I(Line-17+i,j)=65535;
                    I(Height-3-i,j)=65535;
                end
            end
        end
    end
    ImageOut=uint16(I);
else
    ImageOut=uint16(I);    
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?