2013年4月6日 星期六

ITK VTK QT OpenCV Coding 架構


主要功能

  • ITK:
    Segmentation, Read in images, Write out images, Blah, Blah....
  • VTK:
    Show image on VTK window, Render 3D model, Blah...
  • Qt:
    Gui, Blah...
  • OpenCV:
    2D Image Processing, Read in 2D image, Write out 2D image, Show 2D image on OpenCV window, Blah...

主要架構

ITK +OpenCV <===> VTK + OpenCV <===> Qt + OpenCV 
  1. 建立一個ITK和OpenCV專用的Class
    負責最主要影像的處理
    會回傳ITK image
    會回傳OpenCV image
  2. 建立專用VTK和OpenCV的Class
    用來收ITK處理後及OpenCV處理後的影像
    會送出VTK image和OpenCV image
  3. 建立Qt的GUI,專門收VTK的影像和OpenCV的影像
    VTK to Qt -> 藉由QVtkWidget顯示
    OpenCV image to Qt Qimage -> 藉由一個轉換的method (在此) ,顯示在QLabel上

Programming   Form User View to Programmer View

Class Q
  • Using Library
    Qt Library -----> Qt widget
    VTK Library -----> QVtkWidget vtkEventQtSlotConnect
    OpenCV Library -----> show QImage from cv::Mat
  • get VTK image
  • get cv::Mat
  • Show on QVtkWidget or QLabel
Class V
  • Using Library
    VTK Library
    OpenCV Library
    ITK Library
  • get ITK image
  • send VTK image
  • get and send cv::Mat
  • CONVERT ITK image to VTK image
  • For cv::Mat, this class is just a relay
Class I
  • Using Library
    ITK Library
    OpenCV Library
  • produce and send ITK image
  • produce and send cv::Mat
[Note : Only the OpenCV Library shows on every Class. It can be excluded if it is not needed.]

還有....

  1. 這三個Class可以在同一個方案下,但是在三個不同的專案中建立。
  2. 三個專案可以個別編譯,不互相影響,利用互相Linking的方式,可以加快編譯的時間,且Class的封裝性更佳!

沒有留言:

張貼留言