日韩福利首页在线观看网站-日韩福利免费网站视频在线-日韩福利局二区视频-日韩福利-日韩二区在线-日韩二区三区四区-日韩二区三-日韩电影中文字幕

半岛外围网上直营

LeadTools 使用基準線

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

概述:在本教程中,您將學習到如何在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@ke049m.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
    利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 亚洲欧美综合图 | 国内精品自线在拍 | 亚洲人精品 | 中文字字幕乱码 | 免费poren国| 51国产愉自视频区视频 | а√天堂8资源中文在线 | 男人tv天堂精品一区二区 | 色五月播五月开心五月激 | 日韩一区二区三区免费高清 | 国产亚洲精品线观看不卡 | 免费视频在线观看cc | h片在线观看免费观看视频 国产午夜在线激情视频 | 国产欧美一区二区精品性色 | 亚洲日本国产乱码va在线观看 | 韩国男女 | 国产精品自拍 | 欧美亚洲国产日韩精品在线观 | 男人的j | 日韩一级毛一欧美一级毛免费 | 欧美精品一区二区三区在线 | 国产91精品露脸国语对白 | 国产日韩aⅴ在线播放 | 成年女人喷潮视频免费观看 | 日本中文字幕在线免费观看视 | 欧美激情全球免费视频 | 不卡视频一区二区 | 日韩国产高清一区二区卡通动漫 | 日本三级强在线观看 | 香蕉在线精品视频 | 国产精品亚洲第一区在线观 | 午夜神马| 国产小说 | 奇米精品视频一区二区三区 | 欧美日韩国产一线天午夜秀场 | 国产一级淫片a免费播放口欧美 | 日本精产品久观看视频下站 | 精品国精品国 | 国产卡二卡3卡4卡四卡 | 一区二区三区免费在线观看视频 | 国产炮机主播在线观看 | 国内精品久 | 国语免费 | 中文字幕免费观看一区 | 98精品国产| 日韩精品国产另类专区 | 另类综合视频在线 | 丰满饥渴老女人hd | 区三区成人精品 | 日韩欧美一区二区不卡看片 | 九九99精品視頻一区 | 国产区亚洲天堂一区二区三 | 99re国产在线观看 | 国产一级毛 | 成人永久福利在线观看不卡 | 亚洲日韩a | 欧美中文字幕人人视频 | 精品国产高清自在线一区二区 | 国产午夜在线观看免费 | 日韩一级欧美一级一级国产 | 免费国产日韩视频在线观看 | 在线观看日产一区二区三区 | 中文日产 | 欧美成在人线a免费 | 在线亚洲欧美日韩每日更新 | 国产午夜福利在线不卡 | 日韩精品不卡国产3区国产区1 | 凹凸导航午夜福利 | 亚洲精品国产精品精 | h在线观看情趣视频 | 欧美巨大黑人暴力xxxxx黑人 | 秋霞电影院 | 精品免费一 | 日本理论片和搜子同居的日子电 | 日韩欧美国产综合 | 欧美无砖专区一中文字 | 国产在线午夜不卡精品影院 | 午夜免费啪视频观看视频 | 亚洲日韩国产欧 | 麻婆豆传 | 中文字幕高清免费日韩视频在线 | 日本亚洲黑人在线播放 | 国产鲁鲁视频在线观看免费 | 日韩欧美亚洲中文字幕 | 亚洲一区中文 | 免费岛国小视 | aⅴ另类| 麻花豆传媒mv在线观 | 日本高清一区免费中文视频 | 欧美v亚洲v综 | 欧美毛多| 亚洲精品老司机在线观看 | 日韩在线一区二区 | 亚洲欧美精 | 国产不卡一区二区三区免费视频 | 国产日产成人免费观看日 | 欧美激情国产 | 国产欧美日韩综合自拍 | 好看的手机电影 | 91丝袜在线观看 | 国产系列欧美系列每日更新 | 欧美日韩高清免费观看 | 日韩精品一区二区三区中文在线 | 欧美一区二区三区四区婷婷 | 精品国产一区二区在线观看 | 亚洲国产国语自产精品 | 国产精品v亚洲精品v日韩精品 | 欧美xxxx做 | 中文字幕午夜福利片午夜福利片 | 99亚洲精品高清一二区 | 欧美三极婬片网站 | ww成在线人免1688费欧美 | 朝鲜女人大白屁股ass孕交 | 日本黄一级日本黄二级 | 国产福利自产拍在线观看 | 99热这里只有精品 | 国偷自产一区在线视频 | 国产日韩制服丝袜在线第一页 | 日本高清视频www夜色资源 | 亚洲国内自拍欧美一区二区三区 | 国产无遮羞在线观看网站 | 丝袜美腿女邻居人 | 亚洲国产日韩在线播放 | 天天综合网天天综合 | 亚洲男人的天堂在线aⅴ视频 | 日韩aⅴ精品一区二区视频高清 | 国内精品 | 亚洲第一区欧美日韩 | 男人精品一线视频在线观看 | 欧美亚洲精品免费高清 | 男女车车的车车网站w98免费 | 国产乱码精品一区在线观看a | 欧美精品黄页在线观看2区 日韩美中文字幕一二三区 国产精品nv在线观看 | 亚洲日韩成人精品不卡在线 | 99这里只有精品在线观看视频播 | 中韩欧美视频一区 | 国产一区二区四区在线观看 | 国产精品三级三级 | 国产在线观看免费视频 | 国产不卡一区二区三区免费视频 | 日本激情夜里视频在线观看 | 91直播| 国产高清在线视频一区二区三区 | 欧美一区二区不卡视频 | 含羞草国产亚洲精品岁国产精品 | 国产免费观看大片黄 | 亚洲视频偷拍视频2亚 | 蜜桃视频高清免费 | 国内视频在 | 老司机试看午夜 | 亚欧乱色国产精品免费视频 | 免费中文字幕不卡视频 | 亚洲91视频网站 | 欧美特一级 | 国产日韩手 | 性xxx免费视频 | 在线观看播放 | 国产一区二区影视 | 亚洲综合激情五月丁香六月 | 国产视频网站在线观看 | 国产专区第一页 | 国产精品有码在线观看播放 | 国内三级自 | 国产99视频精品免费看 | 国产成年精品高清在线观看91 | 国产亚洲精品资源在线 | 国产精品中文字幕在线观看 | 亚洲国产精品资源 | 韩国三级香港三级日本三级la | 国产一卡2卡3卡四卡精品网站 | 欧美一区二区三区 | 国产精品偷伦费 | 欧美综合精品久 | 91网址| 欧美在线精品国自产拍免费 | 91大神在线电影 | 国产精品一级国产精品片 | 国产极品美女在线播放 | jizz成熟丰满 | 亚洲a级情欲片在线观看 | 色色色色色色资源女人天堂 | 一区二区三区高清视频 | 麻花豆传媒剧国产免费mv观看 | 欧美性色欧美a在线在线播放 | 日韩免费超级乱婬视频播放 | 手机在线看电影的网站 | 日本五级床片午夜视频 | 国产三級 | 国产黑色丝袜在线观看一区 | 国产精品自在拍在线播放 | 国产不卡视频在线 | 免费观看日本污污ww网站 | 50岁退休| 国产黄a三级三级三级 | 国产日本一区二区三区 | 亚洲痴女 | 局长含着 | 麻花豆传媒剧国产免费mv观 | 国产男生夜| 国产国语一级在线播放视频 | 国精品午夜福 | 国产乱子夫妻 | 区免费在线观看 | 欧美日韩一区日本成人一区二区 | 国产狂喷潮在线观看国产片 | 成年奭片免费观看午夜 | 欧美日韩一级无毛 | 日本强乱中文字幕42页在线 | 日韩欧美一 | 成人乱妇在线播放 | 欧美日夜干影院 | 日本欧美一区二区 | 国产v片在线播放免费观看大全 | 26uuu另类欧美亚洲曰本 | 真实国产乱子伦精品 | 国语fre| 欧美日韩国产综合一区精 | 国产尤物极品在线视频播放 | 豆国产94亚洲欧美 | 国产午夜福利在线 | 日韩欧美一区黑 | 国精产品一品二品国精品69x | 国产精品影片在线免费观看 | 全日爱韩国视频在线观看 | 福利一区二区三区视频在线观看 | 国产日韩欧美亚欧在线观看 | 亚洲日产综合欧美一区二区 | 国产日韩在线看 | 国产91精品秘入口蝌蚪简爱 | 亚洲高清二区 | 全部视频欧美日韩在线无人 | 欧美性爱超长大吊网站 | 草草线禁成18年在线视频 | 国产一区二区三区高清在线观看 | 日韩在线视频不卡一区二区三区 | 免费ā片在线 | 免费午夜拔丝袜 | 成年人影片免费看 | 一级女性全黄生活片免费 | 精品国产第一国产 | 日本2025一道国产高清视频 | 国产精品剧情一区二区在线观看 | 亚洲老妈激情一区二区三区 | 国产巨作在线无遮 | 日本伦理电影网免费播放 | 韩国在线观看日韩免費資訊 | 免费国产一区二区8x | 欧美日韩中文字幕视频 | 日本三区不卡高清更新二区 | 日本高清中文字幕免费一区二区 | 91精品成人免费国产片 | 性爱网在线免费 | 国产伦精品生活一区二区三区 | 青青草免费国产视频网站 | 国产精品中文第一字幕 | 日韩午夜免费超清视频在线观看 | 国产在线每日更新 | 99精品国产自在现线国产品在 | 国产免费mv大全视频网站 | 91九色李宗瑞在线观看 | 国产乱子伦对白视频 | 宝贝乖把腿分大一点h欧阳凝小说 | 欧美色吊丝人人添人人摸 | 国产精品1区在线播放 | 国产综合精品一区99成人 | 日韩精品亚洲中文 | 成人性生交大片免费看4 | 免费看国产 | 国产高清在线男人的天堂 | 国产香蕉一人在线视频 | 午夜国产 | 1024国产看片在线 | 99视频精品全部免费 | 大地资源影视 | 精品国内一区二区三区免费视频 | 国产caouv在线观看 | 凹凸国产熟女精品 | 精品国产高清自在线一区二区三区 | 国产欧美一区二区三区户外 | 日韩一本之道一区中文字幕 | 国产美女主播在线 | 欧美在线一级va免费 | 九九热精品免费观看 | 欧美综合婷婷欧美在线 | 欧美日韩一区二区三区高清在线 | 欧美日韩一区二区三区精品播放 | 国产激情丁香在线观看网址大全 | 精品自拍视频在线观看电影 | 精品福利一区二区在线观看 | 黑人巨大跨 | 日韩免费高清完整版 | 在线观看免费人成视频国产 | 综合国产日韩亚洲 | 国产污视频网站 | 国产黑色丝袜在线观看一区 | 有码在线中字 | 偷拍视频一区二区三区 | 午夜电影院 | 国产精品日本一区二区在线 | 国产区精品高清在线观看 | 歐美一區二區三區 | 国产一区在线看 | 九九在线精品视 | 国产中文字幕手机视频 | 欧美综合图区亚洲综自拍 | 国产免费又刺激 | 国产精品厕所电影 | 国产高清一区二区在线免费观看 | 美女撒尿一区二 | 色老板精品视频在线观看 | 巨胸喷奶水视频www 男女一进一出超猛烈的视频 | 日韩欧美综合在线制服 | 日韩草逼 | www.自拍偷拍.com| 国产大片免费天天看 | 日韩中文字幕视频 | 国产精品日产欧美在线一区 | 欧美亚洲日本韩国 | 大地资源高清在线视频播放 | 不卡一卡二卡三乱码免费网站 | 成人国产经典视频在线观看 | 日韩一级中文字幕 | 国产精品吹潮在线观看中文 | 亚洲色大成网 | 99成人国产精品视频 | 国产日本韩国 | 国产精品剧情一区二区在线观看 | 手机看片久 | 国产悠资源视频在线观看 | 国产a网站| 国产亚洲午夜高清国产拍精品 | 国产精品边叫边喷水 | 老女肥女熟国产在线视频网址 | 欧美日韩最新一区二区三区 | 亚洲自拍欧美 | 中文字幕一二区二三区 | 国产网站1区2区 | 国产萌白酱喷水在线播放尤物 | 伊人焦久综合影院每日更新 | 日本高清在线一 | 国产最新精品 | 欧美亚洲韩日国产 | 国产一区在线不 | 日本护士毛茸茸 | 欧美精品专区在线视频 | 国产综合色产在线视频欧美 | 国产区亚洲天堂一区二区三 | 91免费观看网站 | 一区二区三区在线观看欧美日韩 | 国产sm重味一| 91精品啪在线观看国产线免费 | 欧洲精品码一区二区三区免费看 | 日韩系新ww44ww | 不卡高清在线一区二区三 | 蜜汁娇妻有点甜全文阅读 | 亚洲欧美中文日韩aⅴ | 国产91茄子在线播放 | 91成人精品在 | 亚洲国产日韩在线人成电影 | 日本一区二区三这在线视频 | 日韩裸乳自拍视频网站在线观看 | jizzjizz丝袜老师 | 精品国产一区二区三区v | 欧美日韩国产综合视频在线看 | 国产午夜福利院在 | 成人午夜亚洲精品无 | 国产激情免费 | 国产情侣在视频 | 免费国产一级a | 区国产高清在线 | 激情小说亚洲图片伦 | 亚洲国内自拍愉拍中文字幕 | 亚洲日产综合欧美一区二区 | aⅴ不卡国产在线观看 | 国产精品日韩欧美 | 国产成社区在线视频观看 | 午夜影院0606免费 | 精品玖玖玖视频在线观看 | 欧美日韩中文国产一区发布 | 亚洲aⅴ男人的天堂在线观看 | 91秒拍国产福利在线观看 | 午夜国产在线一区二区三区 | 国产欧美日韩精品视频二区 | 山外人精品影院 | 九热在线观看高清 | 国产主播福利片在 | 国产精品户 | 精品字幕亚洲一区二区三区 | 麻花豆传媒mv在线观看网站 | 亚洲五月综合缴情婷婷 | 囯产精品宾馆在线精品酒店 | 疯狂添女| 午夜伦情电午夜伦情电影 | 国产在线不 | 91po国产在线精品免费观看 | 两个人www在线观看免费视频 | 国产日韩欧美一区二区三区在线 | 国产亚洲精品一二三区 | 97国产蝌蚪视频在线观看 | 欧美高清一区二区精品 | 337p亚洲日本中国大胆 | 国产黄a三级三级三级看三级 | 成人午夜羞羞网站 | 蜜桃日本免费观看mv | 国产后入在线观 | 国产精品区一区二区三 | 国产亚洲综合激情校园小说 | 国产福利在线观看永久免费 | 真实乱视频国产免费观看 | 中文字幕在线观看亚洲日韩 | 欧美在线精品视频二区 | 成人论坛网 | 亚洲伊人精品国产91综合 | 欧美性黑人极品hd另类 | 国产欧美日韩资源在线观看 | 国产精品俺来也在线观看 | 99国产精品免费在线 | 夜夜夜精品视频 | 被强迫各种姿势侵犯 | 成人午夜视频网站 | 日本一区二区免费更新高清 | 97精品一区二区三区 | 国产精品精品一区二区三区 | 亚洲高清免费观看 | 日本最新一区二区三区免费看 | 亚洲精品乱码一区二区 | 亚洲成熟女人毛毛耸耸多 | 国产亚洲精aa在线观看香蕉 | 日韩在线观看视频黄 | 一级特黄aaa大 | 欧美日本片一区二区 | 少女频道在线观看高清 | 国产一级a爱做片777 | 国产美女自拍视频 | 日韩经典欧美一区二区三区 | 99精品在线国产观看搜 | yellow高清免费观看日本 | 国产一区二区精品久电影 | 欧美大片va欧美在线播放 | 精品国产日韩一区二区三区 | 欧洲grand老妇人bbw | 日韩欧美精品高清在线不卡 | 不卡无在线一区二区三区观 | 九九精品视频国产 | 亚洲欧洲美 | 国产婷婷综合在线观看 | 亚洲日产综合欧美一区二区 | 国产羞羞又硬又粗又长又大 | 国内女人喷潮视频免费观看 | 国产99视频精品免费专区 | 91啪精品国产自产在线观看 | 国产精品福利在线观看免费不 | 国产午夜三级 | 国产区激情区精品视频区一99 | 99国产精品国产部9 亚洲免费在线观看 | 亚洲熟女综合一区二区三区 | 综合精品网成人影院 | 国产办公室沙发系列 | 好吊妞在线视频免费观看综合网 | 亚洲欧美自 | 成年免费大片黄在线观看欲女 | 亚洲经典在线中文字幕 | 婷婷六月亚洲中文字幕不卡 | 91欧美精品综合在线观看 | www.99re6这里有精品 | 欧美一本大道香蕉综合视频 | 另类图片欧美小 | 国产尤物亚 | 亚洲精品色午夜 | 国产夫妇肉麻对白 | 国产又色| 99re6国产精品免费播放 | 国产在线不卡一区 | 插我一区二区在线观看 | 国产乱理伦片在线观看夜 | 亚洲中字第 | 99在线精品免费 | 久青草久青草高清在线播放 | 国产高清视频色拍 | 国产电影一区在线成人看片 | 欧美洲精 | 亚洲一区国产日韩午夜在线观看 | 日本高清专区一区二无线 | 天天综合网天天综合 | 日韩国产精品va一区二区 | 99re国产在线观看 | 色涩网站在线 | 亚洲宅男精品一区在线观看 | 欧美日韩国产一线天午夜秀场 | 成人的天堂视频一区二区三 | 日韩在线观看网站 | 秋霞人成在线观看免费视频 | 87影院午夜福利 | 亚洲欧美国产日产综合不卡 | 日韩午夜理论免费tv影院 | 国产日韩免 | 国产亚洲一区二区三区 | 日本一区二区在线播放 | 日韩男女做性高清在 | 精品女同同性视频在线网 | 日韩欧美中文字幕在线观看一区 | 国产成自拍亚洲精品 | 欧美日韩成人一区二区三区 | 国产精品第1页在线观看 | 性欧美暴 | 日韩精品一区二区三区大桥未 | 99精品视频国产一区二区三 | 性一交一乱一伦 | 国产免费a精品视频 | 国产精品成人国产乱 | 国产主播福利 | 大色佬视频在线 | 国产一区日韩 | 国内精品在线观看看 | 国产高清在线丝袜精品一区 | 国产欧美日韩在线综合网 | 激情中文一区二区三区四区 | 国产成年大片免费视频播放 | 日韩欧美永久免费aⅴ在线 日本亚洲欧美综合视频 | 国产日韩一区二区三区在线观看 | 亚洲一区二区三区精品动漫 | 日本va欧美va精品发布 | 精品国产午夜 | 国产粗语刺激 | 欧美日韩在线第一页 | a级国产乱理伦片在线播放 夫妻之间免费观看完整版 精品女同 | 国产精品hd免费观看 | 亚洲欧美日韩激情在线观看 | 日韩欧美国产综合在线观看 | 亚洲精品乱拍国产一区二区三区 | 国内精品自在自线在免费 | 欧美在线+在线播放 | 国产在线视频专区 | 欧美日韩亚洲中文字幕三 | 国产偷人视频免费538 | 99视频在| 国产久re热视频精品 | 国产盗摄xxxx视频xxxⅹ | 国产精品一区二区国产馆蜜桃 | 26uuu欧美亚洲另 | 凹凸国产熟女精品视频app | 巨熟乳波霸若妻在线播放 | 亚洲免费在线国产视频午夜精 | 欧美精品玖玖玖在线靠爱 | 日韩一区二区三 | 亚洲欧美国产一区二区三区 | 天天躁日日躁狼狼 | 国产乱子伦一区二区三区视频播放 | 亚洲综合亚洲综合网成人 | 日韩另类在线综合国产 | www.91city.cn | 国产一区日韩二区欧美三区 | 一区二区中文字幕在线 | 国产天堂亚洲精品 | 国产精品1区2区 | 日韩草莓视频一区二区在线 | 欧美处破视频免费观看 | 日韩欧美天堂一区二区三区 | 老司机永久免费视频网站 | 久热久热精品在线观看 | 国产特级亚州一级淫片 | 欧美精品a一级区 | 国产午夜在线精品 | 日产欧美国产日韩精品 | 最新电影电视剧短剧在线观看 | 网友自拍露脸国语对白 | 日韩欧美激情兽交 | 中文天堂最新版资源 | 日韩一级欧美一级一级国产 | 国产自在现偷国产精品国产日韩 | 欧美亚洲精品久五月亚洲综合婷婷 | 天堂а√在线地址8中文种子 | 国产精品午夜自在在线精品 | 精品国产自在精品国产精华天 | 国产午夜在线激情视频 | 女人的天堂a国产在线观看 任你躁国语自产一区在 | 精品国产一区二区 | 免费免费麻辣 | 97福利视| 日韩午夜视频在线观看 | 日本高清无卡一区二区三区 | 日韩欧美国产精品 | 国产亚洲制服免视频 | 国产亚洲精品看片在线观看 | 91网址| 美女国产毛| 日韩专区精品中文字幕 | 亚洲色成人影院在线观看 | 国产一二三在线观看 | 亚洲成a人片在线不卡 | 九三精品私密视频在线观看 | 国产日韩欧美一区二区综合 | 亚洲欧美日韩中文另类不卡 | 欧美性爱在线 | 国产精品专区第102 免费精品99 | 91伦理视频 | 免费看美女脱了全身衣服直播 | 日本视频一区二区免费播放 | 中文字幕等等 | 欧美日韩不卡中文字幕在线 | 国产人妖爆视频在线观看 | 国产欧美日韩亚洲精品中文专区 | 91福利国产午夜亚洲精品 | 区二区三区不卡 | 玖玖最新国产在线视频 | 日本在线精品 | 国色天香一卡二卡三 | 日本xxxx丰满超清hd | 91最新亚洲精品中文字幕 | 成年人网站在线免费观看 | 成年免费视频播放网站推荐 | 最近免费中文字幕视频高清在线看 | 热门短剧短视频 | 亚洲欧美va动漫一区二区 | 99爱在线精品视频免费观看9 | 海量热播电视剧手机电影在线观看 | 日韩欧美一区二区三在线播放 | 好看的电影电视剧大全 | 好看的中文字幕aⅴ在线视频 | 91成人短视频在线 | 在线观看网站国产精品 | 视频在线中文字幕亚洲 | 精品乱子伦一区日本午夜 | 日韩18精品亚洲 | 在线免费视频一区二区 | 日本日本乱码伦视频在线观看 | 最近日本免费观看mv免费版 | 国产日视频在线观看 | 老司机在线精品视频网站 | 欧美日韩中文字幕在线播放 | 欧美性色欧美a在线视频 | 欧美日韩一区二区在线观看视频 | 国产水手服19禁在线视频网站 | 欧美一级欧美一级高清 | 日韩欧美另类亚洲 | 国产精品玖玖玖在线资源 | 欧美亚洲日韩在线在线影院 | 亚洲国产欧美在线人成aaaa | 日韩免费精品一区二区三区 | 欧美日韩亚洲国产精品自拍 | 国产3344视频在线观看 | 国产九九 | 欧美一区视频在线 | 97青青| 日本电影一区二区三区 | 日韩好看中文字母 | 日韩欧国产精 | 一区二区三区四区日韩 | 亚洲亚洲人成网站在线观看 | 欧美床戏吻戏摸下面吻胸 | 免费国精产品自偷自偷免费看 | 日韩中文字幕在线不卡视频 | 老司机深夜免费福利 | 97热久 | 性情中人中文网 | 在线天堂资源www在线中文 | 欧产日产国产精品精品 | 亚洲成年人电影在线观看 | 国产日韩欧美在线一区 | 国产免费不卡的视频在线 | 乱码一二区在线亚洲 | 欧美性视 | 日本欧美大码aⅴ在线播放 国产欧美二区三区 | 成人影视福利 | 区二区视频免费看 | 欧美亚洲自拍日韩在线 | 国产日韩在线观看一区二区三区 | 91精品国产丝袜 | 国产精品9 | 一区二区三区高清视频国产女人 | 国产系列丝袜熟女精品视频 | 国产精品一区二区三区四区 | 最新国产精品拍自在线播放 | 国产精品美女视视频 | 日本不卡中文字幕 | 精品偷拍欧美日韩 | 欧美国产日本高清不卡 | 国产特黄精品一区二区在线 | 欧美日韩国产高清视频在线观看 | 一区青椒 | 亚洲国产精品无 | 青草青草久热精品视频在线观看 | 亚洲桃色 | 97国产蝌蚪视频在线观看 | 欧美国产高清欧美 | 中文中国国语 | 国内日韩视频在线一区 | 午夜三级中文在线观看 | 欧美日韩aⅴ一区二区三区 高清影视在线 | 国产伦理一区的二区三区四区 | 911亚洲精品国产自产 | 九九在线精品视频 | 国产精品影片在线免费观看 | 国产亚洲播放在线 | 日韩色在线影院性色 | 日本视频网站www色高清免费 | 欧美三级a做爰在线观看 | 91精品国产自在现偷 | 成全电影大全在线播放 | 91桃色在线免费观看 | 成人精品综合免费视频 | 91同城快聘 | 亚洲色偷偷偷综合网另类小说 | 国产乱理伦片在线观看 | 九一伦理 | 精品一区二区三区在线观看 | 欧美日韩国产在线观看网站 | 国产精品日韩激情在线观看 | 日本中文一区二区三区亚洲 | 9cao在线精品免费 | 日韩午夜中文字幕电影 | 精品国产亚洲人成在 | 手机免费安装推荐 | 日本免费不卡高清网站视频 | 91天天 | 免费国产在线 | 日韩二区三区四区 | 成人午夜污污在线观看网站 | 成人在免费观看视频国产 | 欧美日韩国产色综合一二三四 | 欧美黑粗特黄午夜大片 | 欧美性爱精品一级大片 | 国产乱视频在线观看 | 国产日本一区二区三区 | 中文字幕精品亚洲一区 | 国产精品va一级二级三级 | 日韩一二三区视频精品 | 精品第一区二区三区 | 欧美日韩在线观看 | 国产mcu精品91| 国产欧美精品亚洲日本一区 | 在线一区二区电影 | 九九在线免费视频 | 欧美日夜干影院 | 国产精品国产精品国产专区不卡 | 国产丝瓜| 亚洲欧美国产日韩精品 | 日韩精品图片观看网址大全下载 | 欧美日韩国产一区二区三区欧美 | 亚洲宅男精品一区在线观看 | 九九亚洲精品唯美女同互添 | 青草青在线| 欧美日韩一区二区三区精品播放 | 亚洲国产欧美在线人成app | 欧洲无线码免费一区 | 欧美性色aⅴ欧美综合色 | 欧美日韩国产中文精品字幕自 | aa中文字幕在线观看 | 99健康网| 成人国产第一区在 | 免费国产老师高 | 国产精精品免费观看 | 99re66热这里 | 永久亚洲成a人片777777 | 免费电影在线影视网站 | 丝袜视频国产手机在线 | 亚洲精品欧美日韩一区二区 | 国产欧美亚洲一级a在线观看 | 日韩亚洲成a人片在线观看 亚洲色偷偷综合亚洲v | 国产色系视频在线观看 | 欧美日韩成人免费 | 国产99精品免费视频看 | 亚洲欧美日韩高清一区 | 天天影视色香欲综合网小说 | 国产小视频你懂 | ynzhcl.org.cn | 日韩小片 | 亚洲大片精品免费在线 | 国产精品推荐制服丝袜页 | 男女羞羞视频免费在线观看网站 | 欧美日韩亚洲国内一区二区三区 | 中韩高清无专 | 精品含羞草免费视频观看 | 欧美国产第一页 | 国产人成网在线播放va免费 | 久精品视频 | 国产精品高清另 | 亚色九九九全国免费视频 | 国产性爱在| 国产高清精品在线中文字幕 | 小小水蜜桃高清电视剧观看 | 中文字幕精品视频第一区第二区 | 国产亚洲精在线观看不卡 | 日韩成人精品大片 | 欧美精品一区二 | 亚洲人成在线播放 | 好看的电视剧全集免费在线观看 | 三年片大全在线观看免费观看大全 | 日本亚欧精品在线视频 | 97ssee| 亚洲人成日韩中文字幕不卡 | 夫妇交换性4p中文字幕 | 亚洲欧美精 | 欧美另类69 | 99亚洲自偷自拍图片区 | 韩国三级伦在线观看久 | 门国产乱 | 欧美a级情欲片在线观看免费 | 精品国产一区二区三区久 |