مجموعة أدوات تجزئة وتسجيل البيانات

ITK هو إطار عمل لتطوير التطبيقات مفتوح المصدر ومتعدد المنصات ، ويُستخدم على نطاق واسع لتطوير برامج تجزئة الصور وتسجيلها . التجزئة هي عملية تحديد وتصنيف البيانات الموجودة في تمثيل مُستَشعَر رقميًا. عادةً ما يكون هذا التمثيل صورة مُستَحصَلة من أجهزة طبية مثل أجهزة التصوير المقطعي المحوسب (CT) أو التصوير بالرنين المغناطيسي (MRI). أما التسجيل فهو مهمة مواءمة البيانات أو إيجاد تطابقات بينها. على سبيل المثال، في المجال الطبي، يمكن مواءمة صورة مقطعية محوسبة مع صورة رنين مغناطيسي لدمج المعلومات الموجودة في كليهما.

طُوِّرَتْ ITK بتمويل من المكتبة الوطنية للطب ( الولايات المتحدة الأمريكية ) كمورد مفتوح المصدر للخوارزميات المستخدمة في تحليل صور مشروع الإنسان المرئي . ITK اختصار لـ "مجموعة أدوات تجزئة وتسجيل الصور Insight" . توفر هذه المجموعة خوارزميات متطورة لتجزئة وتسجيل الصور في بُعدين وثلاثة أبعاد وأكثر. تستخدم ITK بيئة بناء CMake لإدارة عملية التهيئة. البرنامج مكتوب بلغة C++ ومُغلَّف بلغة Python . كما يجري تطوير SimpleITK ، وهو فرع من مشروع ITK يوفر واجهة مبسطة لـ ITK بثماني لغات برمجة .

مقدمة

الأصول

في عام ١٩٩٩، منحت المكتبة الوطنية الأمريكية للطب التابعة للمعاهد الوطنية للصحة عقدًا لمدة ثلاث سنوات لتطوير مجموعة أدوات مفتوحة المصدر للتسجيل والتجزئة، والتي عُرفت لاحقًا باسم مجموعة أدوات Insight (ITK). وكان مدير مشروع ITK في المكتبة الوطنية الأمريكية هو الدكتور تيري يو، الذي نسق عمل المتعاقدين الرئيسيين الستة الذين شكلوا اتحاد برمجيات Insight . وشمل أعضاء هذا الاتحاد الشركاء التجاريين الثلاثة: قسم البحث والتطوير في شركة جنرال إلكتريك ، وشركة Kitware ، وشركة MathSoft (التي أصبح اسمها الآن Insightful)؛ والشركاء الأكاديميين الثلاثة: جامعة نورث كارولينا ( UNCوجامعة تينيسي (UT)، وجامعة بنسلفانيا (UPenn). كان الباحثون الرئيسيون لهؤلاء الشركاء، على التوالي، بيل لورنسن من شركة جنرال إلكتريك للأبحاث والتطوير، وويل شرودر من شركة كيتوير، وفيكرام شالانا من شركة إنسايتفول، وستيفن أيلوارد مع لويس إيبانيز من جامعة نورث كارولينا (وانتقل كلاهما لاحقًا إلى شركة كيتوير)، وروس ويتاكر مع جوش كيتس من جامعة تكساس (وكلاهما يعملان الآن في جامعة يوتا)، وديميتريس ميتاكساس من جامعة بنسلفانيا (يعمل ديميتريس ميتاكساس الآن في جامعة روتجرز ). بالإضافة إلى ذلك، ضمّ التحالف عددًا من المتعاقدين من الباطن، من بينهم بيتر راتيو من مستشفى بريغهام والنساء، وسيلينا إيميلينسكا وبات مولهولت من جامعة كولومبيا ، وجيم جي من مختبر غراسب التابع لجامعة بنسلفانيا، وجورج ستيتن من جامعة بيتسبرغ .

التفاصيل الفنية

ITK هي مجموعة أدوات برمجية مفتوحة المصدر تُستخدم لإجراء عمليات التسجيل والتجزئة. التجزئة هي عملية تحديد وتصنيف البيانات الموجودة في تمثيل مُستَشعَر رقميًا. عادةً ما يكون هذا التمثيل صورة مُستَشعَرة من أجهزة طبية مثل أجهزة التصوير المقطعي المحوسب (CT) أو التصوير بالرنين المغناطيسي (MRI) . أما التسجيل فهو مهمة مواءمة البيانات أو إيجاد تطابقات بينها. على سبيل المثال، في المجال الطبي، يمكن مواءمة صورة مقطعية محوسبة مع صورة رنين مغناطيسي لدمج المعلومات الموجودة في كليهما.

تم تطوير ITK باستخدام لغة C++. وهو نظام متعدد المنصات، يستخدم بيئة بناء CMake لإدارة عملية الترجمة. بالإضافة إلى ذلك، تُنشئ عملية تغليف آلية واجهات بين C++ ولغات برمجة أخرى مثل Java وPython. يُمكّن هذا المطورين من إنشاء برامج باستخدام مجموعة متنوعة من لغات البرمجة. يعتمد تطبيق ITK على تقنية البرمجة العامة من خلال استخدام قوالب C++.

نظرًا لأن ITK مشروع مفتوح المصدر، يُمكن للمطورين من جميع أنحاء العالم استخدام البرنامج وتصحيح أخطائه وصيانته وتطويره. يعتمد ITK على نموذج تطوير برمجيات يُعرف باسم البرمجة المتطرفة (Extreme Programming ). تُبسّط البرمجة المتطرفة منهجية إنشاء البرمجيات التقليدية إلى عملية متزامنة وتكرارية من التصميم والتنفيذ والاختبار والإصدار. من أهم سمات البرمجة المتطرفة التواصل والاختبار. يُساعد التواصل بين أعضاء مجتمع ITK على إدارة التطور السريع للبرنامج، بينما يُحافظ الاختبار على استقراره. في ITK، تُطبّق عملية اختبار شاملة (باستخدام CDash ) لقياس الجودة يوميًا. يتم تحديث لوحة معلومات اختبار ITK باستمرار، مما يعكس جودة البرنامج.

المطورون والمساهمون

تم تطوير مجموعة أدوات Insight في البداية من قبل ست منظمات رئيسية

وثلاثة مقاولين فرعيين

بعد إنشائه، استمر البرنامج في النمو بمساهمات من مؤسسات أخرى، بما في ذلك

التمويل

تم تمويل المشروع من قبل المكتبة الوطنية للطب التابعة للمعاهد الوطنية للصحة. وقد تلقت المكتبة الوطنية للطب بدورها الدعم من المؤسسات الأعضاء في المعاهد الوطنية للصحة (انظر الجهات الراعية).

تشمل أهداف المشروع ما يلي:

  • ادعم مشروع الإنسان المرئي .
  • وضع أساس للبحوث المستقبلية.
  • أنشئ مستودعًا للخوارزميات الأساسية.
  • قم بتطوير منصة لتطوير المنتجات المتقدمة.
  • دعم التطبيق التجاري لهذه التقنية.
  • وضع قواعد للعمل المستقبلي.
  • قم بتنمية مجتمع مستدام ذاتيًا من مستخدمي ومطوري البرامج.

يتم توزيع الشفرة المصدرية لمجموعة أدوات Insight بموجب ترخيص Apache 2.0 (كما وافقت عليه مبادرة المصادر المفتوحة ).

تم توسيع نطاق فلسفة المصادر المفتوحة لمجموعة أدوات Insight لدعم العلوم المفتوحة ، ولا سيما من خلال توفير الوصول المفتوح إلى المنشورات في مجال معالجة الصور الطبية. وتُتاح هذه المنشورات مجانًا عبر مجلة Insight.

مشاركة المجتمع

بما أن ITK نظام مفتوح المصدر، يمكن لأي شخص المساهمة في المشروع. يمكن للشخص المهتم بالمساهمة في ITK اتخاذ الإجراءات التالية

  1. اقرأ دليل برنامج ITK . (يمكن شراء هذا الكتاب من متجر Kitware.)
  2. اقرأ التعليمات حول كيفية المساهمة بالصفوف والخوارزميات في مجموعة الأدوات من خلال تقديمها إلى مجلة Insight Journal
  3. الحصول على إمكانية الوصول إلى GitHub .
  4. اتبع تعليمات المساهمة في Git .
  5. انضم إلى نقاش ITK Discourse . المجتمع مفتوح للجميع.

يمكن لأي شخص إرسال تصحيح برمجي، ولا يشترط امتلاك صلاحية الكتابة في المستودع لدمج التصحيح أو الاحتفاظ بحقوق التأليف. لمزيد من المعلومات، راجع وثائق ITK Bar Camp حول كيفية إرسال التصحيح .

برنامج ITK محمي بحقوق الطبع والنشر لصالح اتحاد Insight Software Consortium، وهو تحالف غير ربحي يضم منظمات وأفرادًا مهتمين بدعم ITK. بدءًا من الإصدار 3.6، يُوزع البرنامج بموجب ترخيص BSD مفتوح المصدر. يسمح البرنامج باستخدامه لأي غرض، باستثناء ربما الشيفرة الموجودة في الدليل الحاصل على براءة اختراع، مع الإشارة إلى المصدر بشكل صحيح. تتوفر الشروط الكاملة لحقوق الطبع والنشر والترخيص على الموقع الإلكتروني www.itk.org/ITK/project/license.html . يستخدم الإصدار 4.0 ترخيص Apache 2.0 .

تم تغيير الترخيص إلى Apache 2.0 مع الإصدار 4.0 لاعتماد ترخيص حديث يتضمن أحكام حماية براءات الاختراع. من الإصدار 3.6 إلى 3.20، تم استخدام ترخيص BSD مبسط. أما إصدارات ITK السابقة للإصدار 3.6 فقد تم توزيعها بموجب ترخيص BSD معدل. وكان الدافع الرئيسي لاعتماد ترخيص BSD بدءًا من الإصدار 3.6 هو الحصول على ترخيص معتمد من مبادرة المصادر المفتوحة (OSI) .

ملخص فني

تُوجز الأقسام التالية الخصائص التقنية لمجموعة أدوات Insight ITK التابعة للمكتبة الوطنية للطب. فلسفة التصميم: فيما يلي السمات الرئيسية لفلسفة تصميم مجموعة الأدوات.

  • توفر هذه المجموعة من الأدوات تمثيلاً للبيانات وخوارزميات لإجراء عمليات التجزئة والتسجيل. وينصب التركيز على التطبيقات الطبية، على الرغم من قدرة هذه المجموعة على معالجة أنواع أخرى من البيانات.
  • توفر مجموعة الأدوات تمثيلات البيانات بشكل عام للصور (بأبعاد عشوائية) والشبكات (غير المنظمة).
  • لا تتناول هذه المجموعة من الأدوات موضوعات التصور أو واجهة المستخدم الرسومية. هذه الأمور متروكة لمجموعات أدوات أخرى (مثل VTK و VISPACK و 3DViewnix و MetaImage وغيرها).
  • توفر مجموعة الأدوات الحد الأدنى من الأدوات اللازمة للتعامل مع الملفات. ومرة ​​أخرى، يُترك هذا الأمر لمجموعات الأدوات/المكتبات الأخرى لتوفيره.
  • يتم دعم المعالجة المتوازية متعددة الخيوط (الذاكرة المشتركة).
  • يعتمد تطوير مجموعة الأدوات على مبادئ البرمجة المتطرفة، أي أن التصميم والتنفيذ والاختبار تتم في عملية سريعة ومتكررة. ويُشكّل الاختبار جوهر هذه العملية. في Insight، يُجرى الاختبار باستمرار مع كل عملية إيداع للملفات، وكل ليلة على منصات ومترجمات متعددة. وتُعدّ لوحة تحكم اختبار ITK، حيث تُنشر نتائج الاختبار، عنصرًا أساسيًا في هذه العملية.

بنيان

فيما يلي السمات الرئيسية لبنية مجموعة الأدوات.

  • تعتمد مجموعة الأدوات على بنية تدفق البيانات. أي أن البيانات تُمثَّل باستخدام كائنات بيانات، والتي بدورها تُعالَج بواسطة كائنات معالجة (مرشحات). وترتبط كائنات البيانات وكائنات المعالجة معًا في مسارات بيانات. وتستطيع هذه المسارات معالجة البيانات على مراحل وفقًا لحدود الذاكرة التي يحددها المستخدم.
  • تُستخدم مصانع الكائنات لإنشاء الكائنات. تسمح المصانع بتوسيع النظام أثناء التشغيل.
  • يُستخدم نمط تصميم الأمر/المراقب لمعالجة الأحداث.

فلسفة التنفيذ

فيما يلي السمات الرئيسية لفلسفة تطبيق مجموعة الأدوات.

  • تم تنفيذ مجموعة الأدوات باستخدام مبادئ البرمجة العامة. يُمثل هذا النوع من أكواد C++ المعتمدة على القوالب تحديًا للعديد من المترجمات؛ لذا تم تطويرها باستخدام أحدث إصدارات مترجمات MSVC وSun وgcc وIntel وSGI.
  • مجموعة الأدوات متعددة المنصات (Unix وWindows وMac OS X).
  • تدعم مجموعة الأدوات ربط لغات متعددة، بما في ذلك لغات مثل Tcl و Python و Java. يتم إنشاء هذه الروابط تلقائيًا باستخدام عملية التغليف التلقائي.
  • يعتمد نموذج الذاكرة على "المؤشرات الذكية" التي تحتفظ بعدد المراجع للكائنات. يمكن تخصيص المؤشرات الذكية على المكدس، وعند الخروج من النطاق، تختفي هذه المؤشرات ويتم إنقاص عدد المراجع للكائن الذي تشير إليه.

بيئة البناء

يستخدم ITK بيئة بناء CMake (بيئة بناء متعددة المنصات). CMake هي عملية بناء مستقلة عن نظام التشغيل والمترجم، تُنتج ملفات بناء أصلية تتناسب مع نظام التشغيل والمترجم المستخدم. على أنظمة Unix، تُنتج CMake ملفات makefile، بينما على أنظمة Windows، تُنشئ CMake مشاريع ومساحات عمل.

بيئة الاختبار

يدعم ITK بيئة اختبار شاملة. يُختبر الكود يوميًا (بل وبشكل مستمر) على العديد من تركيبات الأجهزة وأنظمة التشغيل والمترجمات، وتُنشر النتائج يوميًا على لوحة تحكم اختبار ITK. نستخدم لغة Dart لإدارة عملية الاختبار ونشر النتائج على لوحة التحكم.

المراجع الأساسية: أنماط لغة C++ والأنواع العامة

تستخدم مكتبة ITK العديد من أنماط التصميم المتقدمة والبرمجة العامة. قد تجد هذه المراجع مفيدة في فهم تصميم وبنية Insight.

  • أنماط التصميم. بقلم إريك غاما، وريتشارد هيلم، ورالف جونسون، وجون فليسيدس، وغرادي بوتش
  • البرمجة العامة ومكتبة القوالب القياسية (STL)  : استخدام وتوسيع مكتبة القوالب القياسية للغة C++ (سلسلة أديسون-ويسلي للحوسبة الاحترافية) بقلم ماثيو هـ. أوسترن
  • أساليب ومصطلحات برمجة C++ المتقدمة بقلم جيمس أو. كوبلين
  • مجلة مستخدمي لغة C/C++
  • تقرير C++

أمثلة

تدرج الصورة المُنعّم باستخدام دالة غاوس

#include "itkImage.h"int main () { باستخدام ImageType = itk :: Image < unsigned char , 3 > ; باستخدام ReaderType = itk :: ImageFileReader < ImageType > ; باستخدام WriterType = itk :: ImageFileWriter < ImageType > ; باستخدام FilterType = itk :: GradientRecursiveGaussianImageFilter < ImageType , ImageType > ;ReaderType :: Point reader = ReaderType :: New (); WriterType :: Point writer = WriterType :: New ();قارئ -> تعيين اسم الملف ( "lungCT.dcm" ); كاتب -> تعيين اسم الملف ( "smoothedLung.hdr" );FilterType :: Pointer filter = FilterType :: New ();filter -> SetInput ( reader -> GetOutput () ); writer -> SetInput ( filter -> GetOutput () ); filter -> SetSigma ( 45.0 );حاول { الكاتب -> التحديث (); } أمسك ( itk :: ExceptionObject & excp ) { std :: cerr << excp << std :: endl ; أرجع فشل الخروج ; } }

تجزئة المنطقة المتنامية

#include "itkImage.h"int main () { using InputImageType = itk :: Image < signed short , 3 > ; using OutputImageType = itk :: Image < unsigned char , 3 > ; using ReaderType = itk :: ImageFileReader < InputImageType > ; using WriterType = itk :: ImageFileWriter < OutputImageType > ; using FilterType = itk :: ConnectedThresholdImageFilter < InputImageType , OutputImageType > ;ReaderType :: Point reader = ReaderType :: New (); WriterType :: Point writer = WriterType :: New ();قارئ -> تعيين اسم الملف ( "brain.dcm" ); كاتب -> تعيين اسم الملف ( "whiteMatter.hdr" );FilterType :: Pointer filter = FilterType :: New ();filter -> SetInput ( reader -> GetOutput () ); writer -> SetInput ( filter -> GetOutput () );filter- > SetMultiplier ( 2.5 ); ImageType :: IndexType seed ; seed [ 0 ] = 142 ; seed [ 1 ] = 97 ; seed [ 2 ] = 63 ; filter- > AddSeed ( seed ); try { writer- > Update (); } catch ( itk :: ExceptionObject & excp ) { std :: cerr << excp << std :: endl ; return EXIT_FAILURE ; } }

معلومات إضافية

موارد

تتوفر العديد من الموارد لمعرفة المزيد عن ITK.

التطبيقات

من أفضل الطرق للتعرف على ITK هو الاطلاع على كيفية استخدامها. هناك أربعة مصادر للعثور على تطبيقات ITK.

  1. تتضمن حزمة ITK أمثلة برمجية من قسم Insight/Examples/. الكود المصدري متاح، وهو مُعلّق عليه بشكلٍ وافٍ ويعمل بالتزامن مع دليل برنامج ITK.
  2. عملية الدفع المنفصلة لتطبيقات InsightApplications.
  3. صفحات الويب الخاصة بالتطبيقات . هذه عبارة عن أوصاف شاملة، مع صور ومراجع، للأمثلة الموجودة في رقم 1 أعلاه.
  4. تُعد أدلة الاختبار الموزعة مع ITK أمثلة بسيطة وغير موثقة بشكل أساسي لكيفية استخدام الكود.

في عام 2004، تم تطوير ITK-SNAP ( موقع الويب ) من SNAP وأصبح برنامجًا مجانيًا شائعًا لتقسيم الشاشة باستخدام ITK ويتميز بواجهة مستخدم بسيطة وجذابة.

بيانات

انظر أيضاً

جهات الاتصال

قم بزيارة منتدى نقاش ITK للتواصل والحصول على المساعدة من المجتمع.

مراجع

  1. "الإصدار 5.4.6" . 1 مايو 2026. تم الاطلاع عليه في 2 مايو 2026 .
  2. "Insight Software Consortium / ITK - GitHub" . GitHub . 2019-12-17.
  3. "حقوق النشر والترخيص" .