فضولي حول الاختلافات في vtkmassproperties ل VTK 5.04 و VTK 5.4.2

StackOverflow https://stackoverflow.com/questions/967468

  •  12-09-2019
  •  | 
  •  

سؤال

لدي بيثون صغير VTK الوظيفة التي تحسب وحدة التخزين والمنطقة السطحية للكائن المضمن في كومة من TIFF الصور. لقراءة TIFF's إلى VTK, ، لقد استخدمت vtkTIFFReader ومعالجة النتيجة باستخدام vtkImageThreshold. وبعد أنا ثم استخدام vtkMassProperties لاستخراج مستوى الصوت والمنطقة السطحية للكائن المحدد بعد العتبة.

مع VTK-5.04, ، ترجع هذه الوظيفة القيمة الصحيحة للحصول على مكدس اختبار (3902 بكسل). ومع ذلك، باستخدام VTK-5.4.2 ترجع الدالة نفسها قيمة مختلفة (422 بكسل). يمكن للشخص أن يفسر هذا؟


رمز

def testvtk():
    # read 36 TIFF images. Each TIFF is 27x27 pixels
    v16=vtk.vtkTIFFReader()
    v16.SetFilePrefix("d:/test/slice")
    v16.SetDataExtent(0,27,0,27,1,36)
    v16.SetFilePattern("%s%04d.tif")
    v16.SetDataSpacing (1,1,1)
    v16.Update()

    # Threshold level for seperating background/foreground pixels
    maxthres=81

    # Threshold the image stack
    thres=vtk.vtkImageThreshold()
    thres.SetInputConnection(v16.GetOutputPort())
    thres.ThresholdByLower(0)
    thres.ThresholdByUpper(maxthres)

    # create ISO surface from thresholded images
    iso=vtk.vtkImageMarchingCubes()
    iso.SetInputConnection(thres.GetOutputPort())

    # Have VTK calculate the Mass (volume) and surface area
    Mass = vtk.vtkMassProperties()
    Mass.SetInputConnection(iso.GetOutputPort())
    Mass.Update() 

    # just print the results
    print "Volume = ", Mass.GetVolume() 
    print "Surface = ", Mass.GetSurfaceArea()

ملحوظة

من خلال اختبار كل من VTK-5.4.2 و VTK-5.2.1، ضاقت الأمور أسفل قليلا وتعتقد أنه تم تقديم هذا السلوك بين الإصدارات 5.0.4 و 5.2.1.

تحديث

يبدو أنه في VTK-5.4.2، يتجاهل Vtktiffreader عاشر و Y. القيم المحددة في setDataspacing. طريقة. بدلا من ذلك vtktiffreader حساب عاشر و Y. Dataspacing من القرار الذي أبلغ عنه ملفات TIFF.

هل كانت مفيدة؟

المحلول

أنا لم أسمع قط VTK من قبل، ولكن هنا يذهب.

شيء جيد حول برنامج OpenSource هو أنه يمكنك التحقق من شفرة المصدر مباشرة. الأفضل من ذلك، إذا كان هناك متصفح التحكم في الإصدار المستند إلى الويب، فيمكننا التحدث عنه عبر الإنترنت مثل هذا.

دعنا نرى vtkMassProperties في السؤال. 5.0.4 يستخدم R1.28 و 5.4.2 يستخدم R1.30. هنا فرق بين r1.28 و r.30. وبعد الجزء الذي قد يؤثر على حسابات الصوت

vol[2] += (area * (double)u[2] * (double)zavg); // 5.0.4
vol[2] += (area * u[2] * zavg); // 5.4.2

و

kxyz[0] = (munc[0] + (wxyz/3.0) + ((wxy+wxz)/2.0)) /(double)(numCells); // 5.0.4
kxyz[0] = (munc[0] + (wxyz/3.0) + ((wxy+wxz)/2.0)) /numCells; // 5.4.2

ولكن كل التغييرات تبدو موافق لي.

القادم المشبوهة هي vtkMarchingCubes. فرق بين r1.1.6.1 و 1.5.

self->UpdateProgress ((double) k / ((double) dims[2] - 1)); // 5.0.4
self->UpdateProgress (k / static_cast<double>(dims[2] - 1)); // 5.4.2

و

estimatedSize = (int) pow ((double) (dims[0] * dims[1] * dims[2]), .75); // 5.0.4
estimatedSize = static_cast<int>(
             pow(static_cast<double>(dims[0]*dims[1]*dims[2]),0.75)); // 5.4.2

مرة أخرى، يقومون بإصلاح الأشياء على الصب، ولكن يبدو موافق.

قد نرى جيدا vtkImageThreshold جدا. فرق بين r1.50 و r1.52.

lowerThreshold = (IT) inData->GetScalarTypeMin(); // 5.0.4
lowerThreshold = static_cast<IT>(inData->GetScalarTypeMin()); // 5.4.2

هناك حفنة أكثر، لكنها جميع الأشياء الصب.

يحصل أكثر إثارة للاهتمام مع vtkTIFFReader. فرق بين 1.51 و 1.63. وبعد كما ترون الفرق في أرقام المراجعة، كان هناك بعض التطورات في هذه الفئة مقارنة بالآخرين. فيما يلي تعليقات Checkin:

  • إكسب: أضف اسما للأفراس. مرئية في paraview.
  • إكسب: يحتوي Vtkdataarray الآن على Superclass-Vtkabstractarray جديد ...
  • ENG: تعيين العدد الافتراضي من Sampels لكل بكسل للملفات التي تفتقد بيانات التعريف هذه.
  • إكسب: اقرأ فقط ما تحتاجه.
  • إكسب: إضافة دعم ملفات TIFF متعددة
  • إكسب: طباعة avars
  • BUG: لم يتم حساب قارئ TIFF بشكل صحيح للبيانات المشفرة RLL. أيضا، executeInformation الكتابة الكتابية المحددة التباعد والأصل.
  • BUG: عند قراءة Beach.tif (من CVS الحالي VTKDATA)، سيتم تحميل الصورة رأسا على عقب.
  • نمط: S / OrigintationTyPespecifiedflag / Originspecifiedflag / G و S / ORIVAIDETYPESPECEFIFIEDFLAG / SpacingsPecifiedflag / G
  • BUG: القارئ لم يكن التعامل مع النطاقات بشكل صحيح.
  • شركات: إصلاح تحذير.
  • شركات: التخلص من تحذير.

من مقدار التغييرات التي تم إجراؤها في Vtktiffreader، أعتقد أن الفرق في السلوك قادما من هناك. على سبيل المثال، قد بدأت في التعرف على TIFF الخاص بك بتنسيق مختلف وتغيير قيم البكسل الداخلية. حاول طباعة قيم البكسل ومعرفة ما إذا كان هناك أي فرق. إذا تغيرت قيم البكسل maxthres=81 قد تكون عالية جدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top