日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

种子点生长算法下——三维种子点生长

發(fā)布時間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 种子点生长算法下——三维种子点生长 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上一篇文章“二維種子點生長研究”介紹了二維種子點生長,對于平面圖像,二維種子點生長其實很容易理解,其典型應用是“油漆桶”。例如在一個具有多片聯(lián)通區(qū)域的二維圖上,我們能用油漆桶尋找所需要的單片聯(lián)通區(qū)域。

  至于三維種子點生長,其目的與二維種子點生長一樣,都是要找出圖像中的聯(lián)通區(qū)域。三維圖像由于其多了一維,所以三維的聯(lián)通區(qū)域就不太好用二維圖片來查看了。關于三位圖片的介紹可以參考第一篇“圖像數(shù)據的組織方式。不過借助一些三維可視化軟件,如ParaView,我們也可以觀察三維圖像的內容。

  下面的圖片是顯示在ParaView下打開一張三維圖片Lobster.raw的結果,我們通過調節(jié)不同體素值的透明度,就能凸顯出三維圖像中所需要關心的內容。

圖像預覽
像素透明度曲線

  從上圖看,由于三維圖像本身是個長方體,各個像素有自己的顏色,所以只能看到外表面的樣子。順便提一下,在三維圖像中,我們一般不使用“像素”這個詞,而是使用“體素”來形容組成圖像的這些單元。我們可以使用ParaView體繪制屬性中調節(jié)透明度的選項,把一部分值較小的體素設為透明,就能看到這個三維圖像中,值較大的體素就像一個個小磚頭一樣堆成了一個龍蝦的形狀。也就是說,如果我們在這些體素中找一個種子點,利用三維圖像種子點生長算法,就能找到所有組成這個龍蝦的體素。

  上一篇文章已經介紹了二維種子點生長算法的相關知識,介紹了三種種子點生長算法—泛洪法、掃描線法和區(qū)段法,并在最后分析了他們的性能。本文的核心部分是三維種子點點生長的討論,也就是把上一篇文章的算法擴展到三維,那么本文也按照相同的結構來說明這三種算法是如何擴展到三維的。

  • 泛洪法
  • 掃描線法
  • 區(qū)段法
  • 算法分析與實驗
  • 一、泛洪法

      泛洪法的基本思想上篇文章詳細介紹過,在三維圖像中,需要擴展的主要是鄰域的范圍。鄰域從二維擴展到三維后,就不再是四鄰域和八鄰域而是六鄰域和二十六鄰域。示意圖如下:

      其中綠色的點表示為當前點(藍色點)的6鄰域,綠色+紅色的點為這個像素的26鄰域。

      對于三維點P,P的6鄰域可以表示為:

        S=Adj6(P)={P0(P.X-1,P.Y,P.Z),P1(P.X+1,P.Y,P.Z),P2(P.X,P.Y-1,P.Z),P3(P.X,P.Y+1P.Z),P4(P.X,P.Y,P.Z-1),P5(P.X,P.Y,P.Z+1)}。

      P的26鄰域可以表示為:

        S=Adj26(P)={P0(P.X-1,P.Y,P.Z),P1(P.X+1,P.Y,P.Z),P2(P.X,P.Y-1,P.Z),P3(P.X,P.Y+1,P.Z),

                P4(P.X-1,P.Y-1,P.Z),P5(P.X+1,P.Y+1,P.Z),P6(P.X+1,P.Y-1,P.Z),P7(P.X-1,P.Y+1,P.Z),

                P8(P.X-1,P.Y-1,P.Z-1),P9(P.X+1,P.Y+1,P.Z-1),P10(P.X+1,P.Y-1,P.Z-1),P11(P.X-1,P.Y+1,P.Z-1)

                P12(P.X,P.Y-1,P.Z-1),P13(P.X,P.Y+1,P.Z-1),P14(P.X+1,P.Y,P.Z-1),P15(P.X-1,P.Y,P.Z-1),

                P16(P.X,P.Y,P.Z-1),P17(P.X,P.Y,P.Z+1),P18(P.X+1,P.Y-1,P.Z+1),P19(P.X-1,P.Y+1,P.Z+1),

                P20(P.X-1,P.Y-1,P.Z+1),P21(P.X+1,P.Y+1,P.Z+1),P22(P.X,P.Y-1,P.Z+1),P23(P.X,P.Y+1,P.Z+1)

                P24(P.X-1,P.Y,P.Z+1),P25(P.X+1,P.Y,P.Z+1)}。

      那么實際上,三維泛洪法采用和二維泛洪法一樣的邏輯。

    FloodFill(seed,bitmap,includePredicate,process)set all postions of flagMap to falseset container Q to empty.push seed into Qset seed position in flagMap to trueprocess(seed)while Q is not emptypop a point P from Qforeach point T in Adj(P)if includePredicate(T) is trueset position of T in flagMap to truepush T into Qprocess(T)end

      注意在三維的情況下,相應的點類、圖像類、位圖標記表類等基礎數(shù)據結構都需要分別增加一維。相應類的c#定義如下:

    public struct Int16Triple{public int X;public int Y;public int Z;public Int16Triple(int x, int y,int z){X = x;Y = y;Z = z;}}public class BitMap3d{public const byte WHITE = 255;public const byte BLACK = 0;public byte[] data;public int width;public int height;public int depth;public BitMap3d(int width, int height,int depth, byte v){this.width = width;this.height = height;this.depth = depth;data = new byte[width * height * depth];for (int i = 0; i < width * height*depth; i++)data[i] = v;}public BitMap3d(byte[] data, int width, int height,int depth){this.data = data;this.width = width;this.height = height;this.depth = depth;}public void SetPixel(int x, int y,int z,byte v){data[x + y * width+z*width*height] = v;}public byte GetPixel(int x, int y,int z){return data[x + y * width+z*width*height];}public void ReadRaw(string path){FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);fs.Read(data, 0, width*height*depth);fs.Close();}public void SaveRaw(string path){FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);fs.Write(data, 0, data.Length);fs.Close();}}public class FlagMap3d{public int width;public int height;public int depth;BitArray flags;public FlagMap3d(int width, int height,int depth){this.width = width;this.height = height;this.depth = depth;flags = new BitArray(width * height*depth, false);}public void SetFlagOn(int x, int y, int z,bool v){flags[x + y * width+z*width*height] = v;}public bool GetFlagOn(int x, int y,int z){return flags[x + y * width+z*width*height];} }

      相應實現(xiàn)的c#代碼如下:

    class FloodFill3d{protected BitMap3d bmp;protected FlagMap3d flagsMap;protected Container<Int16Triple> container;protected int count = 0;public byte min;public byte max;protected bool IncludePredicate(Int16Triple p){byte v = bmp.GetPixel(p.X, p.Y, p.Z);return v > min && v < max;}protected void Process(Int16Triple p){count++;return;}protected virtual void ExcuteFloodFill(BitMap3d data, Int16Triple seed){this.bmp = data;data.ResetVisitCount();flagsMap = new FlagMap3d(data.width, data.height,data.depth);Int16Triple[] adjPoints6 = new Int16Triple[6];flagsMap.SetFlagOn(seed.X, seed.Y, seed.Z,true);container.Push(seed);Process(seed);while (!container.Empty()){Int16Triple p = container.Pop();InitAdj6(ref adjPoints6, ref p);for (int adjIndex = 0; adjIndex < 6; adjIndex++){Int16Triple t = adjPoints6[adjIndex];if (t.X < data.width && t.X >= 0 && t.Y < data.height && t.Y >= 0&&t.Z<data.depth&&t.Z>=0){if (!flagsMap.GetFlagOn(t.X, t.Y,t.Z) && IncludePredicate(t)){flagsMap.SetFlagOn(t.X, t.Y,t.Z, true);container.Push(t);Process(t);}}}}return;}protected void InitAdj6(ref Int16Triple[] adjPoints6, ref Int16Triple p){adjPoints6[0].X = p.X - 1;adjPoints6[0].Y = p.Y;adjPoints6[0].Z = p.Z;adjPoints6[1].X = p.X + 1;adjPoints6[1].Y = p.Y;adjPoints6[1].Z = p.Z;adjPoints6[2].X = p.X;adjPoints6[2].Y = p.Y - 1;adjPoints6[2].Z = p.Z;adjPoints6[3].X = p.X;adjPoints6[3].Y = p.Y + 1;adjPoints6[3].Z = p.Z;adjPoints6[4].X = p.X;adjPoints6[4].Y = p.Y;adjPoints6[4].Z = p.Z-1;adjPoints6[5].X = p.X;adjPoints6[5].Y = p.Y;adjPoints6[5].Z = p.Z+1;}}

    二、掃描線法

      二維的掃描線法,是從一個點彈出堆棧后,對其左右掃描出兩個端點,然后再對端點范圍的兩側即Y-1和Y+1方向進行CheckRange。算法拓展到三維,只需增加檢查Z-1和Z+1方向即可。也就是“兩側”變成了“四側”,即:

  • (xleft,p.Y-1,p.Z)~(xright,p.Y-1,p.Z)
  • (xleft,p.Y+1,p.Z)~(xright,p.Y+1,p.Z)
  • (xleft,p.Y,p.Z-1)~(xright,p.Y,p.Z-1)
  • (xleft,p.Y,p.Z+1)~(xright,p.Y,p.Z+1)
  •   掃描這四條線等價于6向泛洪法,假如掃描下面八條線,就相當于26向泛洪法

  • (xleft-1,p.Y-1,p.Z)~(xright+1,p.Y-1,p.Z)
  • (xleft-1,p.Y+1,p.Z)~(xright+1,p.Y+1,p.Z)
  • (xleft-1,p.Y,p.Z-1)~(xright+1,p.Y,p.Z-1)
  • (xleft-1,p.Y,p.Z+1)~(xright+1,p.Y,p.Z+1)
  • (xleft-1,p.Y-1,p.Z-1)~(xright+1,p.Y-1,p.Z-1)
  • (xleft-1,p.Y+1,p.Z+1)~(xright+1,p.Y+1,p.Z+1)
  • (xleft-1,p.Y+1,p.Z-1)~(xright+1,p.Y+1,p.Z-1)
  • (xleft-1,p.Y-1,p.Z+1)~(xright+1,p.Y-1,p.Z+1)
  •   掃描線法拓展到三維,基本操作FindXleft,FindXright,CheckRange分別修改至相應的三維即可。其作用沒有任何變化。

      下面是三維掃描線線的c#代碼:

    class ScanlineFill3d{protected int count = 0;protected Container<Int16Triple> container;//這個容器可以是Queue和Stack中任意一種,這里抽象成一個Containerprotected BitMap3d bmp;public FlagMap3d flagsMap;protected virtual void ExcuteScanlineFill(BitMap3d data, Int16Triple seed){this.bmp = data;data.ResetVisitCount();flagsMap = new FlagMap3d(data.width, data.height, data.depth);flagsMap.SetFlagOn(seed.X, seed.Y, seed.Z, true);container.Push(seed);Process(seed);while (!container.Empty()){Int16Triple p = container.Pop();int xleft = FindXLeft(p);int xright = FindXRight(p);if (p.Y - 1 >= 0)CheckRange(xleft, xright, p.Y - 1, p.Z);if (p.Y + 1 < data.height)CheckRange(xleft, xright, p.Y + 1, p.Z);if (p.Z - 1 >= 0)CheckRange(xleft, xright, p.Y, p.Z - 1);if (p.Z + 1 < data.depth)CheckRange(xleft, xright, p.Y, p.Z + 1);}}//該函數(shù)為掃描線法主體protected void CheckRange(int xleft, int xright, int y, int z){for (int i = xleft; i <= xright; ){if ((!flagsMap.GetFlagOn(i, y, z)) && IncludePredicate(i, y, z)){int rb = i + 1;while (rb <= xright && (!flagsMap.GetFlagOn(rb, y, z)) && IncludePredicate(rb, y, z)){rb++;}rb--;Int16Triple t = new Int16Triple(rb, y, z);flagsMap.SetFlagOn(rb, y, z, true);container.Push(t);Process(t);i = rb + 1;}else{i++;}}}//CheckRange操作protected int FindXLeft(Int16Triple p){int xleft = p.X - 1;while (true){if (xleft == -1 || flagsMap.GetFlagOn(xleft, p.Y, p.Z)){break;}else{byte value = bmp.GetPixel(xleft, p.Y, p.Z);if (IncludePredicate(xleft, p.Y, p.Z)){Int16Triple t = new Int16Triple(xleft, p.Y, p.Z);flagsMap.SetFlagOn(xleft, p.Y, p.Z, true);Process(t);xleft--;}else{break;}}}return xleft + 1;}//FindXLeft操作protected int FindXRight(Int16Triple p){int xright = p.X + 1;while (true){if (xright == bmp.width || flagsMap.GetFlagOn(xright, p.Y, p.Z)){break;}else{byte value = bmp.GetPixel(xright, p.Y, p.Z);if (IncludePredicate(xright, p.Y, p.Z)){Int16Triple t = new Int16Triple(xright, p.Y, p.Z);flagsMap.SetFlagOn(xright, p.Y, p.Z, true);Process(t);xright++;}else{break;}}}return xright - 1;}//FindXRight操作public byte min;public byte max;protected bool IncludePredicate(int x,int y,int z){byte v = bmp.GetPixel(x, y,z);return v > min && v < max;}protected void Process(Int16Triple p){count++;}}

    三、區(qū)段法

      區(qū)段法擴展到三維也遵循和掃描線法一樣的原則,相應的基本操作FindXleft,FindXright,CheckRange需要分別修改到三維的情況。同時在主函數(shù)邏輯中,監(jiān)測相應的相鄰區(qū)段時要注意ParentDirection所指示的父區(qū)段的特殊性。

      下面是三維區(qū)段法的C#代碼:

    enum ParentDirections{Y0 = 1, Y2 = 2,Z0=3,Z2=4, Non = 5}enum ExtendTypes{LeftRequired = 1, RightRequired = 2, AllRez = 3, UnRez = 4}struct Span{public int XLeft;public int XRight;public int Y;public int Z;public ExtendTypes Extended;public ParentDirections ParentDirection;}class SpanFill3d{protected int count = 0;protected BitMap3d bmp;public FlagMap3d flagsMap;protected Container<Span> container;//以Span為單位的Queue或Stack容器protected virtual void ExcuteSpanFill(BitMap3d data, Int16Triple seed){this.bmp = data;data.ResetVisitCount();flagsMap = new FlagMap3d(data.width, data.height,data.depth);Process(seed);flagsMap.SetFlagOn(seed.X, seed.Y,seed.Z, true);Span seedspan = new Span();seedspan.XLeft = seed.X;seedspan.XRight = seed.X;seedspan.Y = seed.Y;seedspan.Z = seed.Z;seedspan.ParentDirection = ParentDirections.Non;seedspan.Extended = ExtendTypes.UnRez;container.Push(seedspan);while (!container.Empty()){Span span = container.Pop();#region AllRezif (span.Extended == ExtendTypes.AllRez){if (span.ParentDirection == ParentDirections.Y2){if (span.Y - 1 >= 0)//[spx-spy,y-1,z]CheckRange(span.XLeft, span.XRight, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Z - 1 >= 0)//[spx-spy,y,z-1]CheckRange(span.XLeft, span.XRight, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < data.depth)//[spx-spy,y,z+1]CheckRange(span.XLeft, span.XRight, span.Y, span.Z + 1, ParentDirections.Z0);continue;}if (span.ParentDirection == ParentDirections.Y0){if (span.Y + 1 < bmp.height)//[spx-spy,y+1,z]CheckRange(span.XLeft, span.XRight, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z - 1 > 0)//[spx-spy,y,z-1]CheckRange(span.XLeft, span.XRight, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < data.depth)//[spx-spy,y,z+1]CheckRange(span.XLeft, span.XRight, span.Y, span.Z + 1, ParentDirections.Z0);continue;}if (span.ParentDirection == ParentDirections.Z2){if (span.Y - 1 >= 0)//[spx-spy,y-1,z]CheckRange(span.XLeft, span.XRight, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height)//[spx-spy,y+1,z]CheckRange(span.XLeft, span.XRight, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z - 1 >= 0)//[spx-spy,y,z-1]CheckRange(span.XLeft, span.XRight, span.Y, span.Z - 1, ParentDirections.Z2);continue;}if (span.ParentDirection == ParentDirections.Z0){if (span.Y - 1 >= 0)CheckRange(span.XLeft, span.XRight, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height)CheckRange(span.XLeft, span.XRight, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z + 1 < data.depth)CheckRange(span.XLeft, span.XRight, span.Y, span.Z + 1, ParentDirections.Z0);continue;}throw new Exception();}#endregion#region UnRezif (span.Extended == ExtendTypes.UnRez){int xl = FindXLeft(span.XLeft, span.Y,span.Z);int xr = FindXRight(span.XRight, span.Y,span.Z);if (span.ParentDirection == ParentDirections.Y2){if (span.Y - 1 >= 0)CheckRange(xl, xr, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height){if (xl != span.XLeft)CheckRange(xl, span.XLeft, span.Y + 1, span.Z, ParentDirections.Y0);if (span.XRight != xr)CheckRange(span.XRight, xr, span.Y + 1, span.Z, ParentDirections.Y0);}if (span.Z - 1 >= 0)CheckRange(xl, xr, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth)CheckRange(xl, xr, span.Y, span.Z + 1, ParentDirections.Z0);continue;}if (span.ParentDirection == ParentDirections.Y0){if (span.Y + 1 < bmp.height)CheckRange(xl, xr, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Y - 1 >= 0){if (xl != span.XLeft)CheckRange(xl, span.XLeft, span.Y - 1, span.Z, ParentDirections.Y2);if (span.XRight != xr)CheckRange(span.XRight, xr, span.Y - 1, span.Z, ParentDirections.Y2);}if (span.Z - 1 >= 0)CheckRange(xl, xr, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth)CheckRange(xl, xr, span.Y, span.Z + 1, ParentDirections.Z0);continue;}if (span.ParentDirection == ParentDirections.Z2){if (span.Y - 1 >= 0)CheckRange(xl, xr, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height)CheckRange(xl, xr, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z - 1 >= 0)CheckRange(xl, xr, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth){if (xl != span.XLeft)CheckRange(xl, span.XLeft, span.Y, span.Z+1, ParentDirections.Z0);if (span.XRight != xr)CheckRange(span.XRight, xr, span.Y, span.Z+1, ParentDirections.Z0);}continue;}if (span.ParentDirection == ParentDirections.Z0){if (span.Y - 1 >= 0)CheckRange(xl, xr, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height)CheckRange(xl, xr, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z - 1 >= 0){if (xl != span.XLeft)CheckRange(xl, span.XLeft, span.Y, span.Z -1, ParentDirections.Z2);if (span.XRight != xr)CheckRange(span.XRight, xr, span.Y, span.Z - 1, ParentDirections.Z2);}if (span.Z + 1 < bmp.depth)CheckRange(xl, xr, span.Y, span.Z + 1, ParentDirections.Z0);continue;}if (span.ParentDirection == ParentDirections.Non){if (span.Y + 1 < bmp.height)CheckRange(xl, xr, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Y - 1 >= 0)CheckRange(xl, xr, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Z - 1 >= 0)CheckRange(xl, xr, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth)CheckRange(xl, xr, span.Y, span.Z + 1, ParentDirections.Z0);continue;}throw new Exception();}#endregion#region LeftRequiredif (span.Extended == ExtendTypes.LeftRequired){int xl = FindXLeft(span.XLeft, span.Y,span.Z);if (span.ParentDirection == ParentDirections.Y2){if (span.Y - 1 >= 0)CheckRange(xl, span.XRight, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height && xl != span.XLeft)CheckRange(xl, span.XLeft, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z - 1 >= 0)CheckRange(xl, span.XRight, span.Y , span.Z-1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth)CheckRange(xl, span.XRight, span.Y , span.Z+1, ParentDirections.Z0);continue;}if (span.ParentDirection == ParentDirections.Y0){if (span.Y - 1 >= 0 && xl != span.XLeft)CheckRange(xl, span.XLeft, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height)CheckRange(xl, span.XRight, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z - 1 >= 0)CheckRange(xl, span.XRight, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth)CheckRange(xl, span.XRight, span.Y, span.Z + 1, ParentDirections.Z0);continue;}if (span.ParentDirection == ParentDirections.Z2){if (span.Y - 1 >= 0 )CheckRange(xl, span.XRight, span.Y - 1, span.Z, ParentDirections.Y2); if (span.Y + 1 < bmp.height)CheckRange(xl, span.XRight, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z - 1 >= 0)CheckRange(xl, span.XRight, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth && xl != span.XLeft)CheckRange(xl, span.XLeft, span.Y, span.Z + 1, ParentDirections.Z0);continue;}if (span.ParentDirection == ParentDirections.Z0){if (span.Y - 1 >= 0)CheckRange(xl, span.XRight, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height)CheckRange(xl, span.XRight, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z - 1 >= 0 && xl != span.XLeft)CheckRange(xl, span.XLeft, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth )CheckRange(xl, span.XRight, span.Y, span.Z + 1, ParentDirections.Z0);continue;}throw new Exception();}#endregion#region RightRequiredif (span.Extended == ExtendTypes.RightRequired){int xr = FindXRight(span.XRight, span.Y,span.Z);if (span.ParentDirection == ParentDirections.Y2){if (span.Y - 1 >= 0)CheckRange(span.XLeft, xr, span.Y - 1,span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height && span.XRight != xr)CheckRange(span.XRight, xr, span.Y + 1,span.Z, ParentDirections.Y0);if (span.Z - 1 >= 0)CheckRange(span.XLeft, xr, span.Y, span.Z-1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth)CheckRange(span.XLeft, xr, span.Y, span.Z+1, ParentDirections.Z0); continue;}if (span.ParentDirection == ParentDirections.Y0){if (span.Y + 1 < bmp.height)CheckRange(span.XLeft, xr, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Y - 1 >= 0 && span.XRight != xr)CheckRange(span.XRight, xr, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Z - 1 >= 0)CheckRange(span.XLeft, xr, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth)CheckRange(span.XLeft, xr, span.Y, span.Z + 1, ParentDirections.Z0); continue;}if (span.ParentDirection == ParentDirections.Z2){if (span.Y - 1 >= 0)CheckRange(span.XLeft, xr, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height)CheckRange(span.XLeft, xr, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z - 1 >= 0)CheckRange(span.XLeft, xr, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth && span.XRight != xr)CheckRange(span.XRight, xr, span.Y, span.Z + 1, ParentDirections.Z0);continue;}if (span.ParentDirection == ParentDirections.Z0){if (span.Y - 1 >= 0)CheckRange(span.XLeft, xr, span.Y - 1, span.Z, ParentDirections.Y2);if (span.Y + 1 < bmp.height)CheckRange(span.XLeft, xr, span.Y + 1, span.Z, ParentDirections.Y0);if (span.Z - 1 >= 0 && span.XRight != xr)CheckRange(span.XRight, xr, span.Y, span.Z - 1, ParentDirections.Z2);if (span.Z + 1 < bmp.depth)CheckRange(span.XLeft, xr, span.Y, span.Z + 1, ParentDirections.Z0); continue;}throw new Exception();}#endregion}}protected void CheckRange(int xleft, int xright, int y, int z,ParentDirections ptype){for (int i = xleft; i <= xright; ){if ((!flagsMap.GetFlagOn(i, y,z)) && IncludePredicate(i, y,z)){int lb = i;int rb = i + 1;while (rb <= xright && (!flagsMap.GetFlagOn(rb, y,z)) && IncludePredicate(rb, y,z)){rb++;}rb--;Span span = new Span();span.XLeft = lb;span.XRight = rb;span.Y = y;span.Z = z;if (lb == xleft && rb == xright){span.Extended = ExtendTypes.UnRez;}else if (rb == xright){span.Extended = ExtendTypes.RightRequired;}else if (lb == xleft){span.Extended = ExtendTypes.LeftRequired;}else{span.Extended = ExtendTypes.AllRez;}span.ParentDirection = ptype;for (int j = lb; j <= rb; j++){flagsMap.SetFlagOn(j, y,z, true);Process(new Int16Triple(j, y,z));}container.Push(span);i = rb + 1;}else{i++;}}}//區(qū)段法的CheckRange 注意與掃描線的CheckRange的不同protected int FindXRight(int x, int y,int z){int xright = x + 1;while (true){if (xright == bmp.width || flagsMap.GetFlagOn(xright, y,z)){break;}else{if (IncludePredicate(xright, y,z)){Int16Triple t = new Int16Triple(xright, y,z);flagsMap.SetFlagOn(xright, y,z ,true);Process(t);xright++;}else{break;}}}return xright - 1;}protected int FindXLeft(int x, int y,int z){int xleft = x - 1;while (true){if (xleft == -1 || flagsMap.GetFlagOn(xleft, y, z)){break;}else{if (IncludePredicate(xleft, y,z)){Int16Triple t = new Int16Triple(xleft, y,z);flagsMap.SetFlagOn(xleft, y,z, true);Process(t);xleft--;}else{break;}}}return xleft + 1;}public byte min;public byte max;protected bool IncludePredicate(int x, int y, int z){byte v = bmp.GetPixel(x, y, z);return v > min && v < max;}protected void Process(Int16Triple p){count++;}}

    ?四、算法測試與實驗

      算法測試采用來自http://www.volvis.org的5組體數(shù)據,注意這里的閾值范圍是值一個體素值的范圍(min,max),在此范圍內的體素才納入區(qū)域。也就是說本文的includePredicate不再是跟上一篇一樣是判斷像素灰度為255的納入區(qū)域,而是判斷是否在這個(min,max)的范圍內。

    圖像預覽 數(shù)據名稱 參數(shù)說明

    Lobster

    • 大小:301×324×56
    • 文件:Lobster.raw
    • 種子點:(124,?168,?27)
    • 閾值范圍:37~255
    • 描述:CT?scan?of?a?lobster?contained?in?a?block?of?resin.
    engine
    • 大小:256×256×128
    • 文件:Engine.raw
    • 種子點:(149,?44,?43)
    • 閾值范圍:64~255
    • 描述:CT?scan?of?two?cylinders?of?an?engine?block.
    backpack
    • 大小:301×324×56
    • 文件:Backpack.raw
    • 種子點:(53,?390,?160)
    • 閾值范圍:46~255
    • 描述:CT?scan?of?a?backpack?filled?with?items.
    phantom
    • 大小:512×512×442
    • 文件:Phantom.raw
    • 種子點:(256,256,227)
    • 閾值范圍:42~255
    • 描述:CT?scan?of?a?Colon?phantom?with?several?different?objects?and?five?pedunculated?large polyps?in?the?central?object.
    cube

    ?

    • 大小:200×200×200
    • 文件:Cube.raw
    • 種子點:(50,50,50)
    • 閾值范圍:0~255
    • 描述:全白色,用于測試全部充滿的極端情況

      測試結果如下:

    測試數(shù)據 泛洪法(棧式) 泛洪法(隊列式) 掃描線法(棧式) 掃描線法(隊列式) 區(qū)段法(棧式) 區(qū)段法(隊列式) 區(qū)域點數(shù)
    lobster 86ms 76ms 56ms 64ms 40ms 47ms 277367
    engine 329ms 345ms 216ms 254ms 137ms 183ms 1154807
    backpack 596ms 638ms 426ms 470ms 319ms 351ms 19115450
    phantom 13468ms 14118ms 6520ms 8279ms 3701ms 4066ms 39759257
    cube 2120ms 2259ms 1292ms 1404ms 691ms 692ms 800000

      對于其中的backpack數(shù)據的單元訪問比例統(tǒng)計如下:

    算法 GetPixel/總點數(shù) GetFlagOn/總點數(shù) SetFlagOn/總點數(shù) Push和Pop/總點數(shù) 總點數(shù) 時間花費
    泛洪法(棧式) 1.945581 5.997103 1.0 1.0 1915450 596ms
    泛洪法(隊列式) 1.945581 5.997103 1.0 1.0 1915450 638ms
    掃描線法(棧式) 4.165088 5.337406 1.0 0.2668 1915450 426ms
    掃描線法(隊列式) 2.715424 5.774523 1.0 0.7589 1915450 470ms
    區(qū)段法(棧式) 1.911485 3.526728 1.0 0.2147 1915450 319ms
    區(qū)段法(隊列式) 1.931963 3.754333 1.0 0.3628 1915450 351ms

      通過測試可以看出,相比于二維種子點生長,由于多了一維,所以利用X軸數(shù)據連續(xù)特性所能達到增加效率的效果明顯減弱。既可以從時間結果上看,也可以從單元訪問比例上看,都能得到這一結論。不過從整體上看,效率上仍然能夠得出如下結論:棧式算法略塊于隊列式算法;區(qū)段法快于掃描線法,掃描線法快于泛洪法。

    總結

    以上是生活随笔為你收集整理的种子点生长算法下——三维种子点生长的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    www..com毛片 | 婷婷六月丁香激情 | 国产精品黄色av | 国产成人精品久久久久 | 成人av一区二区兰花在线播放 | 瑞典xxxx性hd极品 | 久久久久 | 国产精品欧美一区二区三区不卡 | www久久国产 | 国产在线观看免费观看 | 成人18视频| 国产精品va最新国产精品视频 | 国产 一区二区三区 在线 | 天天躁日日躁狠狠躁av中文 | 日本视频网 | 成人动漫视频在线 | 免费福利在线 | 精油按摩av | 午夜精品一区二区国产 | 黄色av免费 | 亚洲天堂网在线播放 | 久久久精品二区 | 久久天天躁夜夜躁狠狠85麻豆 | 黄色一级大片免费看 | 视频三区在线 | 日韩精品一区二区久久 | 国产午夜精品一区二区三区在线观看 | 亚洲 欧美 成人 | 成 人 免费 黄 色 视频 | 日韩精品在线一区 | 久久经典视频 | 国产精品午夜久久 | 九九有精品 | 天天看天天干 | 久久久久久久国产精品 | 久久蜜桃av | a成人v在线 | 中文字幕电影在线 | 97精品一区二区三区 | 91日韩在线 | 99国产在线 | 久久伊人精品一区二区三区 | av中文字幕剧情 | 亚洲区精品视频 | 国产高清成人在线 | 国产高清免费av | 免费不卡中文字幕视频 | 欧美一级片在线播放 | 欧美人体xx | 亚洲国产97在线精品一区 | 91av视频在线观看免费 | 美女网站在线免费观看 | 色综合色综合久久综合频道88 | 国产精品a久久久久 | 婷婷在线网 | 91久久黄色| 天天操天天操天天 | 精品久久久久久久久久久久久 | 激情xxxx | www.eeuss影院av撸| 亚洲好视频 | 久草精品在线观看 | 日日操夜夜操狠狠操 | 九九精品久久 | 国产小视频在线观看免费 | 综合天天 | 99草视频| a级片久久久 | 国产v欧美 | 欧美亚洲三级 | 中文字幕免费高 | 午夜电影久久 | 一区二区三区视频网站 | 精品在线亚洲视频 | 国产黄色一级片在线 | 九九热在线视频免费观看 | 亚洲精品456在线播放 | 国产免费黄视频在线观看 | 欧美视频xxx| 日韩精品久久一区二区 | 久久 亚洲视频 | 成年人免费看的视频 | 天堂视频一区 | 久久99精品久久久久久清纯直播 | 久草综合在线观看 | 欧美 日韩 国产 中文字幕 | 国产成人精品亚洲a | 亚洲精品视频在线观看网站 | 国产在线播放一区二区三区 | 日韩高清观看 | 热久久国产 | 日本三级不卡视频 | 超碰在线94| 国产天天爽 | 日韩欧美国产视频 | 久久视频一区 | 亚洲免费精彩视频 | 天天干天天天 | 日韩精品网址 | 天天射网站 | 五月婷婷色综合 | 精品视频久久久久久 | 天天操网址 | 中文字幕亚洲欧美日韩 | 久久精品国产一区二区 | 日韩电影中文字幕在线 | 99色免费 | 欧美一级片免费观看 | 久久夜色精品国产欧美一区麻豆 | 97国产大学生情侣白嫩酒店 | 69热国产视频 | 欧美日韩aaaa | 热久在线 | 国产精品亚洲精品 | 美女视频永久黄网站免费观看国产 | 波多野结衣在线中文字幕 | 亚洲精品h | 521色香蕉网站在线观看 | 日韩成人精品在线观看 | 欧美国产日韩一区二区三区 | 国精产品999国精产品视频 | 伊人成人激情 | 九九九在线观看 | 黄色网址国产 | 黄色在线视频网址 | 在线观看久久久久久 | 在线视频成人 | 狠狠狠狠狠狠干 | 97偷拍在线视频 | 激情久久网 | 三级视频国产 | 粉嫩aⅴ一区二区三区 | 国产中文字幕第一页 | 婷婷综合亚洲 | 三级av在线| 青青啪| 亚洲人成免费网站 | 99日精品| 国产日本在线 | 69精品在线观看 | 天堂av免费看 | 欧美久久久久久久久久 | 中文字幕在线一区观看 | 一区二区在线不卡 | 久久精品五月 | 久草在线| 中文字幕在线免费观看视频 | 91成人网在线观看 | 激情久久久久久久久久久久久久久久 | 欧美在线91| 久草免费在线观看视频 | 97国产视频 | 亚洲天堂香蕉 | 91看片看淫黄大片 | 91九色porny在线 | 天天综合色 | 国产九九精品视频 | 欧美精品天堂 | 久久久久成 | 国产精品久久久毛片 | 亚洲视频国产 | 久久久久久久久久久久久久av | 五月婷影院| 国产一级一片免费播放放 | 久久国产精品99久久人人澡 | 欧美久久久一区二区三区 | 97成人资源站 | 最近中文字幕大全中文字幕免费 | 亚洲黄色a| 久久综合九色综合欧美就去吻 | 亚洲精品婷婷 | 天天综合婷婷 | 国产视频在线观看一区二区 | 国产精品一区二区久久久久 | 欧美最猛性xxxxx亚洲精品 | 在线精品视频免费播放 | a黄色一级 | 丝袜美腿亚洲 | 日本在线观看一区二区三区 | 狠狠躁天天躁 | 国产精品一区二区在线免费观看 | av资源网在线播放 | 狠狠干五月天 | 久久成人免费视频 | 欧美天天综合网 | 国产又粗又硬又长又爽的视频 | 精品久久久成人 | 国产欧美日韩一区 | 成人国产精品久久久久久亚洲 | 国产免费观看高清完整版 | 黄色在线观看污 | 午夜性福利 | 亚洲午夜久久久综合37日本 | 色噜噜狠狠狠狠色综合久不 | 蜜臀久久99精品久久久酒店新书 | 天天干天天做天天操 | 开心综合网| 免费大片黄在线 | 日韩小视频 | 亚洲综合欧美日韩狠狠色 | 在线看福利av | av亚洲产国偷v产偷v自拍小说 | 最新在线你懂的 | 国产黄a三级 | 9999亚洲| 成年人av在线播放 | 久久综合九色综合97婷婷女人 | 成人av在线直播 | 91av视频免费观看 | 国产97在线看 | 操操综合| 狠狠色丁香九九婷婷综合五月 | 人人玩人人爽 | 人人干人人搞 | 成人a大片| 91禁在线看| 国产最新视频在线观看 | 超碰免费在线公开 | 日韩av免费一区二区 | 日韩乱色精品一区二区 | 91日韩精品一区 | 免费观看的黄色片 | 国产福利在线免费 | 免费看片成人 | 国产成年人av | 亚洲成 人精品 | 中文字幕麻豆 | 免费观看v片在线观看 | 亚洲人天堂| 亚洲免费av网站 | 久久久久久久久福利 | 国产成人精品av在线观 | 91手机电视 | 欧美午夜视频在线 | 国产精品不卡一区 | 国产伦精品一区二区三区无广告 | 色婷婷成人 | 色综合久久久久综合体 | 精品在线观看视频 | 久久你懂的 | 日日操操| 欧美影片 | 国产亚洲一区二区在线观看 | 免费在线观看av网址 | 99热这里只有精品在线观看 | 人人爽人人澡 | 天堂av在线中文在线 | 国产五月色婷婷六月丁香视频 | 成人欧美一区二区三区黑人麻豆 | 91热视频 | 国产一区二区观看 | 国内精品久久久久影院一蜜桃 | 欧美日韩中文国产一区发布 | 99麻豆久久久国产精品免费 | 国产精品免费看久久久8精臀av | 99热在| 久艹在线观看视频 | 久久久91精品国产一区二区精品 | 欧美91片| 国产人免费人成免费视频 | 中文字幕一区二区三区久久 | 国产美女免费 | 成人xxxx| 久草91视频 | 精品视频一区在线 | 99精品系列 | 国产亚洲精品av | 中文字幕在线观看日本 | 亚洲精品在线播放视频 | 久久色在线播放 | 中文字幕中文字幕在线一区 | 欧美国产亚洲精品久久久8v | 五月宗合网| 天天操操操操操 | 日韩欧美精品在线观看 | 日韩爱爱片 | 992tv人人网tv亚洲精品 | 国产小视频你懂的在线 | 久久免费视频在线观看 | 久久久午夜视频 | 久久亚洲精品国产亚洲老地址 | 亚洲成年片 | 精品国产伦一区二区三区 | 国产精彩视频一区 | 久久免费在线视频 | 久久99精品久久久久婷婷 | 色大片免费看 | 毛片在线播放网址 | 国产精品乱码一区二三区 | 免费黄色av电影 | 成人欧美一区二区三区黑人麻豆 | 狠狠地日 | 国产视频在线观看一区 | 激情大尺度视频 | 麻豆视频免费 | 免费观看的黄色片 | 激情文学综合丁香 | 伊人天天操| 亚洲区另类春色综合小说校园片 | 久久午夜羞羞影院 | 日本女人逼 | 97碰碰视频 | 黄色日本免费 | 欧美激情视频一区 | 五月综合在线观看 | 久久99精品国产 | 草在线 | 全黄色一级片 | 婷婷亚洲最大 | 久久成电影 | 国产精品成人免费精品自在线观看 | 最近日韩免费视频 | 欧美另类色图 | 人人干人人模 | 久久这里只精品 | 伊人激情综合 | 亚洲精品乱码白浆高清久久久久久 | 精品一区91 | 国产精品正在播放 | 精品v亚洲v欧美v高清v | 99热超碰在线 | 中文字幕视频播放 | 久久亚洲精品电影 | 91大神在线看 | 麻豆精品在线 | 精品国产中文字幕 | 中文字幕在线观看一区二区 | 国产成人三级在线播放 | 91在线www| 欧美国产不卡 | 国产99久 | 国产丝袜网站 | 中文字幕在线看视频 | 日韩一级片观看 | 欧美国产三区 | 日韩有码在线观看视频 | 亚洲精品欧美视频 | 人人插人人澡 | 免费视频成人 | 99精品免费观看 | 视频一区二区国产 | 国产成人免费av电影 | ,午夜性刺激免费看视频 | 国产高清无线码2021 | 午夜私人影院久久久久 | 中日韩免费视频 | 深爱婷婷久久综合 | 国产一区二区在线精品 | 玖玖爱在线观看 | 99精品久久久 | 91九色成人 | 超碰个人在线 | 午夜免费福利视频 | 色婷婷激情电影 | 超碰国产97| 国产在线精品一区二区三区 | 探花国产在线 | 亚洲国产精品久久久久久 | 99精品在线免费观看 | 亚洲欧洲视频 | 日本久久免费电影 | 在线91av | 大片网站久久 | av电影中文字幕 | 久久在线视频精品 | 久久女同性恋中文字幕 | 国产精品99在线观看 | 日韩欧美高清在线 | 国产精品网站一区二区三区 | 免费看黄在线看 | 日日日天天天 | 91精品国产91久久久久 | 一区二区在线电影 | 久久最新视频 | 江苏妇搡bbbb搡bbbb | 91视频首页| 我爱av激情网 | 99热99re6国产在线播放 | 丝袜制服综合网 | 国内精品福利视频 | 在线国产一区 | 欧美日韩中文在线视频 | 亚洲最新av | 国产精品色视频 | 九九久久久久99精品 | 亚洲综合色播 | 啪啪免费观看网站 | 国产69久久久 | 中文视频在线播放 | 91传媒视频在线观看 | 丁香午夜| 337p日本欧洲亚洲大胆裸体艺术 | 国产精品一区二区果冻传媒 | 一级黄色片在线 | 国产最新视频在线观看 | 国产福利网站 | 国产香蕉97碰碰久久人人 | 97视频资源| 国产精品乱码久久久久 | 日韩欧美一级二级 | 最近日本字幕mv免费观看在线 | 亚洲精品欧美视频 | 伊人六月| 五月亚洲婷婷 | 五月婷婷六月丁香 | 久久久久在线视频 | 亚洲午夜精品福利 | 91精品国产综合久久久久久久 | 国产九九精品视频 | 黄色av电影一级片 | 综合久久五月天 | 欧美一区在线看 | 一区久久久 | 欧美精品久久久久久久免费 | 欧美日韩亚洲第一 | 一级黄色在线视频 | 成人午夜精品 | 日日爽天天操 | 国产精品18久久久久久久网站 | 国产91在线观看 | 日日爱999| 日韩成人免费在线 | 久久久国产精品一区二区三区 | 美女很黄免费网站 | 五月婷香蕉久色在线看 | 成人污视频在线观看 | 中日韩欧美精彩视频 | 手机av电影在线 | 九月婷婷色 | 国产成人av在线 | 中文字幕精品在线 | 天天色成人网 | 久久不卡免费视频 | 国产精品亚洲人在线观看 | 亚洲午夜久久久久 | 播五月婷婷 | 九九色网 | 久久香蕉国产精品麻豆粉嫩av | 欧美精品一区二区三区四区在线 | 91超碰免费在线 | 97视频免费看 | 免费黄色在线网址 | 99久久婷婷国产一区二区三区 | 久草视频在线看 | 午夜av在线免费 | 国产精品成人一区二区三区吃奶 | 国产综合婷婷 | 成人三级黄色 | 久久黄色片 | 97超碰影视 | 狠狠狠色丁香婷婷综合久久88 | 精品成人免费 | 婷婷色综合网 | 久久在现| 亚洲综合色av | 国产拍揄自揄精品视频麻豆 | 天天久久夜夜 | 2019中文字幕网站 | 国产精品一区二区美女视频免费看 | 在线视频中文字幕一区 | 免费观看特级毛片 | 伊人婷婷激情 | 欧美高清成人 | 欧美一二三区在线播放 | 亚洲国产精品va在线看 | 黄污污网站 | 人人爽久久久噜噜噜电影 | 日韩在线免费视频 | 久久久久综合 | 久久久国产精品网站 | av解说在线观看 | 五月婷婷综合网 | 最近日本mv字幕免费观看 | 最近中文字幕高清字幕在线视频 | 日韩免费电影一区二区三区 | 国产亚洲精品美女久久 | 国产综合婷婷 | 黄色成年 | 一区三区在线欧 | 久草网视频 | www.午夜视频 | 亚洲婷婷综合色高清在线 | 日韩在线视频一区二区三区 | 国产精品久久网 | 丝袜美腿av| 国产私拍在线 | 国产精品美女久久久久久久久久久 | 一区二区成人国产精品 | 日韩精品电影在线播放 | 久久久影院官网 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 一区二区视频在线免费观看 | 亚洲一区二区麻豆 | 亚洲网站在线 | 亚洲一区二区91 | 国产精品久久久亚洲 | 国产日本亚洲高清 | 久久丝袜视频 | 中文字幕亚洲字幕 | 蜜臀一区二区三区精品免费视频 | 日韩av播放在线 | 亚洲精品久久久久久久不卡四虎 | 国产一区免费 | 国内精品久久久久久久久久 | 欧洲一区二区三区精品 | www.com操| 国产国语在线 | 日韩免费区| 九色自拍视频 | 亚洲天堂网站视频 | 天天夜夜狠狠操 | 免费网站在线观看成人 | 欧美综合在线观看 | 国产一区二区不卡视频 | 一区国产精品 | 日韩欧美xx | 国产精品一区在线 | 三级视频日韩 | 亚洲精品视频大全 | 天天操天天色综合 | 欧美国产三区 | 不卡的av| 在线播放 日韩专区 | 国产人成在线视频 | 人人藻人人澡人人爽 | 黄色在线视频网址 | 国产精品精品久久久 | av在线一 | 日韩三区在线观看 | 国产精品久久久久久久久免费看 | 九色最新网址 | 久久男人中文字幕资源站 | 99免费在线视频观看 | www免费看| 五月天九九| 成人四虎 | 色噜噜日韩精品一区二区三区视频 | 国产黄色理论片 | 安徽妇搡bbbb搡bbbb | 日本精品一二区 | 亚洲干| 久章草在线 | 久草视频资源 | 国产高清视频在线观看 | 成人免费视频播放 | 国产91在线免费视频 | 欧美吞精| 色婷婷97| 国产精品九九九九九 | 日韩欧美视频一区二区 | 欧美人牲 | av免费成人 | 日韩精品视频免费专区在线播放 | 天堂av在线免费 | 在线观看蜜桃视频 | 日韩午夜精品 | 日韩女同一区二区三区在线观看 | 亚洲精品一区二区久 | 国产成人精品一区二区三区网站观看 | 欧美a级一区二区 | 日韩在线视频播放 | 91热精品| 狠狠躁日日躁夜夜躁av | www久久久 | 日韩一区二区三区免费视频 | av超碰在线观看 | 国产无套精品久久久久久 | 日本中出在线观看 | 丁香六月久久综合狠狠色 | 97电影网手机版 | 在线亚洲天堂网 | 欧美精品一区二区在线观看 | 国产成人精品一区二区三区福利 | 亚洲免费一级电影 | 91中文在线 | 中文在线8新资源库 | 欧美日韩久 | 免费亚洲一区二区 | 欧美最新另类人妖 | 九九九九九精品 | 一级欧美黄 | 久久久久久毛片精品免费不卡 | 麻豆一级视频 | 99热99re6国产在线播放 | 91欧美在线 | av中文在线播放 | 日本公妇色中文字幕 | 五月天婷婷视频 | 中文字幕xxxx | 男女激情免费网站 | 久久综合色8888 | 一级精品视频在线观看宜春院 | 九草在线观看 | 黄色网www | 日韩在线网址 | av手机版 | 不卡视频一区二区三区 | 久草电影在线 | av资源免费看 | 不卡av免费在线观看 | a√国产免费a | 午夜色婷婷 | 1024久久| 日本超碰在线 | 99麻豆视频 | 亚洲天堂自拍视频 | av一级在线观看 | 精品一区二区久久久久久久网站 | 超碰在线人人爱 | 久久成人在线视频 | 日本在线h | 亚洲激情五月 | www.久艹| 欧美日本不卡高清 | 97在线精品视频 | 8x成人免费视频 | 国产一区自拍视频 | 天天天干天天射天天天操 | 中文资源在线播放 | 国产欧美最新羞羞视频在线观看 | 日韩亚洲在线观看 | 免费福利视频网站 | 国产成人精品福利 | 91精品少妇偷拍99 | 国产欧美在线一区二区三区 | 在线观看国产一区 | 亚洲国产电影在线观看 | 久久夜色网 | 91精选在线观看 | av超碰在线 | 精品国产乱码久久久久久1区二区 | 欧美成人亚洲 | 波多野结衣一区二区 | 久久久成人精品 | 永久免费毛片 | 亚洲成成品网站 | 91亚色免费视频 | 中文字幕综合在线 | 国产成人精品福利 | 97在线观看免费高清完整版在线观看 | 亚洲国产精品激情在线观看 | 国产精品视频app | 天天玩夜夜操 | 日本公妇在线观看高清 | 国产一级精品绿帽视频 | 国产在线91精品 | 国产精品自产拍在线观看蜜 | 蜜臀av在线一区二区三区 | 国产精品2区| 国产日韩精品一区二区三区 | 精品国产视频在线观看 | 精品欧美一区二区在线观看 | 349k.cc看片app | 成人国产精品一区 | 综合影视 | 亚洲精品一区二区三区四区高清 | 日韩 在线观看 | 免费69视频| 97精品超碰一区二区三区 | 色偷偷88888欧美精品久久久 | 欧美精品久久久久久久久久久 | 91看毛片 | 国产 在线 日韩 | 91免费国产在线观看 | 狠狠狠狠狠色综合 | 国产福利一区二区三区视频 | 免费在线观看一区二区三区 | 日本精品视频免费观看 | 久久精品欧美一区二区三区麻豆 | 91免费看黄色 | 在线观看不卡的av | 久久高清| 国产亚洲在线视频 | 免费观看www小视频的软件 | 久久久18 | 日韩在观看线 | 97超级碰碰碰碰久久久久 | www.av中文字幕.com | 久久久精品一区二区三区 | 天天综合天天综合 | 婷婷去俺也去六月色 | 成人午夜影院在线观看 | 欧美日韩精品在线 | 又黄又刺激 | 久久精品电影 | 九九日九九操 | 精品国产精品一区二区夜夜嗨 | 99精品在线免费 | 五月天婷亚洲天综合网精品偷 | 在线精品视频免费观看 | 日韩黄色大片在线观看 | 99r在线精品 | 免费日韩av电影 | 免费在线观看日韩视频 | 午夜av剧场 | 亚洲综合在线一区二区三区 | 欧美日韩免费看 | 欧美资源 | 草久久影院 | 亚洲精品乱码久久久久久 | 亚洲精品视频第一页 | 在线观看免费黄视频 | 国产在线精品区 | 日韩精品久久久久久 | 欧美另类网站 | 国产麻豆剧果冻传媒视频播放量 | 国产精品国产三级国产aⅴ无密码 | 欧美极品在线播放 | 久久久精品在线观看 | 亚洲精品福利视频 | av免费在线网 | 国产永久免费高清在线观看视频 | 欧美日韩国产区 | 麻豆91小视频 | 久久天堂亚洲 | 免费国产黄线在线观看视频 | 91av在线免费观看 | 一区二区三区久久精品 | 中文字幕第一页在线视频 | 国精产品永久999 | 国产欧美最新羞羞视频在线观看 | 国产日韩一区在线 | 麻豆视频免费版 | 一区二区精品久久 | 中文免费在线观看 | 精品国产99国产精品 | 国产一区二区在线观看免费 | 久久久久高清 | 国产不卡在线看 | 亚洲国产日韩欧美 | 在线观看日韩中文字幕 | 国产一级视频免费看 | 久久草 | 在线观看日韩视频 | 免费在线观看成人av | 精品亚洲免费 | 激情综合色综合久久 | 激情视频亚洲 | 成年人av在线播放 | 亚洲成av人片| 中文字幕免费成人 | 久久夜靖品 | 免费日韩在线 | 欧美一区二区三区四区夜夜大片 | 日韩aⅴ视频 | 99久久国产免费,99久久国产免费大片 | 极品美女被弄高潮视频网站 | 午夜av激情 | 中文字幕成人在线观看 | 美女黄频在线观看 | 69国产盗摄一区二区三区五区 | 色夜影院 | 婷婷播播网 | 玖草在线观看 | 久久久久婷 | 在线免费av播放 | 日韩电影中文,亚洲精品乱码 | 91亚洲精品在线 | 国产成在线观看免费视频 | 久久精品久久国产 | 狠狠狠色丁香婷婷综合久久88 | 91丨porny丨九色 | 狠狠干婷婷色 | 欧美成年人在线观看 | 日韩一片| 久久综合色影院 | 麻豆国产网站入口 | 69久久久久久久 | 91av中文字幕 | 免费在线观看一区二区三区 | 美女网站在线播放 | 久久久毛片 | 欧美一级日韩免费不卡 | 免费高清在线视频一区· | 欧美一二在线 | 午夜精品一区二区三区四区 | 欧美一级艳片视频免费观看 | 黄色一区三区 | 人人澡av| 日av免费 | 中文超碰字幕 | 麻豆国产精品va在线观看不卡 | 日韩 在线 | 久久午夜免费观看 | 欧美色综合 | 91av小视频| 精品国产伦一区二区三区观看体验 | 国产精品久久久久久久7电影 | 国产小视频免费在线网址 | 免费在线一区二区 | 最新av网址在线观看 | 日本激情视频中文字幕 | 久久久久久久久毛片 | 亚洲精品久久久蜜臀下载官网 | 久久免费a| 手机色站| 亚洲一区二区三区91 | 天天躁天天躁天天躁婷 | 成人97人人超碰人人99 | 精品国产乱码久久久久久浪潮 | 美女在线免费观看视频 | 国产精品久久久亚洲 | 欧美日韩精品区 | 99草视频在线观看 | 69精品在线观看 | 欧美日韩视频在线一区 | av大全在线免费观看 | 香蕉久久久久 | 黄色av成人在线观看 | 四虎国产精品成人免费影视 | 91精品综合在线观看 | 久久成人视屏 | 国产v亚洲v | 成人动漫视频在线 | 久久久www免费电影网 | 欧美日韩精品影院 | 天天操夜夜做 | 国产五月色婷婷六月丁香视频 | 亚洲男人天堂2018 | 亚洲涩涩涩 | 国产美女精彩久久 | 午夜在线免费视频 | 久久色网站 | 韩日色视频 | 又污又黄的网站 | 视频在线91 | 免费久草视频 | 超碰在线人人爱 | 久久婷婷一区 | 97成人精品| 99视频精品 | 国产女人免费看a级丨片 | 久久草在线精品 | 色姑娘综合网 | 人人精久 | 一本一道久久a久久精品蜜桃 | 亚洲男人天堂a | 人成在线免费视频 | 99精品在线免费视频 | 黄色免费在线视频 | 91麻豆精品国产自产 | 正在播放国产一区 | 激情网站免费观看 | 日韩欧美国产激情在线播放 | 在线一二区 | 九九热在线精品 | 亚洲黄色软件 | 黄色小说在线免费观看 | 日日夜夜天天久久 | 国产日韩视频在线播放 | 免费观看性生活大片3 | 成人av影视 | 国产精品久久久网站 | 国产精品一区二区久久久 | 日韩手机视频 | 国内免费久久久久久久久久久 | 成 人 免费 黄 色 视频 | 久久av影视 | 国产精品久久久久久久久免费看 | 亚洲精品tv久久久久久久久久 | 一二三精品视频 | 精品福利片 | 亚洲性视频 | 黄色免费网站 | 最近中文字幕视频网 | 亚州av免费 | 三级a视频 | 国产成人99久久亚洲综合精品 | 日韩在线看片 | 麻豆观看| 亚洲国产黄色片 | 国产精品av一区二区 | 西西4444www大胆视频 | 久久 亚洲视频 | 五月天.com | 久久视频中文字幕 | 久久久久久毛片 | 91亚洲在线 | 久操久| 久久黄色片 | 免费在线观看污 | 欧美美女激情18p | 日韩在线电影观看 | 日本成址在线观看 | www.天天射.com | 日韩在线观看 | 亚洲精品视频在线观看视频 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产超碰在线观看 | 婷婷激情五月综合 | 国产视频欧美视频 | 亚洲视频在线观看 | 久久视频| 国产精品久久久久久久妇 | 亚洲黄色小说网址 | 美女久久视频 | 日韩啪视频 | 一本一道波多野毛片中文在线 | 中文在线免费观看 | 亚洲午夜精品久久久 | 黄色亚洲免费 | 五月天中文字幕mv在线 | av爱干 | 国产精品刺激对白麻豆99 | 欧美在线aaa | 又黄又爽又色无遮挡免费 | 91 中文字幕| av免费网站在线观看 | 婷婷在线综合 | 在线a人v观看视频 | 午夜av大片 | 国产麻豆视频在线观看 | 玖玖色在线观看 | 国产精品久久二区 | 国产精品久久久久毛片大屁完整版 | 四虎在线免费观看视频 | av看片网| 狠狠狠色丁香综合久久天下网 | 视频一区二区视频 | 成年人电影免费看 | 久久丁香网| 中文字幕视频 | 97国产在线播放 | 亚洲精品乱码久久久久久蜜桃欧美 | 久久99视频免费 | 美女网站在线播放 | 天天射天天艹 | 中文字幕观看av | 激情五月播播久久久精品 | 欧美日韩伦理一区 | 久久免费视频在线 | 五月婷婷综合在线视频 | 日韩激情视频 | 精品一区二区亚洲 | 成人一区二区三区在线 | 中文字幕在线一二 | 在线观看aa| 成 人 黄 色 视频播放1 | 五月天久久激情 | 天堂在线一区二区三区 | 欧美国产不卡 | 国产在线2020| 99热在线观看免费 | 精品久久网站 | 久久人人爽爽 | 最近能播放的中文字幕 | 国产色拍拍拍拍在线精品 | 国产最新在线观看 | 97香蕉久久超级碰碰高清版 | 精品电影一区二区 | 在线v片免费观看视频 | 丝袜少妇在线 | 国产精品成人国产乱 | 成人宗合网 | 国产99视频在线观看 | 午夜视频在线观看欧美 | 日韩在线高清免费视频 | 欧美aaa级片 | 国产精品久久久久久久久久新婚 | 91中文字幕在线视频 | 天天摸日日摸人人看 | 精品国产亚洲一区二区麻豆 | www.黄色 | 国产 在线 高清 精品 | 国内综合精品午夜久久资源 | 成人av手机在线 | 日韩高清在线一区二区 | 久久精品久久久精品美女 | av高清一区二区三区 | 久久综合99| 91av视频观看 | 亚洲精品国产麻豆 | 国产精品自产拍在线观看蜜 | 不卡的av在线 | 福利视频在线看 | 亚洲国产片色 | 成年人在线免费看片 | 国产护士hd高朝护士1 | 日韩中文字幕国产 | 97成人在线观看视频 | 97色资源 | 久久草 | 四虎国产精品成人免费影视 | 91在线视频观看 | 精品在线99 | 亚洲午夜久久久综合37日本 | 99热99| 久久综合五月 | h视频在线看 | 久久久伦理 | 国产精品一区二区电影 | 国产人成看黄久久久久久久久 | 人人搞人人干 | 狠狠久久伊人 | 色九九在线 | 99久久精品电影 | 黄色网大全 | 免费一区在线 |