欧美日韩亚-欧美日韩亚州在线-欧美日韩亚洲-欧美日韩亚洲第一区-欧美日韩亚洲二区在线-欧美日韩亚洲高清精品

金喜正规买球

LeadTools 使用基準線

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

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

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

相關(guān)鏈接:

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

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

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

3. 然后會出現(xiàn)一個新建項目對話框。

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

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

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

7. 選擇“確定”來創(chuàng)建該項目。

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

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

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中,創(chuàng)建一個新的方法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);
               
               ' 創(chuàng)建一個將被用于加載圖像的編解碼器類的新實例。
               Dim _codecs As RasterCodecs = New RasterCodecs()
               ' 創(chuàng)建一個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);
               
               // 創(chuàng)建一個將被用于加載圖像的編解碼器類的新實例。
               RasterCodecs _codecs = new RasterCodecs();
               // 創(chuàng)建一個MedicalViewer的新實例。該查看器布局將被劃分為2X2。
               MedicalViewer viewer = new MedicalViewer(2, 2);
               // 使該視圖與整個窗體相匹配。
               viewer.Dock = DockStyle.Fill;
               // 將該查看器添加到窗體。
               Controls.Add(viewer);
            }

13. 請從Form1的構(gòu)造函數(shù)中調(diào)用該方法InitClass,并將該調(diào)用放置于InitializeComponent()之后。

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

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

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

請下載示例DICOMDIR,并將其內(nèi)容解壓縮到此文件夾: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數(shù)據(jù)集信息,并將其保存到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
              ' 在這里,該程序?qū)Π付ǖ膕tudyInstanceUID的科目進行搜索。 
              _studyElement = FindStudy(ds, studyInstanceUID)
              ' 在這里,該程序?qū)Π付ǖ膕eriesInstanceUID的系列進行搜索。
              _seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID)
              ' 請創(chuàng)建一個MedicalViewerSeriesManager的新實例。它將被用于對圖像進行排序,以便創(chuàng)建正確的3D對象。
              _seriesManager = New MedicalViewerSeriesManager()
              ' 請創(chuàng)建一個MedicalViewerImageData的陣列。該類將被用于保存幀信息。而該信息將被用于對圖像進行排序。
              _imageDataList = New List(Of MedicalViewerImageData)()
              Dim dicomDataSet As DicomDataSet
              Dim imageIndex As Integer
              Dim imagePath As String
              Dim echoNumber As Integer = 0
              ' 現(xiàn)在,該程序?qū)υ撓盗兄械拿恳粠M行審查。
              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()
                   ' 跳轉(zhuǎn)到下一個圖像。
                   imagePath = GetNextImageName(ds, directoryPath, imageElement)
                Catch exception As System.Exception
                   System.Diagnostics.Debug.Assert(False, exception.Message)
                   Throw
                End Try
                 imageIndex += 1
              Loop
              ' 根據(jù)它的數(shù)據(jù)對這些圖像進行排序。
              _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)
              ' 設(shè)置以下三行代碼非常重要。否則,可能會發(fā)生基準線結(jié)果錯誤。
  ' 設(shè)置定位器的圖像位置。             
 cell.SetImagePosition(0, _seriesManager.Localizers(0).LocalizerData.ImagePosition, True)
              ' 設(shè)置定位器的圖像方向。
              cell.ImageOrientation = _seriesManager.Localizers(0).LocalizerData.ImageOrientationArray
              ' 設(shè)置定位器的像素間隔。
              cell.PixelSpacing = _seriesManager.Localizers(0).LocalizerData.PixelSpacing
              ' 設(shè)置定位器的幀引用UID。如果系列和定位器具有相同的引用UID的話,這樣就可以在它們之間創(chuàng)建一條基準線。
              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()
              ' 循環(huán)處理這些圖像,并將它們一個接一個地添加到最終的圖像。
              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
              ' 設(shè)置以下這幾行代碼非常重要。否則,可能會出現(xiàn)基準線結(jié)果錯誤。
              index = 0
              Do While index < depth
                ' 設(shè)置每幀的圖像位置。
                cell.SetImagePosition(index, _seriesManager.Stacks(0).Items(index).ImagePosition, False)
                 index += 1
              Loop
              ' 請對該系列的圖像方向進行設(shè)置,且它只需被設(shè)置一次,因為所有的幀必須具有相同的方向值。
              cell.ImageOrientation = _seriesManager.Stacks(0).Items(0).ImageOrientationArray
              ' 請對該系列的像素間隔進行設(shè)置,且它只需被設(shè)置一次,因為所有的幀必須具有相同的像素間隔值。
              cell.PixelSpacing = _seriesManager.Stacks(0).Items(0).PixelSpacing
              ' 請對該系列的幀引用UID進行設(shè)置。如果該系列和定位器具有相同的引用UID的話,這將在它們之間創(chuàng)建一條基準線。
              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數(shù)據(jù)集信息,并將其保存到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;
               // 在這里,該程序?qū)Π付ǖ膕tudyInstanceUID的科目進行搜索。
               _studyElement = FindStudy(ds, studyInstanceUID);
               // 在這里,該程序?qū)Π付ǖ膕eriesInstanceUID的系列進行搜索。
               _seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID);
               // 請創(chuàng)建一個MedicalViewerSeriesManager的新實例。它將被用于對圖像進行排序,以便創(chuàng)建正確的3D對象。
               _seriesManager = new MedicalViewerSeriesManager();
               // 請創(chuàng)建一個MedicalViewerImageData的陣列。該類將被用于保存幀信息。而該信息將被用于對圖像進行排序。
               _imageDataList = new List<MedicalViewerImageData>();
               DicomDataSet dicomDataSet;
               int imageIndex;
               string imagePath;
               int echoNumber = 0;
               // 現(xiàn)在,該程序?qū)υ撓盗兄械拿恳粠M行審查。
               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();
                     // 跳轉(zhuǎn)到下一個圖像。
                     imagePath = GetNextImageName(ds, directoryPath, ref imageElement);
                  }
                  catch (System.Exception exception)
                  {
                     System.Diagnostics.Debug.Assert(false, exception.Message);
                     throw;
                  }
               }
               // 根據(jù)它的數(shù)據(jù)對這些圖像進行排序。
               _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);
               // 設(shè)置以下三行代碼非常重要。否則,可能會發(fā)生基準線結(jié)果錯誤。
               // 設(shè)置定位器的圖像位置。
               cell.SetImagePosition(0, _seriesManager.Localizers[0].LocalizerData.ImagePosition, true);
               // 設(shè)置定位器的圖像方向。
               cell.ImageOrientation = _seriesManager.Localizers[0].LocalizerData.ImageOrientationArray;
               // 設(shè)置定位器的像素間隔。
               cell.PixelSpacing = _seriesManager.Localizers[0].LocalizerData.PixelSpacing;
               // 設(shè)置定位器的幀引用UID。如果該系列和定位器具有相同的引用UID的話,這樣就可以在它們之間創(chuàng)建一條基準線。
               cell.FrameOfReferenceUID = _seriesManager.Localizers[0].LocalizerData.FrameOfReferenceUID;
            }
            void Load2DCell(MedicalViewerMultiCell cell)
            {
               // 啟動允許加載各種圖像的編解碼器。
               RasterCodecs _codecs = new RasterCodecs();
               // 加載CT DICOMDIR,并返回排列好的圖像集合。
               output = Load_James_CT();
               // 循環(huán)處理這些圖像,并將它們一個接一個地添加到最終的圖像。
               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;
               // 設(shè)置以下這幾行代碼非常重要。否則,可能會出現(xiàn)基準線結(jié)果錯誤。               for (index = 0; index < depth; index++)
               {
                  // 設(shè)置每幀的圖像位置。.
                  cell.SetImagePosition(index, _seriesManager.Stacks[0].Items[index].ImagePosition, false);
               }
               // 請對該系列的圖像方向進行設(shè)置,且它只需被設(shè)置一次,因為所有的幀必須具有相同的方向值。
               cell.ImageOrientation = _seriesManager.Stacks[0].Items[0].ImageOrientationArray;
               // 請對該系列的像素間隔進行設(shè)置,且它只需被設(shè)置一次,因為所有的幀必須具有相同的像素間隔值。.
               cell.PixelSpacing = _seriesManager.Stacks[0].Items[0].PixelSpacing;
               // 請對該系列的幀引用UID進行設(shè)置。如果該系列和定位器具有相同的引用UID的話,這將在它們之間創(chuàng)建一條基準線。
               cell.FrameOfReferenceUID = _seriesManager.Stacks[0].Items[0].FrameOfReferenceUID;
            }

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

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

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

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

19. 現(xiàn)在,將這兩個單元格(系列單元格和定位器單元格)添加到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. 如果您運行該程序,現(xiàn)在您將看到兩個單元格:一個上面繪制有一條垂直線,而另外一個上面繪制有一條水平線。

關(guān)于其他產(chǎn)品的更多信息,請查看產(chǎn)品詳情

文自:葡萄城


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

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


為你推薦

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

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

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

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

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

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

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

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

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

    LEADTOOLS Medical Imaging Suite幫您開發(fā)功能強大的PACS和醫(yī)學成像應用程序

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    欧美午夜理伦三级在线观看 | 日韩国产一级一区精品 | 欧美综合激情网 | 三级三级三级a级全黄三 | 亚洲+欧洲+日产+欧美 | 国产va免 | 中文字幕日本一本二本 | 精品国产鲁一鲁一区二区 | 欧美日韩一区不卡 | 日本特黄特黄aaaaa大片 | 国产精品自产拍在线观看55 | 香蕉影院在线观看 | 曰本丰满 | 国产老熟女狂叫对白 | 久夜色精品国产一区二区三区 | 欧美大片欧美激情性色a∨在线 | 亚洲人成电影网站国产精品 | 99在线精品视频 | 日韩城人网站 | 亚洲精品国产精品国自产 | 免费一区二区三区视频 | 在线精品国 | 亚洲日韩视频高清 | 香港日本三级在线播放 | 日本三级韩国三级三级a级按 | 日本高清一级婬片a级中文字幕 | 亚洲日本欧美日韩髙清观看 | 日韩综合一区在线观看 | 亚洲最大激情中文字幕 | 亚洲韩国日本欧美一区二区三区 | 欧美日韩国产色 | 亚洲v国产v日韩v欧美v | 欧美日韩精品一区二区三区视 | 亚洲欧美日韩中文字幕一区 | 免费不卡影院 | 国产精品4p露脸在线播放 | 免免费看 | 天天看片国产精品 | 国产制服丝袜观看 | 三区四区五区高 | 又刺激又爽又黄的视频在线观看 | 国产又黄又 | 国产精品日本一区二区不卡视频 | 囯产精品宾馆在线精品酒店 | 国产视频精选 | 国产口爆 | 日本日本乱码伦视频在线 | 精品中文字幕一区在线 | 精品国产污网站在线观看15 | 色与欲影视天天看综合网 | 午夜欧美视频在线 | 欧美一级aa| 日日精品国产高清国产专区 | 国产农村妇女特 | 99热这里有免费国内精品 | 真实国产乱子伦精品 | 97超视频在线观看视频在线 | 亚洲а∨天堂在线网站 | 欧洲精品卡1区2卡三卡四卡 | 无人区乱码一区二区三区 | 污污污污污污www网 午夜福利小视频400 | 天天天天躁天天爱天天碰2025 | 精品亚洲欧美无人区乱码 | 日本不卡在线免费 | 国产又黄又爽视频免费观 | 手机免费在线日韩电影大片 | 国产精品偷窥熟女精品视频 | 视频一区在线免费观看 | 亚洲国产日韩a在线播放 | 午夜性爱视频免费 | 中文字幕日韩有码 | 亚洲2025天天堂在线观看 | 欧美日韩精品国产—区在线 | 亚洲国产一区二区午夜福利 | 中文字幕视频二区 | 2025国产精品偷窥盗摄 | 国产手机自拍视频 | 色妺妺在线视频喷水 | 国产亚洲欧美另类一区二区三区 | 韩国日本免费高清观看网址 | 亚洲欧美日本国产专区一区 | 欧美韩日二三在 | 人成午夜免费视频拍拍拍 | 综合永久入口 | 国产午夜亚洲精品不卡免下载 | 亚洲一区不卡视频 | 精品一区二区国产 | 国产日本欧美高清免费区 | 欧美一区二区在线观看视频 | 2025国产精品偷窥盗摄 | 亚洲色精品三区二区一区 | 激情综合在线观看 | 午夜国产福利 | 最近免费中文字幕大全免费版视频 | 国产欧美日韩精品视频一区二区 | 最新精品国偷自产在线观看 | 国产在线观看一区二区91精品 | 国产精品初高中精品免费观看 | 60老熟女多次高 | 午夜国产精品视频一区 | 成年片色大黄全 | 521香蕉网欧美 | 欧洲动漫精品专区一区二区三区 | 99精产国品一二三产区区 | 亚洲日韩中文字幕在线播放 | 欧洲亚洲国产日韩综合一区 | 中文字幕精品亚洲一区 | 国产又黄又硬又粗 | 99精品视频免费在线观看 | 精精国产xxxx视频在线 | 亚洲aaaaa特级| 欧美a级影院 | 国产中文一区二区 | 午夜成人亚洲理伦片在线观 | 成人妇女免费播放 | 国产原创91| 国产精品亲子乱子伦 | 2025年最新国产精品正在播放 | 成人激情五月天 | 在线观看一级亚洲欧美观看 | 中国特级黄大片视频 | 能看的国产乱片在线 | 色偷偷人人澡 | 日本黄页网址 | 亚洲午夜一区二区三区在线观看 | 思思伊人 | 国产成+| 国产精品视频一 | 秋霞电影午夜在线观看 | 好看的中文字幕aⅴ在线视频 | 日本一二区在线观看 | 欧美激情区二区一区三 | 国产制服丝袜亚洲高清 | 99热免费精品 | 91中文字幕| 日韩欧美aⅴ综合网站发布 大香伊蕉在人线国产最新75 | 国产日产韩国精品视频 | 永久在线免费观看美女热比网站 | 精品视频一区二区三 | 国产香蕉尹人综合在线观看 | 欧美日韩日处女黑人 | 日韩精品首页 | 7777欧美成是 | 羞羞影院午夜男女爽爽视频免费 | 精品国产一区二区三区免费91 | 男人操女人免费在线观看 | 97在线也免费视频 | 超高颜值国产啪 | 日本欧美一区二区三区在线观看 | 2025最新国 | 亚洲日韩中文字幕在线播放 | 亚洲精品国产制服丝袜美腿 | 欧美不卡一卡二 | 亚洲综合成人aⅴ在线观看 韩国三级香港三 | 欧美xxxx | 欧美综合精品一区二区二 | 午夜亚洲国产理论片二 | 国产精选在线观看播放 | 国产精品视频一区二区三区四区 | 亚洲国产在线精品国偷产拍 | 一区二区日韩视频九一蜜桃 | 国产精品tv在线观看 | 最新日韩欧美不卡一二三 | 精品国语自产拍在线观看 | 免费视频大片在线观看 | 日韩视频在线观看一区 | 伦理、限制级电影手机在线观看 | 亚洲午夜成激人情在线国内 | 国产最新电影在线观看 | 免费人成大片在线播放 | 丝袜制服诱惑第一页一区 | 国内国外日产一区二区 | 国产桃色在线成免费视频 | 中国字幕在线看韩国电影 | 一区二区三区在线观看 | 国产日本欧美亚洲精品视 | 欧美综合自拍亚洲综合区 | 成人精品一区二区户外勾 | 亚洲一区二区经典在线播放 | 亚洲一区二区三区不卡视频 | 亚洲成a人在线观看片 | 国产高清美女主播在线观看 | 日韩视频中文字幕视频一区 | 日本夫妻激情生活b区 | aaaa级少| 成人性欧美 | 国产在线观看一区精品 | 手机大看福利永久国产 | 人伦小说视频在线 | 每日更新国产精品视频 | 高清免费国产传媒海量视频 | 小说区图片区激情区视频区 | 国产一区二区三区日韩欧美 | 国产精品免费视频一区二区三区 | 亚洲精品国产精品乱码不99 | 国产一级一片免费播放视频 | 国产一区二区三区在线观看免费 | 亚洲h成年动漫在线观看不卡 | 国产精品日产三级在线观看 | 两个人的视频www中文 | 成人国产在线视频 | 自制国产2025福利看片 | 亚洲老热 | 亚洲黄免费看网站 | 1区2区日韩欧美国产 | 老女肥女熟国产在线视频网址 | 午夜男女爽爽影院在线 | 91丝袜在线观看亚洲 | h版电影在线播放视频网址 99九九精品国产高清自在线 | 亚洲成a人片在线观看www | 一级特黄h厂视频网站 | 一本大道 | 182tv午夜福 国产剧情对白刺激在线 | 在线观看欧美亚洲 | 国产香蕉 | 末成年ass浓精pics | 91免费| 国产精品视频一区二区三区四区 | 亚洲骚熟女性视频 | 夫妻之间免费观看完整版 | 香蕉伊蕉伊中文视频在线 | 欧美xxxx欧美精品 | 亚洲狼人天堂 | 国产久一视频在线观看app | 99久热国产 | 国产情侣真实露脸在线最新 | 在线观看精品国产 | 国产美女久 | 丝袜美腿精品 | 亚洲视频国产精品 | 国产全黄三级三级 | 中文字幕午夜福利片午夜福利片 | www国产精品一区二区三区 | 欧美性色生活免费观看 | 九九热思思精品视频 | 日韩欧美不卡 | 乌克兰18极品xx00喷水 | 国产婬妇視频网站 | 精品精品国产欧美在线观看 | 伊伊人成亚洲综合人网7777 | 日韩在线观看不卡 | 免费人成网站在线免费观看 | 国产精品欧美一区二区 | 两性色午夜视频免费播放 | 91大神是啥 | 三区免费高清视 | 国产一级在线现免费观看 | 国产一区二区三区美女图片 | 最近中文字幕完整版免费视 | 亚洲色熟女图激情另类图区 | 中文www新版资源在线天堂√ | 午夜免费视频在线观看 | 男女拍拍拍免费视频 | 国产高清不卡一区二区 | 国产极品翘臀在线观 | 一区二区三区在线视频不卡 | 99精品视频在线观看免费 | 夜夜夜夜猛噜噜噜噜噜 | 999zyz玖玖资源| 中文字幕精品一区二区精品 | 亚洲日产在线播 | 国产男女爽爽爽爽爽爽爽爽 | 成人免费在线视频 | 中文子幕在线观看 | 欧美综合在线观看 | 国产一级特黄高清在线大片 | 91高清免费国产自产拍不卡 | 中文字幕亚洲无线码在一区 | 国产一区二区三区精品视频 | 一区二区三区中文 | 国内国外日产一区二区 | 中文字幕有码在线观看 | 免费岛国小视 | 91看片淫黄大片在看 | 很黄很黄地在床视频女 | 欧美精品一区二区三区四区 | 欧美成精品视频在线观看 | 91夫妻论坛 | 亚洲人成网站在线观看 | 亚洲欧美日韩中文高清一 | 国产在线成观看视频播放 | 国语精品 | 欧美精品一区二区电影 | 韩国三级hd中文字幕电影天堂 | 日产成人高清视频 | 特黄特色的大片观看免费视 | 免费国产精品 | 美女被男人 | 野花论坛社区 | 精品国产日韩欧美一区二区 | 久色资源免费的资源站 | 国产人成视频在线免费观看 | 国产精品人娇在线内谢 | 亚洲精品欧美中文字幕 | 亚洲骚熟女性视频 | 国产精品一区二区在线观看网站 | 国产日韩在线视频 | 国产精品第| 国产亚洲播放在线 | 国产精品日日做人人爱 | 日本不卡 | 国产精品美脚玉 | 懂你的91 | 吾爱第一福利在 | 话务耳麦 | 国产太嫩了在线观看 | 国产精品v片在线观看不卡 国产亚洲精品午夜福利 | 免费啪视频观试看视频 | 国产一区二区三四区 | 欧美二区在线观看 | 日韩欧美一区二区三区免费看 | 秋霞伦理电影在线看 | 偷窥国产| 特级婬片国产高清视频 | 日韩亚洲第一页 | 国产自产21区最新资源 | 日本一区二区不卡中文字幕 | 夜夜草视频| 国产在线乱码一区二区三区 | 在线观看国产三 | 国产极品网站在线观看 | 五月婷婷爱六月久 | 亚洲精品影院 | 亚洲黄免费看网站 | 日本有码中文字幕第一页在线播放 | 亚洲国产人成自精在线尤物 | 91热爆在线 | 色五月在线观看婷婷国产 | 日本aⅴ永久免费网站www | 一级直接观看 | 国产亚洲人成 | 精品免费美剧网排行榜在线看 | 国产福利一区二区久 | 顶级欧美做 | 性运交xxxx大孕妇pivs | 亚洲精品视频免费观看 | 国产伦码精品一 | 韩日精品视频 | 手机免费在线追剧网站 | 色综合天天综合网 | 国产在线观看精品一区二区三区 | 99热在线精品国产观看 | 一边喂奶一边被爱 | 日韩成人精品在线 | 日韩亚洲欧美高清在线观看 | 亚洲国产系列一区二区三区 | 国产真实乱 | 日本一区不卡在线观看 | 欧美精品一区二区在线观看播放 | 亚洲国产一区二区在线免费 | 欧美日韩在线播放一区二区三区 | 日韩高清片一二区 | 欧美精品高清乱伦 | 亚洲步兵欧美精 | 国产高清视频在线观 | 成人国产精品免费视频 | 阿v视频国产免在线手机观看 | 国产精品吹潮在线观看中文 | 国产日韩欧美高清一区二区三区 | 国产精品三级一区二区 | 最近中文字幕在线中文高清版 | 一区二区免费高清在线观看国产 | 亚洲精品中文字幕不卡在线 | 中日韩高清无专码 | 亚洲人成小说网站色 | 欧美午夜网 | 国产3344视频在线观看 | 亚洲囯产一区二区三区 | 国产欧美精品一区二区三区pp | 在线视频一区二区不卡 | 亚洲kkk4444在线观看 | 亚洲人成人一区二区三区 | 国产欧美一区二区三区不 | 好屌色在线 | 亚洲a级午夜线上看不卡 | 国产欧美亚洲精品 | 2025国产激情视频在线观看 | 国产资源在线观看 | 国产欧美日韩成人 | 国产免费202 | 日本乱理伦片在线观 | 国产一区精品 | 乱码一码二码三码四码狼人 | 吾爱第一福利在 | 亚洲欧美日韩一区高清中文字幕 | 国产肥熟老 | 亚洲欧美一区二区三区日产 | 暖暖日韩欧美视频免费 | 精品不卡一区二区 | 欧美亚日韩精品影视 | 日本特级婬片中文免费看 | 亚洲中文字幕 | 性激片在线播放欧美 | 神马午夜福利我不卡手机电影 | 囯产精品一区二区三区线 | 日本亚洲欧美国产电影在线观看 | 国产日产韩| 欧美性猛交ⅹxxx乱大交 | 亚洲国产精品视频自拍 | 综合精品欧美日韩国产在线 | 激情综合色五月丁香六月欧美 | 网友自拍露脸国语对白 | 国产1024香蕉 | 国产欧美一二三区男女交配 | 极速影院 | 国产92刮伦脏话对 | 偷拍激情视频一区二区三区 | 国产网红主 | 小说区图片区激情区视频区 | 国产一区二区三区精品专区 | 最近2025年好看中文字幕视频 | 国产又粗又猛 | 一区二区三区高清视频在线观看 | 日韩欧美一区二区三区免费看 | 91?黑料?精品?国产 | 91天天综合免费看国产 | 亚洲欧美一区二区不卡 | 国产精品自在拍一区二区不卡 | 亚洲视频中文字幕在线不卡 | 欧美日韩性高爱潮视频 | 亚洲区日韩精品中文字暮 | 欧美精品1区国新欲乱视频 国产一区二区精品免费播放 | 国产精品亚洲综合一区在线观看 | 特色特色的欧美大片 | 专区不卡 | 人人揉人人捏人人添 | 国产99对白在线播放 | 国产精品一区韩国电影日本 | 一区二区视频在线观看入口 | 日韩高清不卡在线视频观看 | 日韩在线一区二区视频中文字幕 | 在线观看亚洲 | 无人区一线二线三线乱码 | 太大太长太粗太久太硬了 | 国产精品爽爽va在线 | 看h片的网站 | 87国产私拍福利精品视频 | 欧美一区二区三区激情爽 | 日韩一区二区三区在线 | 91秦先生在线视频 | 一区二区中文字幕在线 | 国产伦精品一区二区三 | www日韩中文字幕在线看 | 91夜夜夜精品一区二区 | 精品国产午夜福利在线观看蜜月 | 精品日韩在线视频一区二区三区 | 播放日韩 | 午夜亚洲国产理论片中文飘 | 日韩精品制服诱惑中文字幕 | 国产亚洲中文字幕 | 国产欧美日韩另类精彩视频 | 最新高清私人vip视频资源 | 日本三级免费 | 中字幕视频在线永久在线 | 日日摸夜夜摸人人看 | 最新热门免费电影 | 国产精品国产自线拍免费不卡 | 国产亚洲精品精品国产亚洲综合l | 夜夜夜精品视频 | 日本免费一级婬片a级中文字幕 | 国产一区二区三区猎奇视频 | 国产精品日 | 亚洲视频中文字幕在线 | 91欧洲在线视精品在亚洲 | 视频一区二区欧美 | 国产激情视频在线观看 | 亚洲精品乱码在线观看 | 免费追剧大全 | 国产精品成久 | 国产精品一区二区公司 | 一区发布 | 插我一区二区在线观看 | 国产一区二区精品一区二区 | 人人鲁人人莫人人爱精品 | 免费精品国产自产拍观看 | 日本伦理电影免费观看 | 国产粗语刺激对白ⅹxx | 免费人成在线观看网站免费观看 | 啦啦啦视频 | 欧美一区二区制服在线 | 91碰超免费观看 | 92午夜福利国产精品 | 欧美日韩人人天天综合小说 | 日皮视频免费 | 禁止18点击进 | 五月天丁香激情 | 亚洲成脛∨人片在线观看福利 | 亚洲加勒 | 女性女同性aⅴ免费观看 | 亚洲精品v欧 | 日韩欧美卡一卡二卡新区 | 日韩免费在线观看性生活视频 | 亚洲日韩在线观看 | 亚洲成?v人片在线观看福利 | 国产乱之伦露脸对白xxxx | 国产伦子伦对白视频 | 极品美女在线观看免费直播 | 日本高清中文字幕在线观穿线视频 | 国产亚洲欧洲aⅴ综合一区 ady中文字幕 | 欧美经典日韩在 | 女厕脱裤撒尿大全视频 | 欧美丝袜自拍制服另类 | 日本欧美高清乱码一区二区 | 亚洲一区二区三区丝袜 | 日日澡夜 | 午夜男女福利 | 青青河边草高清免费版新闻 | 91免费网址 | 最新高清热播电影 | 中国免费xxxx视频在线观看 | 成视人a免费观看视频 | 中文字幕综 | 日韩午夜理论免费tv影院 | 日本三级网站网址 | 国产真实乱 | 免费+国产在线观看 | 乱子伦精品视频 | 91精品国产自产在线观永久 | 精品国产乱码一区二区三区 | 腿露私下 | 亚洲曰韩精| 中文字幕日韩wm | 亚洲免费人成 | 公侵犯玩弄 | 青青视频免 | 日韩欧美精品在线观看视频 | 亚洲成?v人片在线观看翻墙网站 | 日韩亚洲人成网站在线播放 | 2025亚洲日韩新视频 | 一区二区三区视频在线观看 | 国产午夜视频在线观看 | 国产精品自线在线播放 | 国产精品亚洲玖玖玖在线观看 | 日本免码va在线看免费 | 99视频在线| 中文字幕人成人乱码亚洲影 | 日韩高清在线播放 | 国产精品一区二区久 | 精选亚洲一区二区三区 | 欧美日韩精品系列一区二区三区 | 99在线视频 | 色哟哟免费精品网站入口 | aⅴ日本亚洲欧洲免费天堂 加勒比综合网 | 国产一区二区乱子伦在线 | 韩国日本亚洲欧洲一区二区三区 | 美女视频免费观看18网站 | 日韩亚洲国产欧美在线看片 | 91热成人精品国 | 欧美aaaaa级毛卡片在线 | 91精品视频在线观看免费 | 日韩在线观看 | 国产美女91 | 国产全黄三级国产全黄三级书 | 久热亚洲| 亚洲午夜福利 | 综合色区在线观看 | 欧美日韩| 97色伦色在线综合视频 | 国产精品对白交换绿帽视频 | 亚洲a级情欲片在线观看 | 日韩欧美一区一本到国产 | 日本高清免费观看 | 国产在线观看一区 | 亚洲国内午夜a | 2025国产 | 中文字幕亚洲综合小综合在线 | 国产福利深夜视频在线观看 | 一扒二脱三插片在 | 99久热精 | аⅴ资源天堂资源库在线 | 亚洲人成网站在线 | 欧美综合在线观看 | 国产又粗又猛又爽又黄 | 国产蜜桃精品 | 久产久精九国品在线 | 国产v在线在线观看视频免费 | 国产v片在线播放免费观看大全 | 国产精品一区二区国产馆蜜桃 | 欧美综合视频在线 | 成人乱码| 国产视觉| 国产欧美精品一区二区三区pp | 亚洲码欧美码一区二区三区 | 在线日韩中文字幕 | 亚洲精品中文字幕乱码三区 | 最近中文字幕高清mv免费 | 欧美综合激情网 | 国产精品视频大陆精大陆 | 视频首页 | 91精品手机国产在线观 | 精品国产自在现线免费观看 | 国产男女乱婬真视频免 | 在线日韩中文字幕 | 国产精品自在欧美一区 | 在线观看日产一区二区三区 | 日韩亚洲欧美中文高清在线 | 日韩美女黄大片在线观看 | 欧美v亚洲v日韩v最新在线 | 国产熟女乱婬一区二区 | 亚洲欧洲日本精品永久在线观看 | 成a人片在线观看手机看 | 国产欧美一区二区精品仙草咪 | 国产欧美va欧美va香蕉在 | 激情六月在线视频 | 无人视频在线观看播放免费 | 一区二区三区免费高清视频 | 不卡在线播放中文字幕在线 | 中文区永久区乱码六区 | 日韩精品免费在线观看 | 真人一级一级99片黄大片 | 2025最新国产在线精品不卡顿 | 激情亚洲一区国产精品 | 国产亚洲成aⅴ人片在线观看 | 亚洲一区在线视频在线观看 | 亚洲天堂一区二区三区 | 国产午夜小视频在线不卡 | 日本b站一卡二不卡三卡四卡 | 日韩精品一区二区三区四区 | 爽黄的免费视频 | 露脸对白不带套在线播放 | 欧洲一级大黄大 | 欧美日韩亚洲国产一 | 神马影院88 | 日本精品中文字幕在线不卡 | 日美妇视频一区 | 亚洲欧美国产18 | 免费播放婬乱男女婬视频 | 亚洲欧美在线综合一区 | 中国毛茸茸bbxx | 国产精品一区二区国产 | 欧美91| 五月婷婷中文字 | 国产乱伦精品 | 国产午夜亚洲精品不卡福利 | 18以下勿进色禁网站免费看 | 日韩欧美一区二区三区四区 | 三级乱伦国产欧美 | 国产对白精品刺激一区二区 | 国产偷窥熟 | 亚洲精品国产福利 | 日本免费精品 | 国产香蕉尹人视频 | 国产亚洲欧美另类一区二区三区 | 九九九国产视频 | 97国语精品自产拍在线观看一 | 亚洲性日韩精品一区二区 | 99精品视频在线视频免费观看 | 亚洲成脛∨人片在线观看福利 | 亚洲综合娱乐在线视频 | 中文字幕亚洲综合小综合在线 | 欧美日韩另类视频在线观看 | 午夜欧美视频在线 | 一区二区三区激情 | 国产在视频线精品视频二代 | 精品aⅴ老司机天堂网站 | 欧美一区二区三区精品 | 欧美、另类亚洲日本一区二 | 午夜一级韩国欧美日本国产 | 精品国产高清自在线一区二区三区 | 国产人成网线在线播放va | 91中文字| 国产精品视频一区 | 国产女学生破女初在线观看 | 在线视频一区二区三区不卡 | 亚洲综合在线一区二区三区 | 97影院午夜午夜伦不卡 | 在线观看男人的 | 国产女主播勾搭美团在线观看 | 亚洲春色在线观看 | 秋霞手机免费 | 国产精品成熟老妇女 | 97韩剧(tv)网 | 视频一区视频二区日韩专区 | 白白发布精品视频在线观看 | 色综合天天综合网 | 欧美日韩精品福利 | 噼里啪啦电影在线观看免费 | 97se亚洲国产综合自在线观看 | 激情五月综合网 | 337p亚洲| 国产精品爱的在线线免费观看 | 91香蕉国产 | 亚洲制服丝袜自拍中文字幕 | 国产+成+人+亚洲欧洲自线 | 日本视频免费 | 国产又色又爽又黄又刺激的网站 | 亚洲欧美日韩国产综合在线看片 | 精品国产日韩亚洲一区在线 | 欧美亚洲综合色 | 三级国产4国语三级在线 | 国产精品一区二区高清在线 | 国产激情电影综合在线看 | 天堂资源最新在线 | 全部视频欧美日韩在线无人 | 亚洲一区国产日韩午夜在线观看 | 免费人成在线观看网站免费观看 | 99热只有这里有99精品 | 欧美日韩在线视频制服 | 日韩精品一区在线观看 | 午夜欧美日韩精品 | 欧美日韩国产在线人 | 国产丝袜控视频在线观看 | 亚洲国产精品日韩在线观看 | 精品国产午夜福利在线观看蜜月 | 亚洲理伦片精 | 99国产综合亚洲精品 | 九九热在线免费观看 | 成色伊人 | 神马电影网 | 97se亚洲国产综合自在线观看 | 国产午夜福利精品一区二区三区 | 一区二区在 | 国产精品广西柳州莫菁泽译网 | 无人在线观看视频高清播放 | 免费视频在线观看 | 中文字幕欧美日 | 成人午夜视频精品一 | 国产人成精品香港三级在线 | 精品国产成a人在线观看 | 国产在视频精 | 精品熟人| 欧美一区二区三区性视频 | 嫩videossexo另类 | 国产日韩一区在线精品 | 一品二品国精破解 | 天美麻花星空免费观看乡村版 | 天堂资源中文在线 | 国产在线2025最新 | 国产人成视频 | 亚洲欧美日本国产—区二区三区 | 国产户外露出在线观看 | 在线免费看影视网站 | 国产精品专区第1页 | 日韩亚洲国产欧美在线看片 | 亚洲欧美日韩高清综合678 | 奇米影视77| 日本不卡一区二区三区在线 | 国产精品视频一区二区三区四区 | 女生殖器 | 欧美日韩视频在线观看第一区 | 麻花星空影视传 | 91啪国自产最新91啪国自产 | 亚洲五码中文字幕 | 亚洲精品国产精品制服丝袜 | 国产一级一片免费播放 | 欧美一卡二三 | 最新短剧电视剧 | 欧美校园激情清纯另类 | 亚洲国产第一区二区香蕉 | 亚洲一区二区三区和欧美四区 | 欧美午夜理伦三级在 | 日产无人区一线二 | 字幕一区二区三区四区 | 亚洲精品国产高清在线观看 | 国产精品香蕉在线的人尹人 | 91香蕉小视频 | 日韩国产精品va一区二区 | 国产一级一区在线一页 | 日本三级做a全过程在线观看 | 国产精品99精品一区二区 | 欧美日韩免费手机在线 | 97精品视频在线观看 | 精品理论片免费视频播放 | 久中文字幕中文字幕亚洲无线 | 国产精品丝袜在线观看首页 | 92国产福利午夜757小视频 | 偷妇激情www色色五月丁香婷 | 一级女性全黄生活片免费 | 精品一区二区6 | 婷婷婷国产在线视频 | 国产精品蜜桃丝袜 | a级全黄试看30分钟国产 | 日韩精品免 | 直播app下载 | 久爱www人成免费网站 | 巨大欧美黑人xxxxbbbb | 中文字字幕乱码高清二本道资源站 | 米奇影院888奇米色99在线 | 在线播放国产精品三级 | 国产日韩成人精品视频 | 欧美黑吊粗大猛烈18p | 国产日韩精品欧美一区喷水 | 中文字幕亚洲第一 | 亚洲欧美综合高清在线 | 欧美yw精 | 国产传媒一区 | 国产一区日韩二区欧美三 | 精品日韩视频一区二区三 | 天美麻花星空视 | 免费电影在线观看 | 四库国产精品成人 | 日日噜噜 | 电视剧大全免费全集观看 | 国产精品网友自拍 | 亚洲午夜国产精品无卡 | 99re热这里只有精品视频 | 香港日本韩国三级网站 | 国产福利一区二区三区在线观看 | 九热视频 |