⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 分水岭算法源码.txt

📁 分水岭算法源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                                if(*(image_out+*(image_mask+l*xsize+k)) == -1)

                                {
                                    *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                        }
                        else
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)-xsize+1) == MASK && *(image_d+*(image_mask+l*xsize+k)-xsize+1) == 0)
                            {
                                *(image_d+*(image_mask+l*xsize+k)-xsize+1) = Current_Dist+1;
                                {
                                   QU->rear = (QU->rear+1)%SIZE;
                                   QU->q[QU->rear] = *(image_mask+l*xsize+k)-xsize+1;
                                }
                            }
                        }

                        //中上点
                        if(*(image_d+*(image_mask+l*xsize+k)-1)<Current_Dist && (*(image_out+*(image_mask+l*xsize+k)-1)>0 || *(image_out+*(image_mask+l*xsize+k)-1) == WSHED))
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)-1) >0)
                            {
                                if(*(image_out+*(image_mask+l*xsize+k)) == MASK || *(image_out+*(image_mask+l*xsize+k)) == WSHED)
                                    *(image_out+*(image_mask+l*xsize+k)) = *(image_out+*(image_mask+l*xsize+k)-1);
                                else
                                {
                                    if(*(image_out+*(image_mask+l*xsize+k)) != *(image_out+*(image_mask+l*xsize+k)-1))
                                        *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                            else
                            {
                                if(*(image_out+*(image_mask+l*xsize+k)) == -1)

                                {
                                    *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                        }
                        else
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)-1) == MASK && *(image_d+*(image_mask+l*xsize+k)-1) == 0)
                            {
                                *(image_d+*(image_mask+l*xsize+k)-1) = Current_Dist+1;
                                {
                                   QU->rear = (QU->rear+1)%SIZE;
                                   QU->q[QU->rear] = *(image_mask+l*xsize+k)-1;
                                }
                            }
                        }

                        //中下点
                        if(*(image_d+*(image_mask+l*xsize+k)+1)<Current_Dist && (*(image_out+*(image_mask+l*xsize+k)+1)>0 || *(image_out+*(image_mask+l*xsize+k)+1) == WSHED))
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)+1) >0)
                            {
                                if(*(image_out+*(image_mask+l*xsize+k)) == MASK || *(image_out+*(image_mask+l*xsize+k)) == WSHED)
                                    *(image_out+*(image_mask+l*xsize+k)) = *(image_out+*(image_mask+l*xsize+k)+1);
                                else
                                {
                                    if(*(image_out+*(image_mask+l*xsize+k)) != *(image_out+*(image_mask+l*xsize+k)+1))
                                        *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                            else
                            {
                                if(*(image_out+*(image_mask+l*xsize+k)) == -1)

                                {
                                    *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                        }
                        else
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)+1) == MASK && *(image_d+*(image_mask+l*xsize+k)+1) == 0)
                            {
                                *(image_d+*(image_mask+l*xsize+k)+1) = Current_Dist+1;
                                {
                                   QU->rear = (QU->rear+1)%SIZE;
                                   QU->q[QU->rear] = *(image_mask+l*xsize+k)+1;
                                }
                            }
                        }

                        //右上点
                        if(*(image_d+*(image_mask+l*xsize+k)+xsize-1)<Current_Dist && (*(image_out+*(image_mask+l*xsize+k)+xsize-1)>0 || *(image_out+*(image_mask+l*xsize+k)+xsize-1) == WSHED))
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)+xsize-1) >0)
                            {
                                if(*(image_out+*(image_mask+l*xsize+k)) == MASK || *(image_out+*(image_mask+l*xsize+k)) == WSHED)
                                    *(image_out+*(image_mask+l*xsize+k)) = *(image_out+*(image_mask+l*xsize+k)+xsize-1);
                                else
                                {
                                    if(*(image_out+*(image_mask+l*xsize+k)) != *(image_out+*(image_mask+l*xsize+k)+xsize-1))
                                        *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                            else
                            {
                                if(*(image_out+*(image_mask+l*xsize+k)) == -1)

                                {
                                    *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                        }
                        else
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)+xsize-1) == MASK && *(image_d+*(image_mask+l*xsize+k)+xsize-1) == 0)
                            {
                                *(image_d+*(image_mask+l*xsize+k)+xsize-1) = Current_Dist+1;
                                {
                                   QU->rear = (QU->rear+1)%SIZE;
                                   QU->q[QU->rear] = *(image_mask+l*xsize+k)+xsize-1;
                                }
                            }
                        }

                        //右中点
                        if(*(image_d+*(image_mask+l*xsize+k)+xsize)<Current_Dist && (*(image_out+*(image_mask+l*xsize+k)+xsize)>0 || *(image_out+*(image_mask+l*xsize+k)+xsize) == WSHED))
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)+xsize) >0)
                            {
                                if(*(image_out+*(image_mask+l*xsize+k)) == MASK || *(image_out+*(image_mask+l*xsize+k)) == WSHED)
                                    *(image_out+*(image_mask+l*xsize+k)) = *(image_out+*(image_mask+l*xsize+k)+xsize);
                                else
                                {
                                    if(*(image_out+*(image_mask+l*xsize+k)) != *(image_out+*(image_mask+l*xsize+k)+xsize))
                                        *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                            else
                            {
                                if(*(image_out+*(image_mask+l*xsize+k)) == -1)

                                {
                                    *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                        }
                        else
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)+xsize) == MASK && *(image_d+*(image_mask+l*xsize+k)+xsize) == 0)
                            {
                                *(image_d+*(image_mask+l*xsize+k)+xsize) = Current_Dist+1;
                                {
                                   QU->rear = (QU->rear+1)%SIZE;
                                   QU->q[QU->rear] = *(image_mask+l*xsize+k)+xsize;
                                }
                            }
                        }

                        //右下点
                        if(*(image_d+*(image_mask+l*xsize+k)+xsize+1)<Current_Dist && (*(image_out+*(image_mask+l*xsize+k)+xsize+1)>0 || *(image_out+*(image_mask+l*xsize+k)+xsize+1) == WSHED))
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)+xsize+1) >0)
                            {
                                if(*(image_out+*(image_mask+l*xsize+k)) == MASK || *(image_out+*(image_mask+l*xsize+k)) == WSHED)
                                    *(image_out+*(image_mask+l*xsize+k)) = *(image_out+*(image_mask+l*xsize+k)+xsize+1);
                                else
                                {
                                    if(*(image_out+*(image_mask+l*xsize+k)) != *(image_out+*(image_mask+l*xsize+k)+xsize+1))
                                        *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                            else
                            {
                                if(*(image_out+*(image_mask+l*xsize+k)) == -1)

                                {
                                    *(image_out+*(image_mask+l*xsize+k)) = WSHED;
                                }
                            }
                        }
                        else
                        {
                            if(*(image_out+*(image_mask+l*xsize+k)+xsize+1) == MASK && *(image_d+*(image_mask+l*xsize+k)+xsize+1) == 0)
                            {
                                *(image_d+*(image_mask+l*xsize+k)+xsize+1) = Current_Dist+1;
                                {
                                   QU->rear = (QU->rear+1)%SIZE;
                                   QU->q[QU->rear] = *(image_mask+l*xsize+k)+xsize+1;
                                }
                            }
                        }


                    }
                }

                //对于当前层为h的节点p
                for(x = 1;x<xsize-1;x++)
                    for(y = 1;y<ysize-1;y++)
                    {
                        if(*(image_in+*(image_mask+y*xsize+x)) == h)
                        {
                            *(image_d+*(image_mask+y*xsize+x)) = 0;
                            if(*(image_out+*(image_mask+y*xsize+x)) != MASK)
                            {
                                Current_Label++;
                                {
                                   QU->rear = (QU->rear+1)%SIZE;
                                   QU->q[QU->rear] = *(image_mask+y*xsize+x);
                                }
                                *(image_out+*(image_mask+y*xsize+x)) = Current_Label;
                                
                                //如果队列不空
                                if(QU->front != QU->rear)
                                {

                                    //队列中第一个节点移出给p'
                                    {
                                        QU->front = (QU->front+1)%SIZE;                                
                                         p2  =QU->q[QU->front];
                                    }
                                    int a[8] = {0};
                                    a[0] = -xsize-1;
                                    a[1] = -xsize;
                                    a[2] = -xsize+1;
                                    a[3] = -1;
                                    a[4] = 1;
                                    a[5] = xsize-1;
                                    a[6] = xsize;
                                    a[7] = xsize+1;
                                    for(int z = 0;z<8;z++)
                                    {
                                        //如果p''仍属于当前层节点且未标记
                                        if(*(image_in+p2+a[z]) == h && *(image_out+p2+a[z]) != MASK)
                                        {
                                            {
                                              QU->rear = (QU->rear+1)%SIZE;
                                              QU->q[QU->rear] = p2+a[z];
                                            }
                                            *(image_out+p2+a[z]) = Current_Label;
                                        }
                                    }
                                }
                            }
                        }
                    }

            
            }

            else
            {
                h = *(image_in+*(image_mask+l*xsize+k));
                goto label1;

            }

      }
      

    delete[] QU;
}

⌨️ 快捷键说明

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