国产精品青草久-国产精品情侣愉拍-国产精品区网红主-国产精品区一区二-国产精品热久久-国产精品热热热-国产精品人aⅴ-国产精品人成在线-国产精品人妻人伦-国产精品人人

金喜正规买球

LeadTools 使用基準線

轉帖|使用教程|編輯:黃竹雯|2016-07-05 15:38:07.000|閱讀 407 次

概述:在本教程中,您將學習到如何在MedicalViewer 單元格中顯示基準線。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

相關鏈接:

在本教程中,您將學習到如何在MedicalViewer 單元格中顯示基準線。

1. 請您打開Visual Studio2005或一個更高的版本。

2. 從“文件”菜單中選擇“項目”。

3. 然后會出現一個新建項目對話框。

4. 從“項目類型”中展開“其他語言”節點,然后單擊在“Visual C#” 節點上。

5. 從該對話框左側的模板列表中,選擇“Windows窗體應用程序”。

6. 在“項目名稱”字段里輸入該項目的名稱“使用基準線”,然后選擇“確定”。

7. 選擇“確定”來創建該項目。

8. 從“視圖”菜單中選擇“解決方案資源管理器”。

9. 在“解決方案資源管理器”的樹型圖中,右鍵單擊“引用”節點,然后選擇“添加引用”。

10. 在“添加引用”對話框中選擇“瀏覽”選項卡,然后添加以下這些DLL文件:

  • Leadtools.dll
  • Leadtools.Codecs.dll
  • Leadtools.MedicalViewer.dll
  • Leadtools.Medical3D.dll
  • Leadtools.Dicom.dll
  • Leadtools.Codecs.Cmp.dll

11. 切換到Form1代碼視圖(在“解決方案資源管理器”上右鍵單擊Form1,然后選擇“查看代碼”),并在文件的開頭添加以下幾行代碼:

            Imports Leadtools
            Imports Leadtools.Codecs
            Imports Leadtools.MedicalViewer
            Imports Leadtools.Medical3D
            Imports Leadtools.Dicom
            using Leadtools;
            using Leadtools.Codecs;
            using Leadtools.MedicalViewer;
            using Leadtools.Medical3D;
            using Leadtools.Dicom;

12. 在Form1中,創建一個新的方法InitClass() 。并將以下代碼添加到該方法:

            Private Sub InitClass()
               Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic"
                 
               ' 開啟DICOM支持。
               Dim MY_DicomDEVELOPER_KEY As String = "xyz123abc"
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);
                 
               ' 開啟Medical支持。
               Dim MY_MedicalDEVELOPER_KEY As String = "abc123xyz"
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);
                 
               ' 開啟Medical 3D支持。
               Dim MY_3DDEVELOPER_KEY As String = "123xyzabc"
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);
               
               ' 創建一個將被用于加載圖像的編解碼器類的新實例。
               Dim _codecs As RasterCodecs = New RasterCodecs()
               ' 創建一個MedicalViewer的新實例。該查看器布局將被劃分為2X2。
               Dim viewer As MedicalViewer = New MedicalViewer(2, 2)
               ' 使該視圖與整個窗體相匹配。
               viewer.Dock = DockStyle.Fill
               ' 將該查看器添加到窗體。
               Controls.Add(viewer)
            End Sub
            void InitClass()
            {
               string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
               
               // 開啟DICOM支持。
               string MY_DicomDEVELOPER_KEY = "xyz123abc";
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);
                 
               // 開啟Medical支持。
               string MY_MedicalDEVELOPER_KEY = "abc123xyz";
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);
                 
               // 開啟Medical 3D支持。
               string MY_3DDEVELOPER_KEY = "123xyzabc";
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);
               
               // 創建一個將被用于加載圖像的編解碼器類的新實例。
               RasterCodecs _codecs = new RasterCodecs();
               // 創建一個MedicalViewer的新實例。該查看器布局將被劃分為2X2。
               MedicalViewer viewer = new MedicalViewer(2, 2);
               // 使該視圖與整個窗體相匹配。
               viewer.Dock = DockStyle.Fill;
               // 將該查看器添加到窗體。
               Controls.Add(viewer);
            }

13. 請從Form1的構造函數中調用該方法InitClass,并將該調用放置于InitializeComponent()之后。

14. 運行該程序,您將會看到一個2x2布局。

15. 注意:在接下來的步驟中,您將需要具備一個DICOMDIR文件。我們可以提供DICOMDIR示例文件,您可以點擊這里進行下載。如果您想要了解有關如何在DICOMDIR中構建3D對象的更多相關詳細信息,請參閱這一章“如何加載DICOMDIR來創建一個3D對象”。

注意:如果您遇到一個“無效的文件格式”或“功能不支持”的異常,請參閱如下主題“無效的文件格式/功能不支持”。

請下載示例DICOMDIR,并將其內容解壓縮到此文件夾:C:\Leadtools_DICOMDIR。

16. 請將如下代碼添加到Form1類。該代碼可用于從DICOMDIR中加載圖像,將它們進行排序,并從中提取所有的有用信息:

            Private _studyElement As DicomElement
            Private _seriesElement As DicomElement
            Private _seriesManager As MedicalViewerSeriesManager
            Private _imageDataList As List(Of MedicalViewerImageData)
            Private doubleArray As Double()
            Private patientElement As DicomElement
            Private referenceUID As String
            Private imageElement As DicomElement
            Private output As MedicalViewerSeriesManager
            ' 您需要找到使用了科目實例UID的科目,并且在找到之后返回其DicomElement。 
            Private Function FindStudy(ByVal ds As DicomDataSet, ByVal studyInstanceUID As String) As DicomElement
              ' 獲取父元素。
              Dim patientElement As DicomElement = ds.GetFirstKey(Nothing, True)
              Dim studyElement As DicomElement = Nothing
              Dim studyInformationElement As DicomElement = Nothing
              Dim studyID As String
              studyElement = ds.GetChildKey(patientElement)
              studyElement = ds.GetChildElement(studyElement, True)
              Do While Not studyElement Is Nothing
                studyInformationElement = ds.FindFirstElement(studyElement, DicomTag.StudyInstanceUID, True)
                If Not studyInformationElement Is Nothing Then
                   studyID = ds.GetConvertValue(studyInformationElement)
                   If studyID = studyInstanceUID Then
                     Return studyInformationElement
                   End If
                End If
                studyElement = ds.GetNextKey(studyElement, True)
                studyElement = ds.GetChildElement(studyElement, True)
              Loop
              Return Nothing
            End Function
            ' 您需要找到使用了系列實例UID的系列,并在找到后返回其DicomElement。
            Private Function FindSeries(ByVal ds As DicomDataSet, ByVal studyElement As DicomElement, ByVal seriesInstanceUID As String) As DicomElement
              Dim seriesElement As DicomElement = Nothing
              Dim seriesInformationElement As DicomElement = Nothing
              Dim seriesID As String
              seriesElement = ds.GetChildKey(studyElement)
              seriesElement = ds.GetChildElement(seriesElement, True)
              Do While Not seriesElement Is Nothing
                seriesInformationElement = ds.FindFirstElement(seriesElement, DicomTag.SeriesInstanceUID, True)
                If Not seriesInformationElement Is Nothing Then
                   seriesID = ds.GetConvertValue(seriesInformationElement)
                   If seriesID = seriesInstanceUID Then
                     Return seriesInformationElement
                   End If
                End If
                seriesElement = ds.GetNextKey(seriesElement, True)
                seriesElement = ds.GetChildElement(seriesElement, True)
              Loop
              Return Nothing
            End Function
            ' 返回該系列的第一幀的文件名。
            Private Function GetFirstImageName(ByVal ds As DicomDataSet, ByVal seriesElement As DicomElement, ByVal directoryPath As String, <System.Runtime.InteropServices.Out()> ByRef imageElement As DicomElement) As String
              Dim imageIDElement As DicomElement = Nothing
              imageElement = ds.GetChildKey(seriesElement)
              imageElement = ds.GetChildElement(imageElement, True)
              Do While Not imageElement Is Nothing
                imageIDElement = ds.FindFirstElement(imageElement, DicomTag.ReferencedFileID, True)
                If Not imageIDElement Is Nothing Then
                   Return directoryPath &"\" & ds.GetConvertValue(imageIDElement)
                End If
              Loop
              Return ""
            End Function
            ' 返回該系列的下一幀的文件名。
            Private Function GetNextImageName(ByVal ds As DicomDataSet, ByVal directoryPath As String, ByRef imageElement As DicomElement) As String
              Dim nextImageElement As DicomElement = Nothing
              imageElement = ds.GetNextKey(imageElement, True)
              imageElement = ds.GetChildElement(imageElement, True)
              Do While Not imageElement Is Nothing
                nextImageElement = ds.FindFirstElement(imageElement, DicomTag.ReferencedFileID, True)
                If Not imageElement Is Nothing Then
                   Dim echoElement As DicomElement = ds.FindFirstElement(imageElement, DicomTag.EchoNumber, True)
                   Return directoryPath & "\" & ds.GetConvertValue(nextImageElement)
                End If
              Loop
              Return ""
            End Function
            ' 這將加載DICOM數據集信息,并將其保存到MedicalViewerImageData類的一個新實例中。
            Private Function AddImageToImageArray(ByVal ds As DicomDataSet, ByVal index As Integer, ByVal imagePath As String, <System.Runtime.InteropServices.Out()> ByRef echoNumber As Integer) As Boolean
              echoNumber = -1
              Dim imageData As MedicalViewerImageData = New MedicalViewerImageData()
              patientElement = ds.FindFirstElement(Nothing, DicomTag.ImagePositionPatient, True)
              doubleArray = ds.GetDoubleValue(patientElement, 0, 3)
              imageData.ImagePosition = Point3D.FromDoubleArray(doubleArray)
              imageData.Data = imagePath
              imageData.EchoNumber = echoNumber
              patientElement = ds.FindFirstElement(Nothing, DicomTag.FrameOfReferenceUID, True)
              referenceUID = ds.GetConvertValue(patientElement)
              imageData.FrameOfReferenceUID = referenceUID
              patientElement = ds.FindFirstElement(Nothing, DicomTag.ImageOrientationPatient, True)
              imageData.ImageOrientation = ds.GetConvertValue(patientElement)
              patientElement = ds.FindFirstElement(Nothing, DicomTag.PixelSpacing, True)
              doubleArray = ds.GetDoubleValue(patientElement, 0, 2)
              imageData.PixelSpacing = New Point2D(CSng(doubleArray(0)), CSng(doubleArray(1)))
              patientElement = ds.FindFirstElement(Nothing, DicomTag.InstanceNumber, True)
              If Not patientElement Is Nothing Then
                imageData.InstanceNumber = Convert.ToInt32(ds.GetConvertValue(patientElement))
              End If
              patientElement = ds.FindFirstElement(Nothing, DicomTag.InstanceCreationTime, True)
              If Not patientElement Is Nothing Then
                imageData.CaptureTime = Convert.ToDateTime(ds.GetConvertValue(patientElement))
              End If
              _imageDataList.Add(imageData)
              Return True
            End Function
            Public Function Load_James_CT_Localizer() As MedicalViewerSeriesManager
              Dim fileName As String = "C:\Leadtools_DICOMDIR\Miller James\"
              Dim studyInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022"
              Dim seriesInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000023"
              Return LoadSeries(fileName, studyInstanceUID, seriesInstanceUID, 1)
            End Function
            Public Function Load_James_CT() As MedicalViewerSeriesManager
              Dim fileName As String = "C:\Leadtools_DICOMDIR\Miller James\"
              Dim studyInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022"
              Dim seriesInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208215356200001997"
              Return LoadSeries(fileName, studyInstanceUID, seriesInstanceUID, 256)
            End Function
            ' 這將加載由seriesInstanceUID和studyInstanceUID所指定的系列,而這兩個UID來自fileName指定的文件。
            Private Function LoadSeries(ByVal fileName As String, ByVal studyInstanceUID As String, ByVal seriesInstanceUID As String, ByVal count As Integer) As MedicalViewerSeriesManager
              DicomEngine.Startup()
              Dim ds As DicomDataSet = New DicomDataSet()
              ds.Load(fileName &"DICOMDIR", DicomDataSetLoadFlags.None)
              Dim directoryPath As String = fileName
              ' 在這里,該程序將會對包含指定的studyInstanceUID的科目進行搜索。 
              _studyElement = FindStudy(ds, studyInstanceUID)
              ' 在這里,該程序將會對包含指定的seriesInstanceUID的系列進行搜索。
              _seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID)
              ' 請創建一個MedicalViewerSeriesManager的新實例。它將被用于對圖像進行排序,以便創建正確的3D對象。
              _seriesManager = New MedicalViewerSeriesManager()
              ' 請創建一個MedicalViewerImageData的陣列。該類將被用于保存幀信息。而該信息將被用于對圖像進行排序。
              _imageDataList = New List(Of MedicalViewerImageData)()
              Dim dicomDataSet As DicomDataSet
              Dim imageIndex As Integer
              Dim imagePath As String
              Dim echoNumber As Integer = 0
              ' 現在,該程序將對該系列中的每一幀進行審查。
              imagePath = GetFirstImageName(ds, _seriesElement, directoryPath, imageElement)
              imageIndex = 0
              Do While imageIndex < count
                Try
                   ' 該系列中的每個圖像都將被加載。
                   dicomDataSet = New DicomDataSet()
                   dicomDataSet.Load(imagePath, DicomDataSetLoadFlags.None)
                   ' 該程序可以加載它的信息,并將其保存到MedicalViewerImageData類的一個新實例中。
                   AddImageToImageArray(dicomDataSet, imageIndex, imagePath, echoNumber)
                   dicomDataSet.Dispose()
                   ' 跳轉到下一個圖像。
                   imagePath = GetNextImageName(ds, directoryPath, imageElement)
                Catch exception As System.Exception
                   System.Diagnostics.Debug.Assert(False, exception.Message)
                   Throw
                End Try
                 imageIndex += 1
              Loop
              ' 根據它的數據對這些圖像進行排序。
              _seriesManager.Sort(_imageDataList)
              DicomEngine.Shutdown()
              Return _seriesManager
            End Function
            Private Sub LoadLocalizer(ByVal cell As MedicalViewerMultiCell)
              ' 啟動允許加載各種圖像的編解碼器。
              Dim _codecs As RasterCodecs = New RasterCodecs()
              ' 加載CT定位器。
              output = Load_James_CT_Localizer()
              cell.Image = _codecs.Load(CStr(output.Localizers(0).LocalizerData.Data), 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1)
              ' 設置以下三行代碼非常重要。否則,可能會發生基準線結果錯誤。
  ' 設置定位器的圖像位置。             
 cell.SetImagePosition(0, _seriesManager.Localizers(0).LocalizerData.ImagePosition, True)
              ' 設置定位器的圖像方向。
              cell.ImageOrientation = _seriesManager.Localizers(0).LocalizerData.ImageOrientationArray
              ' 設置定位器的像素間隔。
              cell.PixelSpacing = _seriesManager.Localizers(0).LocalizerData.PixelSpacing
              ' 設置定位器的幀引用UID。如果系列和定位器具有相同的引用UID的話,這樣就可以在它們之間創建一條基準線。
              cell.FrameOfReferenceUID = _seriesManager.Localizers(0).LocalizerData.FrameOfReferenceUID
            End Sub
            Private Sub Load2DCell(ByVal cell As MedicalViewerMultiCell)
              ' 啟動允許加載各種圖像的編解碼器。
              Dim _codecs As RasterCodecs = New RasterCodecs()
              ' 加載CT DICOMDIR,并返回排列好的圖像集合。
              output = Load_James_CT()
              ' 循環處理這些圖像,并將它們一個接一個地添加到最終的圖像。
              Dim image As RasterImage = Nothing
              Dim depth As Integer = output.Stacks(0).Items.Count
              Dim index As Integer
              index = 0
              Do While index < depth
                If image Is Nothing Then
                   image = _codecs.Load(CStr(output.Stacks(0).Items(index).Data), 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1)
                Else
                   image.AddPage(_codecs.Load(CStr(output.Stacks(0).Items(index).Data), 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1))
                End If
                 index += 1
              Loop
              cell.Image = image
              ' 設置以下這幾行代碼非常重要。否則,可能會出現基準線結果錯誤。
              index = 0
              Do While index < depth
                ' 設置每幀的圖像位置。
                cell.SetImagePosition(index, _seriesManager.Stacks(0).Items(index).ImagePosition, False)
                 index += 1
              Loop
              ' 請對該系列的圖像方向進行設置,且它只需被設置一次,因為所有的幀必須具有相同的方向值。
              cell.ImageOrientation = _seriesManager.Stacks(0).Items(0).ImageOrientationArray
              ' 請對該系列的像素間隔進行設置,且它只需被設置一次,因為所有的幀必須具有相同的像素間隔值。
              cell.PixelSpacing = _seriesManager.Stacks(0).Items(0).PixelSpacing
              ' 請對該系列的幀引用UID進行設置。如果該系列和定位器具有相同的引用UID的話,這將在它們之間創建一條基準線。
              cell.FrameOfReferenceUID = _seriesManager.Stacks(0).Items(0).FrameOfReferenceUID
            End Sub
            DicomElement _studyElement;
            DicomElement _seriesElement;
            MedicalViewerSeriesManager _seriesManager;
            List<MedicalViewerImageData> _imageDataList;
            double[] doubleArray;
            DicomElement patientElement;
            string referenceUID;
            DicomElement imageElement;
            MedicalViewerSeriesManager output;
            // 您需要找到使用了科目實例UID的科目,并且在找到之后返回其DicomElement。
            private DicomElement FindStudy(DicomDataSet ds, string studyInstanceUID)
            {
               // 獲取父元素。
               DicomElement patientElement = ds.GetFirstKey(null, true);
               DicomElement studyElement = null;
               DicomElement studyInformationElement = null;
               string studyID;
               studyElement = ds.GetChildKey(patientElement);
               studyElement = ds.GetChildElement(studyElement, true);
               while (studyElement != null)
               {
                  studyInformationElement = ds.FindFirstElement(studyElement,
                                                                DicomTag.StudyInstanceUID,
                                                                true);
                  if (studyInformationElement != null)
                  {
                     studyID = ds.GetConvertValue(studyInformationElement);
                     if (studyID == studyInstanceUID)
                        return studyInformationElement;
                  }
                  studyElement = ds.GetNextKey(studyElement, true);
                  studyElement = ds.GetChildElement(studyElement, true);
               }
               return null;
            }
            // 您需要找到使用了系列實例UID的系列,并在找到后返回其DicomElement。
            private DicomElement FindSeries(DicomDataSet ds, DicomElement studyElement, string seriesInstanceUID)
            {
               DicomElement seriesElement = null;
               DicomElement seriesInformationElement = null;
               string seriesID;
               seriesElement = ds.GetChildKey(studyElement);
               seriesElement = ds.GetChildElement(seriesElement, true);
               while (seriesElement != null)
               {
                  seriesInformationElement = ds.FindFirstElement(seriesElement,
                                                                 DicomTag.SeriesInstanceUID,
                                                                 true);
                  if (seriesInformationElement != null)
                  {
                     seriesID = ds.GetConvertValue(seriesInformationElement);
                     if (seriesID == seriesInstanceUID)
                        return seriesInformationElement;
                  }
                  seriesElement = ds.GetNextKey(seriesElement, true);
                  seriesElement = ds.GetChildElement(seriesElement, true);
               }
               return null;
            }
            // 返回該系列的第一幀的文件名。
            private string GetFirstImageName(DicomDataSet ds, DicomElement seriesElement, string directoryPath, out DicomElement imageElement)
            {
               DicomElement imageIDElement = null;
               imageElement = ds.GetChildKey(seriesElement);
               imageElement = ds.GetChildElement(imageElement, true);
               while (imageElement != null)
               {
                  imageIDElement = ds.FindFirstElement(imageElement,
                                                     DicomTag.ReferencedFileID,
                                                     true);
                  if (imageIDElement != null)
                  {
                     return directoryPath + "\\" + ds.GetConvertValue(imageIDElement);
                  }
               }
               return "";
            }
            // 返回該系列的下一幀的文件名。
            private string GetNextImageName(DicomDataSet ds, string directoryPath, ref DicomElement imageElement)
            {
               DicomElement nextImageElement = null;
               imageElement = ds.GetNextKey(imageElement, true);
               imageElement = ds.GetChildElement(imageElement, true);
               while (imageElement != null)
               {
                  nextImageElement = ds.FindFirstElement(imageElement,
                                                     DicomTag.ReferencedFileID,
                                                     true);
                  if (imageElement != null)
                  {
                     DicomElement echoElement = ds.FindFirstElement(imageElement,
                                                       DicomTag.EchoNumber,
                                                       true);
                     return directoryPath + "\\" + ds.GetConvertValue(nextImageElement);
                  }
               }
               return "";
            }
            // 這將加載DICOM數據集信息,并將其保存到MedicalViewerImageData類的一個新實例中。
            private bool AddImageToImageArray(DicomDataSet ds, int index, string imagePath, out int echoNumber)
            {
               echoNumber = -1;
               MedicalViewerImageData imageData = new MedicalViewerImageData();
               patientElement = ds.FindFirstElement(null,
                                                    DicomTag.ImagePositionPatient,
                                                    true);
               doubleArray = ds.GetDoubleValue(patientElement, 0, 3);
               imageData.ImagePosition = Point3D.FromDoubleArray(doubleArray);
               imageData.Data = imagePath;
               imageData.EchoNumber = echoNumber;
               patientElement = ds.FindFirstElement(null,
                                                   DicomTag.FrameOfReferenceUID,
                                                   true);
               referenceUID = ds.GetConvertValue(patientElement);
               imageData.FrameOfReferenceUID = referenceUID;
               patientElement = ds.FindFirstElement(null,
                                                   DicomTag.ImageOrientationPatient,
                                                   true);
               imageData.ImageOrientation = ds.GetConvertValue(patientElement);
               patientElement = ds.FindFirstElement(null,
                                                    DicomTag.PixelSpacing,
                                                    true);
               doubleArray = ds.GetDoubleValue(patientElement, 0, 2);
               imageData.PixelSpacing = new Point2D((float)doubleArray[0], (float)doubleArray[1]);
               patientElement = ds.FindFirstElement(null,
                                                   DicomTag.InstanceNumber,
                                                   true);
               if (patientElement != null)
                  imageData.InstanceNumber = Convert.ToInt32(ds.GetConvertValue(patientElement));
               patientElement = ds.FindFirstElement(null,
                                                   DicomTag.InstanceCreationTime,
                                                   true);
               if (patientElement != null)
                  imageData.CaptureTime = Convert.ToDateTime(ds.GetConvertValue(patientElement));
               _imageDataList.Add(imageData);
               return true;
            }
            public MedicalViewerSeriesManager Load_James_CT_Localizer()
            {
               string fileName = @"C:\Leadtools_DICOMDIR\Miller James\";
               string studyInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022";
               string seriesInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000023";
               return LoadSeries(fileName, studyInstanceUID, seriesInstanceUID, 1);
            }
            public MedicalViewerSeriesManager Load_James_CT()
            {
               string fileName = @"C:\Leadtools_DICOMDIR\Miller James\";
               string studyInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022";
               string seriesInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208215356200001997";
               return LoadSeries(fileName, studyInstanceUID, seriesInstanceUID, 256);
            }
            // 這將加載由seriesInstanceUID和studyInstanceUID所指定的系列,而這兩個UID來自fileName指定的文件。
            private MedicalViewerSeriesManager LoadSeries(string fileName, string studyInstanceUID, string seriesInstanceUID, int count)
            {
               DicomEngine.Startup();
               DicomDataSet ds = new DicomDataSet();
               ds.Load(fileName + "DICOMDIR", DicomDataSetLoadFlags.None);
               string directoryPath = fileName;
               // 在這里,該程序將會對包含指定的studyInstanceUID的科目進行搜索。
               _studyElement = FindStudy(ds, studyInstanceUID);
               // 在這里,該程序將會對包含指定的seriesInstanceUID的系列進行搜索。
               _seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID);
               // 請創建一個MedicalViewerSeriesManager的新實例。它將被用于對圖像進行排序,以便創建正確的3D對象。
               _seriesManager = new MedicalViewerSeriesManager();
               // 請創建一個MedicalViewerImageData的陣列。該類將被用于保存幀信息。而該信息將被用于對圖像進行排序。
               _imageDataList = new List<MedicalViewerImageData>();
               DicomDataSet dicomDataSet;
               int imageIndex;
               string imagePath;
               int echoNumber = 0;
               // 現在,該程序將對該系列中的每一幀進行審查。
               imagePath = GetFirstImageName(ds, _seriesElement, directoryPath, out imageElement);
               for (imageIndex = 0; imageIndex < count; imageIndex++)
               {
                  try
                  {
                     // 該系列中的每個圖像都將被加載。
                     dicomDataSet = new DicomDataSet();
                     dicomDataSet.Load(imagePath, DicomDataSetLoadFlags.None);
                     // 該程序可以加載它的信息,并將其保存到MedicalViewerImageData類的一個新實例中。
                     AddImageToImageArray(dicomDataSet, imageIndex, imagePath, out echoNumber);
                     dicomDataSet.Dispose();
                     // 跳轉到下一個圖像。
                     imagePath = GetNextImageName(ds, directoryPath, ref imageElement);
                  }
                  catch (System.Exception exception)
                  {
                     System.Diagnostics.Debug.Assert(false, exception.Message);
                     throw;
                  }
               }
               // 根據它的數據對這些圖像進行排序。
               _seriesManager.Sort(_imageDataList);
               DicomEngine.Shutdown();
               return _seriesManager;
            }
            void LoadLocalizer(MedicalViewerMultiCell cell)
            {
               // 啟動允許加載各種圖像的編解碼器。
               RasterCodecs _codecs = new RasterCodecs();
               // 加載CT定位器。
               output = Load_James_CT_Localizer();
               cell.Image = _codecs.Load((string)output.Localizers[0].LocalizerData.Data, 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1);
               // 設置以下三行代碼非常重要。否則,可能會發生基準線結果錯誤。
               // 設置定位器的圖像位置。
               cell.SetImagePosition(0, _seriesManager.Localizers[0].LocalizerData.ImagePosition, true);
               // 設置定位器的圖像方向。
               cell.ImageOrientation = _seriesManager.Localizers[0].LocalizerData.ImageOrientationArray;
               // 設置定位器的像素間隔。
               cell.PixelSpacing = _seriesManager.Localizers[0].LocalizerData.PixelSpacing;
               // 設置定位器的幀引用UID。如果該系列和定位器具有相同的引用UID的話,這樣就可以在它們之間創建一條基準線。
               cell.FrameOfReferenceUID = _seriesManager.Localizers[0].LocalizerData.FrameOfReferenceUID;
            }
            void Load2DCell(MedicalViewerMultiCell cell)
            {
               // 啟動允許加載各種圖像的編解碼器。
               RasterCodecs _codecs = new RasterCodecs();
               // 加載CT DICOMDIR,并返回排列好的圖像集合。
               output = Load_James_CT();
               // 循環處理這些圖像,并將它們一個接一個地添加到最終的圖像。
               RasterImage image = null;
               int depth = output.Stacks[0].Items.Count;
               int index;
               for (index = 0; index < depth; index++)
               {
                  if (image == null)
                  {
                     image = _codecs.Load((string)output.Stacks[0].Items[index].Data, 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1);
                  }
                  else
                     image.AddPage(_codecs.Load((string)output.Stacks[0].Items[index].Data, 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1));
               }
               cell.Image = image;
               // 設置以下這幾行代碼非常重要。否則,可能會出現基準線結果錯誤。               for (index = 0; index < depth; index++)
               {
                  // 設置每幀的圖像位置。.
                  cell.SetImagePosition(index, _seriesManager.Stacks[0].Items[index].ImagePosition, false);
               }
               // 請對該系列的圖像方向進行設置,且它只需被設置一次,因為所有的幀必須具有相同的方向值。
               cell.ImageOrientation = _seriesManager.Stacks[0].Items[0].ImageOrientationArray;
               // 請對該系列的像素間隔進行設置,且它只需被設置一次,因為所有的幀必須具有相同的像素間隔值。.
               cell.PixelSpacing = _seriesManager.Stacks[0].Items[0].PixelSpacing;
               // 請對該系列的幀引用UID進行設置。如果該系列和定位器具有相同的引用UID的話,這將在它們之間創建一條基準線。
               cell.FrameOfReferenceUID = _seriesManager.Stacks[0].Items[0].FrameOfReferenceUID;
            }

17. 將如下幾行代碼添加到InitClass()方法的末尾(這將創建一個新的單元格,并將指定的系列填充到其中):

            ' 創建一個包含圖像集合的單元格。
            Dim cell As MedicalViewerMultiCell = New MedicalViewerMultiCell()
            ' 加載該圖像集合。
            Load2DCell(cell)
            //創建一個包含圖像集合的單元格。
            MedicalViewerMultiCell cell = new MedicalViewerMultiCell();
            // 加載該圖像集合。
            Load2DCell(cell);

18. 將如下幾行代碼添加到InitClass()方法的末尾(這將創建一個新的單元格,并將一個被稱為定位器的幀填充到其中):

            ' 創建一個包含定位器的單元格。
            Dim localizerCell As MedicalViewerMultiCell = New MedicalViewerMultiCell()
            ' 加載該定位器。
            LoadLocalizer(localizerCell)
            // 創建一個包含定位器的單元格。
            MedicalViewerMultiCell localizerCell = new MedicalViewerMultiCell();
            // 加載該定位器。
            LoadLocalizer(localizerCell);

19. 現在,將這兩個單元格(系列單元格和定位器單元格)添加到MedicalViewer。為了做到這一點,請將如下這幾行代碼添加到InitClass()方法的末尾:

            ' 將以上的多幀單元格添加到MedicalViewer。
            viewer.Cells.Add(cell)
            ' 將以上的定位器單元格添加到MedicalViewer。 
           viewer.Cells.Add(localizerCell)
            // 將以上的多幀單元格添加到MedicalViewer。
            viewer.Cells.Add(cell);
            // 將以上的定位器單元格添加到MedicalViewer。
            viewer.Cells.Add(localizerCell);

20. 最后,您需要同時啟用這兩個單元格的基準線。為了做到這一點,您只需要將以下這幾行代碼添加到InitClass()方法的末尾:

            ' 在定位器圖像中啟用基準線。
            cell.ReferenceLine.Enabled = True
            ' 在圖像集合中啟用基準線。
            localizerCell.ReferenceLine.Enabled = True
            // 在定位器圖像中啟用基準線。
            cell.ReferenceLine.Enabled = true;
            // 在圖像集合中啟用基準線。
            localizerCell.ReferenceLine.Enabled = true;

21. 如果您運行該程序,現在您將看到兩個單元格:一個上面繪制有一條垂直線,而另外一個上面繪制有一條水平線。

關于其他產品的更多信息,請查看產品詳情

文自:葡萄城


標簽:文檔管理圖像處理文檔圖像文檔處理

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn


為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
相關產品
控件
  • 產品功能:位圖圖像處理
  • 源 碼:非開源
  • 產品編號:10780
  • 當前版本:v23 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: LEADTOOLS 正式授權
  • ">LEADTOOLS Imaging Pro Developer Toolkit

    20多年的老牌圖像處理控件,支持TWAIN掃描、200多種圖像效果、150多種圖像格式…

    控件
  • 產品功能:位圖圖像處理
  • 源 碼:非開源
  • 產品編號:10781
  • 當前版本:v23 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: LEADTOOLS 正式授權
  • ">LEADTOOLS Document Suite Developer Toolkit

    LEADTOOLS Document Imaging Suite SDK是LEADTOOLS SDK中各種特點的精選組合,這套強大的工具利用了LEAD行業領先的圖像處理技術來智能地識別文檔的特征,而根據文檔的特征可以識別掃描的或傳真的任何類型的表格圖像。

    控件
  • 產品功能:位圖圖像處理
  • 源 碼:非開源
  • 產品編號:10782
  • 當前版本:v23 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: LEADTOOLS 正式授權
  • ">LEADTOOLS Document Imaging Developer Toolkit

    多語言的文檔圖像處理控件,支持光符識別處理、條形碼掃描識別等。

    控件
  • 產品功能:位圖圖像處理
  • 源 碼:非開源
  • 產品編號:10783
  • 當前版本:v23 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: LEADTOOLS 正式授權
  • ">LEADTOOLS Medical Developer Toolkit

    LEADTOOLS Medical Imaging是一款醫療成像控件,包含了一些精心挑選的、經過優化的特性,可以滿足醫療成像應用程序開發的特殊需要。

    控件
  • 產品功能:位圖圖像處理
  • 源 碼:非開源
  • 產品編號:10784
  • 當前版本:v23 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: LEADTOOLS 正式授權
  • ">LEADTOOLS Medical Imaging Suite Developer Toolkit

    LEADTOOLS Medical Imaging Suite幫您開發功能強大的PACS和醫學成像應用程序

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    国产精品a成v人在线 | av午夜福利精品一区 | 中文字幕精品亚洲无码视频精品 | 精品国产综合成人亚洲区 | 丰满人妻跪趴高撅肥臀最 | 国产一区二区久久精品 | 99精品国产在热久久无毒 | 国产成人综合亚洲欧美天堂 | 国产一级aa大片毛片 | 国产真人无遮挡作爱免费视频 | 波多野结衣hd系列在线播放 | 91香蕉视频污在线观看 | 在线免费观看成年人视频 | 国产亚洲中文久久网久久 | 亚洲一级毛片免观看 | 成人乱人乱一区二区三区 | 国产超碰人人做人人 | 波多野结衣av大高潮在线观看 | 91大神精品视频 | 无码一级视频在线 | 在线看日韩人妻视频 | 国产欧美日韩综合精品一区二区三 | 国产无遮挡又黄又爽网站 | 国产精品亚洲日韩aⅴ在线 国产精品亚洲色婷婷99久久精品 | 老熟妇高潮一区二区三区 | 亚洲一区日 | 日韩高清 | 91香蕉视频下载 | 国产av无码专区亚洲精品 | 亚洲h成年动漫在线观看网站 | 成a人片亚洲日本久久 | 97制片厂爱豆传媒视频详情介绍 | 超级黄的软件 | 93精品国产成人观看 | 91精品日本久久久久久牛牛 | 亚洲国产欧美日韩精品一区二 | 精品国产a毛片久久久av蜜桃 | 国产aⅴ视频一区二区三区 国产aⅴ天堂亚洲国产av | 丰满人妻一区二区三区视频 | 国产婷婷白色精品 | 色婷婷综合久久久久中文图片 | 午夜亚洲av日韩av无码大全 | 日本一区不卡在线观看 | 精品久久久无码中文字幕天天 | 日韩精品无码免费专区午夜 | 成全视频高清免费观看电视 | 丰满人妻被公侵犯中文电影版 | 老熟女网站 | 精品无码人妻一区二区三区不卡 | 亚洲成国产人片在线观看 | 亚洲不卡2卡3卡4卡5卡入口 | 亚洲欧美成人久久一区 | 国产精品免费看久久久无码 | 精品久久欧 | 国产精品无码无卡无需播放器 | 亚洲av人无码综合在线观看 | 超碰香蕉亚洲香蕉亚洲 | 亚洲国产成人久久精品99 | 中文字幕日产乱码一区 | 午夜精品国产拍精品福利 | 成年在线网站免费观看无广告 | 韩国r级无码片在 | 99国产欧美久久久精品蜜桃 | 国产精品成人无码久久久久久 | 国产一区二区在线 | av免费看在线观看免费 | 99精品一区二区三区无码吞精 | 亚洲av无码一区二区二三区 | 国产丝袜不卡一区二区 | 九九精品亚洲一 | 99re66| 日韩中文人妻无码不卡 | 97亚洲熟妇自 | 国产老妇女牲交视频 | 果冻传媒精品推荐在线观看 | 午夜成人亚洲理伦 | 亚洲国产日韩在线观看18 | 国产裸拍裸体视频在线观看 | 欧美日韩变态另类在线观看 | 国产熟女一区二区三区五月婷 | 99精品众筹模特在线 | 99re视频免 | 亚洲精品乱码久久久久久久久久久久 | 91精品久久人人妻人人做 | 国产乱子伦在线观看 | 91精品日本久久久久久牛牛 | 亚洲国产成人 | 91成人啪国产啪永久地址 | 国产在线精品一区免费香蕉 | 最新中文字幕强奸乱伦亚洲五码 | 亚洲av无码成人精品区天堂 | 性推油按摩av无码专区 | 亚洲精品无码久久久久久 | 亚洲av无码乱码在线观看性色扶 | 91在线无码精品入口91资源齐全 | 亚洲av美女一区二区三区 | 国产男女综| 中文字幕亚洲综合久 | 亚洲午夜精品无码专区在线播放 | 一级做a爱全免费视频免费 一级做a爰片 | 日本无码中文精品a8198v | 欧美a级片免费看 | 91人妻人人澡人人爽人人精品乱 | 亚洲三级片在线观看 | 国产高清视频在线观看69 | 亚洲线精品一区二区三区 | 国产91影院 | av无码午夜福利一区二区三区 | 成年女人毛片免费观看97 | 极品少妇一区二区三区四区 | 天天躁夜夜躁狠 | 国产一区二区不卡 | www久久久天天com| 亚洲avav天堂av在线精品一 | 极品尤物一区二区三区 | 欧美一级 | 欧美成人精品一级在线观看 | 囯产精品一品二区三区 | 精品国产乱码久久久久 | 国产一级av免费观看在线 | 国产成年码av片在线观看 | 成人无码av一区二区 | 欧美在线播放一区二区 | 国产97在线观看 | 精品国产av无码一区二区三区 | 激情视频国产精品 | 99国产成人高清在线观看 | 人人干狠狠操 | 色婷婷在 | 日本中文字幕免费 | 91精选| 欧美色伊人 | 国产香蕉国产精品偷在线 | 亚洲精品无码久久久久冒白浆 | 国产成人亚洲日韩欧美 | 综合在线无码一 | 香蕉网在线 | 无码毛片一区 | 中文字幕久久人妻无码人妻出 | 亚洲中文字幕乱码无码一区二区 | 午夜丰满少妇一级毛影院 | 91麻豆精品国产91久久久久久久久 | 亚洲av永久无码一区二区三区 | 熟女少妇 | 国产国拍亚 | 少妇a级毛片人成网 | 日韩一区二区三区免费高清 | 91精品一区二区三区在线播放 | 妇女精品一二区 | 国产欧美a∨一区二区 | 中文字幕av一区 | av免费不 | 丰满岳乱 | 91久久精品国产亚洲 | 国产福利一区二区三区视频在线 | 91最新精品视频在线 | 免费一区二区福利视频在线 | 国产日韩欧美一区二区东京热 | 日韩美女拍拍免费视频网站 | 国产麻豆剧果冻传媒一区 | 中文字幕在线资源站 | 国产白嫩漂亮美女在线观看 | 综合黑丝美腿性爱视频 | 国产欧美综合一区二区三区 | 国产午夜精品久久久久九九电影 | 日日摸夜夜添夜夜添国产三级 | 午夜理论在线观看视频无码 | 麻豆乱码久久久 | 黄网站色视频免费观看无码一区 | 麻豆久久亚洲av | 色五月丁香花自拍自偷国产 | 亚洲精品天堂 | 欧美一级久久久 | 亚洲熟妇无码一区二区三区导航 | 在线麻豆 | av在线无码专区一区 | 日本高清无日本 | 97久久婷婷五月综合色d啪蜜芽 | 国产手机视频在线观看 | 国产99久久亚洲综合精品西 | 日日摸夜夜摸狠狠摸婷婷 | 91精品天美精东蜜桃传媒入口 | 波多野42部无码喷潮在线 | 91麻豆精品国产 | 成人青草亚洲国产 | 日本不卡一区二区高清久久久 | 亚洲欧美高清在线精品一区二区 | 国产成人无码精品不卡 | 色婷婷av国产精品欧美毛片 | 91最新国 | 国产人碰人摸人爱视频 | 国产女人高潮视频在线观看 | 国产99久久精品一区二区 | 欧美日韩一区二区三区高清在线 | 日韩亚洲产在线观看 | 国产午夜在线观看 | 午夜福利视 | 内射无套内射国产精品视频 | 国产特级亚州一级淫片 | 91免费无码国产在线观看 | 欧美区精品系列在线观看不卡 | 国产成人高清在线播放 | 亚洲精品一区二区三区麻豆 | av电影在线播放 | 国产成人精品无码免费视频 | 欧美日韩精品久久久久 | 国产成人aaaaaaa毛片 | 91免费在线视频 | 午夜婷婷一夜 | 国产视频福利久久久久精品 | 日日夜夜精品视频天天7799男男 | 国产白丝丝高跟在线观看 | 毛片无遮挡高清免费 | 精品熟女碰碰人人a久久 | 日本a级精品一区二区三区 日本a片把舌头伸进 | 国产综合精品91久久久 | 一区二区三区视频 | 四虎成人精品国产永久免费无 | 爱福利视频| 无码国产精品一区二区免费式芒果 | 精品一区二区三区在线视频 | 国产精品v亚洲精品v日韩精品 | 中文字幕无码不卡免费视频 | 午夜福利视频合集4000手机 | 精品无人区一区二区三区在线 | 国产乱老熟视频乱老熟女51 | 丰满奶水出奶水 | 欧美日韩人妻精品系列一区二区三区 | 日韩精品一区二三区中文 | 亚洲一区二区三区免费在线观看 | 91亚洲中文字幕在线播放 | 在线亚洲精品中文字幕小视频 | 国产一区二区三区免费在线 | 精品国产三级a在线观看 | 中日av乱码一区 | 91欧美精品国产制服第一页 | 无码一区精 | 国产avxxxx无套内射 | 国产成人啪精品视频免费网 | 国产成人久久av免费 | 天美传媒麻豆精东蜜桃 | 亚洲一区二区三区91 | 国产suv精品一区二区6 | 欧美日韩一区二区亚洲 | 无码精品少妇 | 精品第一国产综合精品aⅴ完整版 | 午夜福利视频无码 | 欧美丰满熟妇xx猛交 | 国产一区二区在线不卡 | 黑人和国产小电影 | 国产成人av无码网站久久 | 色系一区二区三区四区五区 | 91色色无码综合国产 | 人妻无码aⅴ中文字幕日韩 人妻无码aⅴ中文字幕视频 | 国内精品久久久久影院优 | 国产91精品在线观看 | 国产三级精品天天在 | 中日韩国 | 综合激情校园第一页 | 国产99对白在线播放 | 精品无码成人久久久久久动漫 | 精品国产午夜福利精品推荐 | 精品一区二区三区视频在线观看免 | 精品国产a∨无码一区二区三区 | 亚洲精品乱码 | 99久久久国产精 | 国产免费人成在线观看视频 | 日韩好片一区二区在线看 | 人人狠狠久久综合亚洲婷婷 | 国产成人h视频在线播放不卡 | 国产精品网站一区在线观看 | 精品亚洲一区二区在 | 91天堂素人精品系列全集亚洲 | 日本中文一二区高 | 麻豆果冻传媒新剧国产杜鹃 | 午夜播放器最新版 | 国产在线精品一区二区三区 | 亚洲成av人片无码不卡播放器 | 国产一级特黄大片在线观看 | 日韩中文字幕精品视频在线 | 中文字幕人成 | 91导航小污女导航天天夜夜爽 | 精品国产 | 国产乱码精品一区二区三区香蕉 | 国产av巨作无遮挡 | 香蕉伊思人视频 | 亚洲精品无码高潮喷水在线 | 亚洲综合精品香蕉久久网 | 欧美另类 | 人妻日韩精品中文字幕 | 亚洲欧美精品日韩欧美 | 午夜精品无人区乱码1区2在教室轮 | 91精产国品、ccm | 久本草在线中文字幕 | 91在线无码精品秘在线观看 | 国产ww久久久久久久久久 | 亚洲av无码一区二区三区电影 | 国产精品亚洲一区二区三区久久 | 国产午夜福利在线视频导航 | 最新中文字幕强奸乱伦亚洲五码 | 久久成人麻豆午夜电影 | 97嫩草国产在线观看www免费 | 狠狠色中文字幕久久一区二区 | 亚洲av无码精品国产午夜久久 | 91精品国产综合久久青草 | 亚洲国产成人精品无码区在线网站 | 午夜成人理论福利片 | 亚洲午夜福利院在线观看 | 成人午夜性a一级毛片 | 国产极品美 | 国产成人久久精品77777 | 国精产品一区二区三区四区糖心 | 色婷婷六月亚洲综合香蕉 | 日日碰狠狠添天天爽不卡 | 3d动漫精品一区二 | 91午夜精品久久久久精品 | av喷水高潮喷水在线观看 | av天堂精品久久久久 | 国产精品嫩草影院永久第一 | 日韩欧美国产一区二区三区免费 | 人妻无码熟妇乱又伦精品视频 | 亚洲中文字幕不卡一区二区三区 | 中文字幕人妻一区二区在线视频 | 精品成人av一区二区三区 | 日本特级淫片免费看 | 国产剧情台湾swag突袭计划 | 日韩av无码社区一区二区三区 | 99视频精品全部免费在线 | 亚洲v国产v天堂a无码二区久久 | 99re8精品视频在线播放 | 无码专区 | 无码国产一二三区 | 国产精品视频观看久久 | 69国产超薄丝袜足j在线直播 | 国产av | 国产精品成人一区二区不卡 | 欧美freesex黑人又粗又大长 | 丰满人妻一区二区三区46 | 成人综合网站在线 | 国产伦精品一区二区三区视频猫咪 | 国产av无码专区亚洲av麻豆 | 无码任你躁久久久久久老妇双奶 | 国产成人精品日本亚洲77美色 | 国产一区三区二区中文在线 | avtt香蕉久久 | 亚洲av无码专区亚洲av | 日韩人妻香蕉网在线 | 成人黄色在线观看 | 日本高清成本人视频一区 | 国产精品色婷婷亚洲综合看片 | 国产激情三级在线观看 | 久久99青青精品免费观看 | 国产精品99久久久久久人 | 中文字幕在线观看 | 午夜理论片在线观看免费 | 国产av无码国产av毛片 | 国内精品国语自产拍在线观看91 | 99久久无色码中文字幕 | 丰满人妻熟妇乱又伦精品视 | 日韩黄色一级片欧美一级网址 | 人妻aⅴ免费精品免费视频观看 | 99re在线视频精品观看9 | 成人免费a级毛片 | 97嫩草国产在线观看www免费 | 91成人试看福利体验区 | 亚洲av无码乱码国产麻豆穿越 | 国产成人午夜高潮毛片刘涛 | 人妻精品日韩一区二区三区 | 欧美成人一区二区三区不卡视频 | 午夜欧美精品久久久久久久 | 国产对白在线观看下载 | av色国产色拍 | 国产成人av激情在线播放 | 久久99一区 | 午夜性色福 | 日本中文字幕亚洲乱码视频 | 中文字幕无码在线观看 | 欧美日韩亚洲动漫在线 | 99久久久| 欧美日韩精品一 | 在线观看黄色小 | 欧美亚洲久久久久久久综合 | 中文字幕熟妇人妻在线视频 | 亚洲国产成人久久99精品 | 国产特级亚州一级淫片 | 亚洲va国产va欧美 | 国产美女久久精品香蕉69 | 熟妇人妻系列aⅴ无码专区友 | 99热这里只有精品第一页 | 国产成人亚洲日本精品 | 韩国三级无码高在线观看 | 丝袜美腿 | 一级一片在线播放在线观看 | 亚洲视频无码在线观看 | 国产黄色小视频 | 精品无码又大又粗又黄的免费视频 | 午夜福利无码不卡在线观看 | 毛片免费视频在线观看 | 精品无码一区二区三区爱欲 | 午夜福利无码不卡在线观看 | 丰满爆乳无 | 国产日产欧美精 | 精品粉嫩 | 少妇精品揄拍高潮少妇 | av免费不卡国产观看高清 | av喷水高潮喷水在线观看c | 国产免费av片在线观看播放 | 99久久久久国 | a网站在线观看 | 九一九色国产 | 精品久久久久久无码中文字幕 | 欧美真人抽搐一进一出gif | 97久久久人妻一区精品 | 午夜视频免费在线观看 | 午夜亚洲日本在线 | 国产亚洲vr软件 | 亚洲成av人片在线观高清 | 国产成人无码精品一区在线观看 | 91性高湖久久久久久久 | 人妻少妇精品久久久久中文 | 国产成人午夜福利免费无码r | 国产伦精品一区二区三区在线观看 | 天天躁日日躁狠狠躁av中文 | 最新国内久久免费视频 | 日韩午夜影院在线观看 | 无码a级毛片久久 | 亚洲国产一成久久精品国产成人综合 | 国产aⅴ久久免费精品 | 日韩丰满少妇无码内射 | 亚洲成av人片一区二区密柚 | 国产成人精品电影在线观看 | 国产av无码专区亚洲av麻豆 | 国产av一区 | 亚洲av无码乱码麻豆精品国产 | 91精品人妻一区二区三区浪潮 | 精品国产91久久久久久 | 精品福利视频导航 | 91精选日韩综合永久入口 | 日本一区二区三区字幕 | 在线亚洲人成电影网站色www | 精品人妻出轨久久 | 国产video视频在 | 性推油按摩av无码专区 | 香蕉视频官网 | 久久大香萑太香蕉av黄软件 | 国产人成精品综合欧美成人 | 午夜影城无码专区 | 国产亚洲色视频在线 | 久久99爰这里有精品国产 | 精品香蕉一区二区三区 | 日本精品一区二区三区在线视频 | 亚洲福利一区福 | 日韩久久精品无码av | 91欧美一| 精品久久久无码人妻中文字幕 | 午夜福利看片 | 亚洲av无码国产精品色午夜软件 | 国产在线无码尤物视频 | 性情中人中文网 | 亚洲欧美日本国产专区 | 国产丶欧美丶日韩丶不卡影视 | 午夜精品男人的天堂 | 91传媒在线超清免费在线观看 | 亚洲一区二区免费在线观看 | 91视频聊天com| 精品少妇人妻av免费久久洗澡 | 国产在线中文字幕 | 亚洲国产中文综合一区第一页 | 人人澡人人澡人人看添av | 国产精品综合色区在线观看 | 国产国语三级黄色战线免费观看av | 十八禁动漫 | 日本欧美在线高清 | 国产精品网红尤物福利在线观看 | 在线免费视频成人 | 少妇精品无码一 | 国产精品日韩欧美久久综合 | 精品91| 91欧美在线| 精品成人免费国产片 | 在线无码专区人妻 | 午夜三级福利在线观看 | 丰满多水的寡妇毛片免费看 | 99精品久久久久久久久久综合 | 成人午夜精品视频在线 | 妖精色av无码国产在线看 | 国产在线每日 | 亚洲欧美视频一区二 | 国产一区一二区高清不卡 | 丰满熟妇乱又伦在线无码视频 | av丝袜一区大片在线观看 | 国产综合精品一区三区 | 日本成熟丰满老妇xxxx | 91免费看`日韩一 | 99re精彩视频 | 日本高清一区二区在线 | 国产aⅴ无码专区亚洲av | 亚洲无码久久av | 内射无套内射国产精品视频 | 日韩不卡在线播放 | 亚洲一级av影视在线观看 | 午夜福利无码不卡在线观看 | 97伦理手机高清免费在线观看 | 成年女人免费 | 狠狠色综合激情丁香五月 | 欧美日本三级级在线观看 | 欧美日韩激情亚洲国产 | 日本多人强伦姧人妻完整版 | 成人av无码专区亚洲av | 精品在线一区二区 | 人妻在线 | 欧美性久久 | 欧美亚洲国产日韩综合在线播放 | 亚洲成av人网站在线播放 | 日本高清18xxxx| a级毛片观看 | 亚洲国产另类精品 | 黄色片在线免费观看 | 久别的草原电视剧免费观看高清 | 国产又爽又黄无遮挡的视频 | 精品熟女国产久久少妇aⅴ免费狠 | 91九色在线观看 | 91久久人人爽亚洲精品美女 | av无码精品久久久久精品免费 | 熟妇人妻午夜寂寞影院 | 国产白丝jk捆绑束缚调教视频 | 亚洲av无一区二 | 91大神的探花视频 | 亚洲男人在线观看无码 | 国产不卡高清在线观看视频 | 99久久国产综合精品1 | 国产一区国产精品精品三 | 国产精品视频一区国模私拍 | 日韩人妻一区 | 国产999久久免费高清 | 亚洲精品视频在线播放 | 国产免费av东京热 | 国产在线无码一区二区三区 | 91久久九九精品国产综合 | 98精品国产高清在线看入口 | 亚洲精品在线视频 | 午夜播放器app2025最新 | 日本xxxx高清色 | 99无码一区二区 | 午夜理理伦a级毛片天天看 午夜理理伦电影a片无码 | 亚洲欧美一 | 亚洲精品亚洲人成在线观看麻豆 | 麻豆果冻传媒av人妻少妇无码 | 久久99精品亚洲乱码三区 | 精品久久aⅴ人妻中文字幕 精品久久av电影 | 在线天堂官网 | 国产高潮又爽又无遮挡又免费 | 成人影院 | 亚洲午夜精品一级在线播放放 | 成人亚洲欧美久久久久 | 亚洲精品国产 | 日本韩高清视频一区二区三区免费式 | 亚洲成人黄色在线观 | 日本熟女乱子视频 | a级国产乱理论片在线观看丶 | 国产91高跟肉色丝袜 | 国内大量揄拍人妻精品視頻 | 国产福利姬视频导航入口 | 少妇被躁爽到高潮无码文 | 在线观看日韩欧美大片 | 99久久婷婷国产综合精品青草免 | 国产福利直播在线观看 | 人少妇乱子伦精 | 亚洲精品99久久久久中文字幕 | 日本一区 | 久草视频| 国产成人自拍精品视频 | 亚洲熟女乱综合一区二区 | 国产a一级毛片爽爽影院无码 | 国外精品视频在线 | 精品国产成人三级在线观看 | 国产一区二区视频在线观看 | 91超碰中文字幕久久精品 | 99久久精品免费看国产一区二 | 精品成人大胸美女视频在线播放 | 国产白嫩精品久久久久久 | 亚洲午夜精品久久久天堂 | 亚洲日本va午夜在线影院 | 黄片在线免费播av | 蜜月av| 国产成人无码午夜视频在线 | 国产亚洲视频在线观看 | 亚洲日韩在线观看不卡 | 亚洲精品字幕在线观看 | 日韩成人毛片高清视频免费看 | 国产人妻高清国产拍精品 | 国产91麻豆免费观看 | 99精品国产热久久婷婷天堂 | 免费一级成人毛片 | 日韩av无码专区免费 | 国产成人无码一区二区在线播放 | 怡红院怡春院欧美精品 | 91成人试看福利体验区 | 午夜日韩电视剧在线观看 | 四虎国产精品永久免费网址 | 香蕉久久一区二区三区电影 | 国产午夜福利一区在线观看 | 国产免国产免‘费 | 中文字幕久久 | 亚洲欧美日韩在线播放 | 制服丝袜99在线不卡 | 国产无线卡一卡二 | 久久av无码精品人妻系列 | 精品无码超碰动画 | 欧美成人精品三级在线观看 | 黄色成人网站免费无码av | 日本在线视频www色 日本在线视频网 | 少妇高潮毛片免费观看a片 少妇高潮毛片色欲ava片 | 99热久久这里只精品国产www | 韩国免费a级作爱片无码 | 精品无码视频 | 91精品一区二区三区在线播放 | 亚洲av无码潮喷在 | 午夜丁香婷婷免费手机在线观 | 亚洲精品午夜久久aaa级久久久 | 国产成人午夜福利电 | 爆乳护士一区二区三区在线播放 | 日韩欧美亚洲动漫综合 | 国产手机在线播放 | 欧美内射深 | 国产精品自产拍在线观看涩 | 97久久国产露脸精品国产 | 国产呦精品一区二区三区 | 欧美激情一区二区久久久 | 国产午夜精 | 在线观看黄aⅴ免费观看 | 91精品免费不卡在线观看 | 亚洲av无码一区二区三区电影 | 麻豆国产福利91在线 | 色欲影视天天综合 | 69成人免费视频无码专区 | 亚洲精品一区中文字幕乱码 | 精品久久人人爽天天玩人人妻 | 欧美乱妇高清无乱码免费 | 色婷婷在| 国产av午夜精品一区二区入口 | 国产a一级无码毛片一区二区三区 | 99热这里只有精品第一页 | 精品自拍视频在线观看电影 | 国产综合久久久久久鬼色 | 国产精品无码久久久久成人麻豆 | 国产麻豆精品 | 亚洲av成人中文无码专区 | 精品视频一区 | 亚洲成a人片在线观看网站 亚洲成a人片在线观看无码 | 国产第一在 | 无码av专区 | 欧美日韩午夜情爱在线 | 91导航小污女导航天天夜夜爽 | 成人无码h免费动漫在线观看 | 国内美女高潮抽搐潮白浆网站 | 精品一区二区三区东京热 | 成人午夜福利电影 | 亚洲av无码专区亚洲av | 午夜在线欧美曰韩精品影视 | 欧美日韩国产码高清综合人成 | 色系视频在线观看免费 | 亚洲日本一区二区 | 日本高清一本一区二区三区 | av超燃电影先生免费观看影视大全 | 在线播放真实国产乱子伦 | 亚洲高潮痉挛中文 | 丰满人妻一区二区三区46 | www污污污网站在线观看美女被操 | 熟妇人妻午夜寂寞影院 | 国产无码 | 国产亚洲精品成人 | 超碰人人超碰人人 | 制服丝袜99在线不卡 | 91国内精品久久 | 国产a网欧美午夜性 | 无套内谢少妇毛片a片打工皇帝 | 欧美成人一区二区三区不卡视频 | 东京一区二区三区高清视频 | 亚洲精品乱码久久久久久不卡 | 国产乱国产乱老熟300部视频 | 在线观看av不卡网站永久 | 97超级碰碰碰碰久久久久 | 中文无码在线观看可乐视频 | avtt天堂网人妻系列 | 亚洲精品综合在线一区二区 | 国产日本高清在线观看 | 亚洲精品天堂无码中文字幕 | 蜜臀色欲av在线播放国产日韩 | 国产男女猛烈视频在线观看 | 国产成人99久久亚洲综合精品 | 免费无码片国产在线观看 | 香蕉欧美成人精品a∨在线观看 | 无套内射无码 | 国产一区三区二区中文在线 | 99精品国产在热久久无毒 | 免费无码av片在线观看 | 亚洲国产成人久久综合野外 | 国产人妻精品一区二区三区不卡 | 国产午夜理论片不卡在线观看 | 欧美va久久久噜噜噜久久 | 成人妇女免费播放久久久 | 老司机免费视频福利0 | 人妻熟妇乱又伦精品视频 | 无人视频免费观看免费视频 | 97无码超碰中文字幕 | 91久久久无码国产精品免费 | 成人免费一级纶理片 | 国产男女猛烈无遮挡a片 | 国产中文字幕乱人伦在线 | 日韩激情中文字幕一区二区 | 99久久er热在这里只有精品16 | a级毛片在线观看 | 无码人妻精品一区二 | 国产免费av在线播放不卡 | 欧洲电视剧排行榜 | 亚洲一区二区 | 亚洲视频国产精品 | 国产免国产免‘费 | 麻豆国产精品va在线观看不卡 | 成人福利在线观看免费视频 | 欧美人与禽zozo性伦交 | 国产伦子沙发午休系列资源曝 | 精品91海| 亚洲aν伊人久久综合密臀性色 | 午夜精品久久久久久仙踪林 | 午夜色网站 | 亚洲精品无码高潮喷水在线 | av男人的天堂在线观看第三 | 国产曰的好深好爽免费视频 | 日本精品三级视频 | 午夜理理伦电影a片无码 | 国产成人av区一区二区 | 亚洲电影日本强d在线播放 亚洲电影日韩精品 | 亚洲av一点也不卡一区二区 | 精品久久久久久国产 | 99re视频热这里只有精品 | 国产成人免费97在线 | 人妻丰满熟妇 | 国产免费网站看v片在线观看 | 成人午夜小视频手机在线看 | 国产亚洲精品久 | 91精品国产91 | 国产日韩av一区二区三区无码 | 日本亚洲欧洲免费无线码 | 久久99精品久久久久久9 | 国产av一区二区三区传 | 亚洲成a人片在线观看高清 亚洲成a人片在线观看国产 | 亚洲午夜福利国产门事件 | 国内高清无码一二三区 | 精品人妻系列无码人妻 | 国产美女视频久久午夜 | 欧美综合在线一区 | 激情成人 | 91国内 | 亚洲一卡一卡二 | 精品一区二区三区国产在线观看 | 一区二区国产高清视频在线 | 99精品热在线在线观看视频 | 午夜男女无遮掩免费视频 | 91导航app| 国产黄色小视频 | 日日做夜夜爽夜夜爽 | 91视频免费版app下载 | 国内精品久久久久久99 | 国产91av在线播放 | 成人黄色网站视频麻豆8 | 中文字幕无码中文字幕有码a | 91在线无精精品秘?入口 | 日本成a人片在线观看影院 日本成人 | 国产香港日本三级在线观看 | 91在线视频播放 | 国产无套护士精品毛片 | 午夜尤物超在线视频 | 日韩欧美系列精 | 国产a国产国产片 | 日韩精品中文字幕一区二区三区 | 亚洲国产精品无码成人片久久 | 韩国av片永久免费 | 1区2区3区内容究竟如何?无需下载 | 国产精品一区二区久久 | 亚洲欧美久 | 国产精品亚洲а∨无码播放麻豆 | 91国内| 国产成人影院 | 99久久国产精品一区二区 | 91网在线 | 99久久久| 国产亚洲午夜高清国产拍精品 | 99久久精品无码一区二区毛片免费 | 国产午夜福利片在线观看 | 中文字幕亚洲一区 | 欧美极品尤物在线播放一级 | 精品国产美女福到在线直播 | 亚洲第一看片 | 亚洲欧美日韩中文另类不卡 | 狠狠色婷婷狠狠狠亚洲综合 | 办公室秘书无码激情av | 成人午夜视频精品一区 |