From: Eduardo DAVILA Date: Mon, 9 Mar 2020 12:06:58 +0000 (+0100) Subject: #3371 creaMaracasVisu Feature New Normal - Compare Images with RGB X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=140cf7973aad1fc89445baaef2875e023d5207e4;p=creaMaracasVisu.git #3371 creaMaracasVisu Feature New Normal - Compare Images with RGB --- diff --git a/bbtk/src/bbcreaMaracasVisuSetwxVtkBaseViewLookupTable.cxx b/bbtk/src/bbcreaMaracasVisuSetwxVtkBaseViewLookupTable.cxx new file mode 100644 index 0000000..76a9196 --- /dev/null +++ b/bbtk/src/bbcreaMaracasVisuSetwxVtkBaseViewLookupTable.cxx @@ -0,0 +1,98 @@ +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +#include "bbcreaMaracasVisuSetwxVtkBaseViewLookupTable.h" +#include "bbcreaMaracasVisuPackage.h" + +#include "wxVtk2DBaseView.h" + + +namespace bbcreaMaracasVisu +{ + +BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,SetwxVtkBaseViewLookupTable) +BBTK_BLACK_BOX_IMPLEMENTATION(SetwxVtkBaseViewLookupTable,bbtk::AtomicBlackBox); +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +void SetwxVtkBaseViewLookupTable::Process() +{ + +// THE MAIN PROCESSING METHOD BODY +// Here we simply set the input 'In' value to the output 'Out' +// And print out the output value +// INPUT/OUTPUT ACCESSORS ARE OF THE FORM : +// void bbSet{Input|Output}NAME(const TYPE&) +// const TYPE& bbGet{Input|Output}NAME() const +// Where : +// * NAME is the name of the input/output +// (the one provided in the attribute 'name' of the tag 'input') +// * TYPE is the C++ type of the input/output +// (the one provided in the attribute 'type' of the tag 'input') +// bbSetOutputOut( bbGetInputIn() ); +// std::cout << "Output value = " <GetDirection()>=0 && baseview->GetDirection()<=2) + { + wxVtk2DBaseView* baseview2D = (wxVtk2DBaseView*)baseview; + baseview2D->_imageViewer2XYZ -> setScalarsToColors( scalartocolors, outputformat ); + } // if Direction + } // if baseview +} + + + +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +void SetwxVtkBaseViewLookupTable::bbUserSetDefaultValues() +{ + +// SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX +// Here we initialize the input 'In' to 0 + bbSetInputBaseView1( NULL ); + bbSetInputBaseView2( NULL ); + bbSetInputBaseView3( NULL ); + bbSetInputBaseView4( NULL ); + +} +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +void SetwxVtkBaseViewLookupTable::bbUserInitializeProcessing() +{ + +// THE INITIALIZATION METHOD BODY : +// Here does nothing +// but this is where you should allocate the internal/output pointers +// if any + + +} +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +void SetwxVtkBaseViewLookupTable::bbUserFinalizeProcessing() +{ + +// THE FINALIZATION METHOD BODY : +// Here does nothing +// but this is where you should desallocate the internal/output pointers +// if any + +} +} +// EO namespace bbcreaMaracasVisu + + diff --git a/bbtk/src/bbcreaMaracasVisuSetwxVtkBaseViewLookupTable.h b/bbtk/src/bbcreaMaracasVisuSetwxVtkBaseViewLookupTable.h new file mode 100644 index 0000000..fe5f4d4 --- /dev/null +++ b/bbtk/src/bbcreaMaracasVisuSetwxVtkBaseViewLookupTable.h @@ -0,0 +1,64 @@ +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +#ifndef __bbcreaMaracasVisuSetwxVtkBaseViewLookupTable_h_INCLUDED__ +#define __bbcreaMaracasVisuSetwxVtkBaseViewLookupTable_h_INCLUDED__ + +#include "bbcreaMaracasVisu_EXPORT.h" +#include "bbtkAtomicBlackBox.h" +#include "iostream" + +#include "wxVtkBaseView.h" +#include "vtkScalarsToColors.h" + +namespace bbcreaMaracasVisu +{ + +class bbcreaMaracasVisu_EXPORT SetwxVtkBaseViewLookupTable + : + public bbtk::AtomicBlackBox +{ + BBTK_BLACK_BOX_INTERFACE(SetwxVtkBaseViewLookupTable,bbtk::AtomicBlackBox); +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== + BBTK_DECLARE_INPUT(BaseView1,wxVtkBaseView*); + BBTK_DECLARE_INPUT(BaseView2,wxVtkBaseView*); + BBTK_DECLARE_INPUT(BaseView3,wxVtkBaseView*); + BBTK_DECLARE_INPUT(BaseView4,wxVtkBaseView*); + BBTK_DECLARE_INPUT(ScalarToColors,vtkScalarsToColors*); + BBTK_DECLARE_INPUT(OutputFormat,int); +// BBTK_DECLARE_OUTPUT(Out,double); + BBTK_PROCESS(Process); + void Process(); + void SetLookupTable(wxVtkBaseView* baseview , vtkScalarsToColors* scalartocolors, int outputformat ); + +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +}; + +BBTK_BEGIN_DESCRIBE_BLACK_BOX(SetwxVtkBaseViewLookupTable,bbtk::AtomicBlackBox); + BBTK_NAME("SetwxVtkBaseViewLookupTable"); + BBTK_AUTHOR("InfoDev"); + BBTK_DESCRIPTION("No Description."); + BBTK_CATEGORY("empty"); + + BBTK_INPUT(SetwxVtkBaseViewLookupTable,BaseView1,"wxVtkBaseView 1",wxVtkBaseView*,""); + BBTK_INPUT(SetwxVtkBaseViewLookupTable,BaseView2,"wxVtkBaseView 2",wxVtkBaseView*,""); + BBTK_INPUT(SetwxVtkBaseViewLookupTable,BaseView3,"wxVtkBaseView 3",wxVtkBaseView*,""); + BBTK_INPUT(SetwxVtkBaseViewLookupTable,BaseView4,"wxVtkBaseView 4",wxVtkBaseView*,""); + BBTK_INPUT(SetwxVtkBaseViewLookupTable,ScalarToColors,"LookUp table",vtkScalarsToColors*,""); + BBTK_INPUT(SetwxVtkBaseViewLookupTable,OutputFormat,"default (1) VTK_LUMINANCE=1, VTK_LUMINANCE_ALPHA=2, VTK_RGB=3, VTK_RGBA=4",int,""); + +// BBTK_OUTPUT(SetwxVtkBaseViewLookupTable,Out,"First output",double,""); + +BBTK_END_DESCRIBE_BLACK_BOX(SetwxVtkBaseViewLookupTable); +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +} +// EO namespace bbcreaMaracasVisu + +#endif // __bbcreaMaracasVisuSetwxVtkBaseViewLookupTable_h_INCLUDED__ + diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkImageViewer2_XYZ.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkImageViewer2_XYZ.cxx index b03173e..3398325 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkImageViewer2_XYZ.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkImageViewer2_XYZ.cxx @@ -30,172 +30,6 @@ -#include "vtkLookupTable.h" -#include "vtkObjectFactory.h" - -class /*VTK_COMMON_EXPORT*/ vtkLookupTableDirectionVector2 : public vtkScalarsToColors -{ -public: - // Description: - // Construct with range=[0,1]; and hsv ranges set up for rainbow color table - // (from red to blue). - static vtkLookupTableDirectionVector2 *New(); - - vtkTypeMacro(vtkLookupTableDirectionVector2,vtkScalarsToColors); - void PrintSelf(ostream& os, vtkIndent indent); - - double *GetRange() { return this->GetTableRange(); }; - void SetRange(double min, double max) { this->SetTableRange(min, max); }; - void SetRange(double rng[2]) { this->SetRange(rng[0], rng[1]); }; - - void SetTableRange(double r[2]); - virtual void SetTableRange(double min, double max); - vtkGetVectorMacro(TableRange,double,2); - - unsigned char *MapValue(double v); - - void GetColor(double x, double rgb[3]); - - - void MapScalarsThroughTable2(void *input, unsigned char *output, - int inputDataType, int numberOfValues, - int inputIncrement, int outputIncrement); - -protected: - double TableRange[2]; - vtkLookupTableDirectionVector2(int sze=256, int ext=256); - ~vtkLookupTableDirectionVector2(); - -private: - vtkLookupTableDirectionVector2(const vtkLookupTableDirectionVector2&); // Not implemented. - void operator=(const vtkLookupTableDirectionVector2&); // Not implemented. -}; - - - - -vtkStandardNewMacro(vtkLookupTableDirectionVector2); - -// Construct with range=(0,1); and hsv ranges set up for rainbow color table -// (from red to blue). -vtkLookupTableDirectionVector2::vtkLookupTableDirectionVector2(int sze, int ext) -{ - this->TableRange[0] = 0.0; - this->TableRange[1] = 1.0; -} - -//---------------------------------------------------------------------------- -vtkLookupTableDirectionVector2::~vtkLookupTableDirectionVector2() -{ -} - -unsigned char *vtkLookupTableDirectionVector2::MapValue(double v) -{ - - //int idx = this->GetIndex(v); - //return (this->Table->GetPointer(0) + 4*idx); - return 0; -} - -void vtkLookupTableDirectionVector2::GetColor(double v, double rgb[3]) -{ -// unsigned char *rgb8 = this->MapValue(v); -// rgb[0] = rgb8[0]/255.0; -// rgb[1] = rgb8[1]/255.0; -// rgb[2] = rgb8[2]/255.0; - - rgb[0] = 1; - rgb[1] = 1; - rgb[2] = 0; -} - - -void vtkLookupTableDirectionVector2::SetTableRange(double r[2]) -{ - this->SetTableRange(r[0],r[1]); -} - -//---------------------------------------------------------------------------- -// Set the minimum/maximum scalar values for scalar mapping. Scalar values -// less than minimum range value are clamped to minimum range value. -// Scalar values greater than maximum range value are clamped to maximum -// range value. -void vtkLookupTableDirectionVector2::SetTableRange(double rmin, double rmax) -{ - if (rmax < rmin) - { - vtkErrorMacro("Bad table range: ["<TableRange[0] == rmin && this->TableRange[1] == rmax) - { - return; - } - - this->TableRange[0] = rmin; - this->TableRange[1] = rmax; - - this->Modified(); -} - - - -//---------------------------------------------------------------------------- -// Although this is a relatively expensive calculation, -// it is only done on the first render. Colors are cached -// for subsequent renders. -template -void vtkLookupTableMapDirVectorEED2(vtkLookupTableDirectionVector2 *self, T *input, - unsigned char *output, int length, - int inIncr, int outFormat) -{ - int i; - for (i = 0; i < length; ++i) - { - *output++ = static_cast(input[0]); // red - *output++ = static_cast(input[1]); // green - *output++ = static_cast(input[2]); // blue -// *output++ = 255; - input = input+inIncr; - } // for - -} - - -//---------------------------------------------------------------------------- -void vtkLookupTableDirectionVector2::MapScalarsThroughTable2(void *input, - unsigned char *output, - int inputDataType, - int numberOfValues, - int inputIncrement, - int outputFormat) -{ -// if (this->UseMagnitude && inputIncrement > 1) -// { - switch (inputDataType) - { - vtkTemplateMacro( vtkLookupTableMapDirVectorEED2(this,static_cast(input),output, - numberOfValues,inputIncrement,outputFormat); - return - ); - case VTK_BIT: - vtkErrorMacro("Cannot comput magnitude of bit array."); - break; - default: - vtkErrorMacro(<< "MapImageThroughTable: Unknown input ScalarType"); - } /// switch -// } //if -} - - -//---------------------------------------------------------------------------- -void vtkLookupTableDirectionVector2::PrintSelf(ostream& os, vtkIndent indent) -{ - this->Superclass::PrintSelf(os,indent); -} - - //------------------------------------------------------------------- @@ -203,17 +37,19 @@ void vtkLookupTableDirectionVector2::PrintSelf(ostream& os, vtkIndent indent) //------------------------------------------------------------------- vtkImageViewer2_XYZ::vtkImageViewer2_XYZ() { - _vtkimageviewer2 = vtkImageViewer2::New(); + _colortable = NULL; + _vtkimageviewer2 = vtkImageViewer2::New(); _vtkimageviewer2->GetRenderer()->GradientBackgroundOn(); _vtkimageviewer2->GetRenderer()->SetBackground( 0.33 , 0.33 , 0.33 ); _vtkimageviewer2->GetRenderer()->SetBackground2( 0.66 , 0.66 , 0.66 ); - _colortable = NULL; } + //------------------------------------------------------------------- vtkImageViewer2_XYZ::~vtkImageViewer2_XYZ() { //_vtkimageviewer2->Delete(); } + //------------------------------------------------------------------- void vtkImageViewer2_XYZ::SetExtentDimension(int x1,int x2, int y1,int y2, @@ -301,7 +137,7 @@ void vtkImageViewer2_XYZ::setScalarsToColors(vtkScalarsToColors* colortable, int /* outputformat VTK-8.1.1/Common/Core/vtkSystemIncludes.h VTK_LUMINANCE 1 VTK_LUMINANCE_ALPHA 2 - VTK_RGB 3 + VTK_RGB 3 OK VTK_RGBA 4 */ if( _colortable!=colortable) @@ -309,7 +145,7 @@ void vtkImageViewer2_XYZ::setScalarsToColors(vtkScalarsToColors* colortable, int _colortable = colortable; _vtkimageviewer2->GetWindowLevel()->SetOutputFormat( outputformat ); _vtkimageviewer2->GetWindowLevel()->SetLookupTable(colortable); -// _vtkimageviewer2->GetWindowLevel()->SetOutputFormatToRGB(); + _vtkimageviewer2->GetWindowLevel()->SetOutputFormatToRGB(); // vtkLookupTableDirectionVector2 *_LutEED = vtkLookupTableDirectionVector2::New(); // _LutEED->SetVectorModeToRGBColors(); // _vtkimageviewer2->GetWindowLevel()->SetLookupTable(_LutEED); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkImageViewer2_XYZ.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkImageViewer2_XYZ.h index b20ea78..7bfaa86 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkImageViewer2_XYZ.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkImageViewer2_XYZ.h @@ -35,7 +35,8 @@ #include "vtkImageMapToWindowLevelColors.h" #include "vtkColorTransferFunction.h" -class creaMaracasVisu_EXPORT vtkImageViewer2_XYZ{ +class creaMaracasVisu_EXPORT vtkImageViewer2_XYZ +{ public: vtkImageViewer2_XYZ(); ~vtkImageViewer2_XYZ();