diff --git a/CMakeLists.txt b/CMakeLists.txt index c97fa0868e..53d8af39f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,1392 +1,1391 @@ set(MITK_CMAKE_MINIMUM_REQUIRED_VERSION 3.5) cmake_minimum_required(VERSION ${MITK_CMAKE_MINIMUM_REQUIRED_VERSION}) #----------------------------------------------------------------------------- # See http://www.cmake.org/cmake/help/v3.5/manual/cmake-policies.7.html for details #----------------------------------------------------------------------------- set(project_policies ) foreach(policy ${project_policies}) if(POLICY ${policy}) cmake_policy(SET ${policy} NEW) endif() endforeach() #----------------------------------------------------------------------------- # Superbuild Option - Enabled by default #----------------------------------------------------------------------------- option(MITK_USE_SUPERBUILD "Build MITK and the projects it depends on via SuperBuild.cmake." ON) if(MITK_USE_SUPERBUILD) project(MITK-superbuild) set(MITK_SOURCE_DIR ${PROJECT_SOURCE_DIR}) set(MITK_BINARY_DIR ${PROJECT_BINARY_DIR}) else() project(MITK VERSION 2016.11.99) endif() #----------------------------------------------------------------------------- # Update CMake module path #------------------------------------------------------------------------------ set(MITK_CMAKE_DIR ${MITK_SOURCE_DIR}/CMake) set(CMAKE_MODULE_PATH ${MITK_CMAKE_DIR} ${CMAKE_MODULE_PATH} ) #----------------------------------------------------------------------------- # CMake function(s) and macro(s) #----------------------------------------------------------------------------- # Standard CMake macros include(FeatureSummary) include(CTestUseLaunchers) include(CMakeParseArguments) include(FindPackageHandleStandardArgs) # MITK macros include(mitkFunctionGetGccVersion) include(mitkFunctionCheckCompilerFlags) include(mitkFunctionSuppressWarnings) # includes several functions include(mitkMacroEmptyExternalProject) include(mitkFunctionGenerateProjectXml) include(mitkFunctionEnableBuildConfiguration) include(mitkFunctionWhitelists) include(mitkFunctionAddExternalProject) SUPPRESS_VC_DEPRECATED_WARNINGS() #----------------------------------------------------------------------------- # Set a default build type if none was specified #----------------------------------------------------------------------------- if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) message(STATUS "Setting build type to 'Debug' as none was specified.") set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE) # Set the possible values of build type for cmake-gui set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") endif() #----------------------------------------------------------------------------- # Check miminum Mac OS X version #----------------------------------------------------------------------------- # The minimum supported Mac OS X version is 10.9. If you use a version less than 10.9, there is no guarantee that the build still works. if(APPLE) exec_program(sw_vers ARGS -productVersion OUTPUT_VARIABLE osx_version) if (osx_version VERSION_LESS "10.9") message(WARNING "Detected OS X version \"${osx_version}\" is not supported anymore. Minimum required OS X version is 10.9 or greater.") endif() if (CMAKE_OSX_DEPLOYMENT_TARGET AND CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS 10.9) message(WARNING "Detected OS X deployment target \"${CMAKE_OSX_DEPLOYMENT_TARGET}\" is not supported anymore. Minimum required OS X version is 10.9 or greater.") endif() endif() #----------------------------------------------------------------------------- # Check miminum compiler versions #----------------------------------------------------------------------------- if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") # require at least gcc 4.9 as provided by ppa:ubuntu-toolchain-r/test for Ubuntu 14.04 if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9) message(FATAL_ERROR "GCC version must be at least 4.9 If you are using Ubuntu 14.04, you can easily install gcc and g++ 4.9 (or any later version available) in addition to your version ${CMAKE_CXX_COMPILER_VERSION}: sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-4.9 g++-4.9 Make sure to explicitly specify these compilers when configuring MITK: CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc-4.9 CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++-4.9 For more information on the proposed PPA see the Toolchain Updates section of https://wiki.ubuntu.com/ToolChain.") endif() elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") # require at least clang 3.4 if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4) message(FATAL_ERROR "Clang version must be at least 3.4") endif() elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") # require at least clang 5.0 if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) message(FATAL_ERROR "Apple Clang version must be at least 5.0") endif() elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # require at least Visual Studio 2013 if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.40629.0) message(FATAL_ERROR "Microsoft Visual Studio 2013 Update 5 or newer required (MSVC 18.0.40629.0)") endif() else() message(WARNING "You are using an unsupported compiler! Compilation has only been tested with Clang (Linux or Apple), GCC and MSVC.") endif() if(CMAKE_COMPILER_IS_GNUCXX) mitkFunctionGetGccVersion(${CMAKE_CXX_COMPILER} GCC_VERSION) else() set(GCC_VERSION 0) endif() set(MITK_CXX_STANDARD 14) set(CMAKE_CXX_EXTENSIONS 0) set(CMAKE_CXX_STANDARD ${MITK_CXX_STANDARD}) set(CMAKE_CXX_STANDARD_REQUIRED 1) # This is necessary to avoid problems with compile feature checks. # CMAKE_CXX_STANDARD seems to only set the -std=c++14 flag for targets. # However, compile flag checks also need to be done with -std=c++14. # The MITK_CXX14_FLAG variable is also used for external projects # build during the MITK super-build. mitkFunctionCheckCompilerFlags("-std=c++14" MITK_CXX14_FLAG) #----------------------------------------------------------------------------- # Warn if source or build path is too long #----------------------------------------------------------------------------- if(WIN32) set(_src_dir_length_max 50) set(_bin_dir_length_max 50) if(MITK_USE_SUPERBUILD) set(_src_dir_length_max 34) # _src_dir_length_max - strlen(ep/src/ITK-build) set(_bin_dir_length_max 40) # _bin_dir_length_max - strlen(MITK-build) endif() string(LENGTH "${MITK_SOURCE_DIR}" _src_n) string(LENGTH "${MITK_BINARY_DIR}" _bin_n) # The warnings should be converted to errors if(_src_n GREATER _src_dir_length_max) message(WARNING "MITK source code directory path length is too long (${_src_n} > ${_src_dir_length_max})." "Please move the MITK source code directory to a directory with a shorter path." ) endif() if(_bin_n GREATER _bin_dir_length_max) message(WARNING "MITK build directory path length is too long (${_bin_n} > ${_bin_dir_length_max})." "Please move the MITK build directory to a directory with a shorter path." ) endif() endif() #----------------------------------------------------------------------------- # Additional MITK Options (also shown during superbuild) #----------------------------------------------------------------------------- macro(env_option name doc value) set(_value $ENV{${name}}) if("${_value}" STREQUAL "") set(_value ${value}) endif() option(${name} "${doc}" ${_value}) endmacro() # ----------------------------------------- # General build options option(BUILD_SHARED_LIBS "Build MITK with shared libraries" ON) option(WITH_COVERAGE "Enable/Disable coverage" OFF) option(BUILD_TESTING "Test the project" ON) env_option(MITK_BUILD_ALL_APPS "Build all MITK applications" OFF) env_option(MITK_BUILD_EXAMPLES "Build the MITK Examples" OFF) option(MITK_ENABLE_PIC_READER "Enable support for reading the DKFZ pic file format." ON) mark_as_advanced(MITK_BUILD_ALL_APPS MITK_ENABLE_PIC_READER ) # ----------------------------------------- # Qt version related variables env_option(MITK_USE_Qt5 "Use Qt 5 library" ON) env_option(MITK_USE_Qt5_WebEngine "Use Qt 5 WebEngine library" ON) if(MITK_USE_Qt5) set(MITK_QT5_MINIMUM_VERSION 5.6.0) set(MITK_QT5_COMPONENTS Concurrent OpenGL PrintSupport Script Sql Svg Widgets Xml XmlPatterns UiTools Help LinguistTools) if(MITK_USE_Qt5_WebEngine) set(MITK_QT5_COMPONENTS ${MITK_QT5_COMPONENTS} WebEngineWidgets) endif() if(APPLE) set(MITK_QT5_COMPONENTS ${MITK_QT5_COMPONENTS} DBus) endif() find_package(Qt5 ${MITK_QT5_MINIMUM_VERSION} COMPONENTS ${MITK_QT5_COMPONENTS} REQUIRED) if(Qt5_DIR) get_filename_component(_Qt5_DIR "${Qt5_DIR}/../../../" ABSOLUTE) list(FIND CMAKE_PREFIX_PATH "${_Qt5_DIR}" _result) if(_result LESS 0) set(CMAKE_PREFIX_PATH "${_Qt5_DIR};${CMAKE_PREFIX_PATH}" CACHE PATH "" FORCE) endif() endif() elseif(MITK_USE_Qt5_WebEngine) set(MITK_USE_Qt5_WebEngine OFF) endif() # ------------------------------------------------------------------------ # Register external projects which can be build with the MITK superbuild # system. Each mitkFunctionAddExternalProject() call registers an external # project for which a CMakeExternals/.cmake file must exist. The # call also creates a MITK_USE_ variable (appearing in the CMake # UI if the NO_CACHE option is *not* given). # ----------------------------------------- # Optional external projects with no # inter-dependencies set_property(GLOBAL PROPERTY MITK_EXTERNAL_PROJECTS "") mitkFunctionAddExternalProject(NAME Poco ON COMPONENTS Foundation Net Util XML Zip) mitkFunctionAddExternalProject(NAME DCMTK ON DOC "EXPERIMENTAL, superbuild only: Use DCMTK in MITK") mitkFunctionAddExternalProject(NAME OpenIGTLink OFF) mitkFunctionAddExternalProject(NAME tinyxml ON ADVANCED) mitkFunctionAddExternalProject(NAME GDCM ON ADVANCED) mitkFunctionAddExternalProject(NAME GLUT OFF ADVANCED) mitkFunctionAddExternalProject(NAME Raptor2 OFF ADVANCED) mitkFunctionAddExternalProject(NAME Eigen ON ADVANCED DOC "Use the Eigen library") mitkFunctionAddExternalProject(NAME GLEW ON ADVANCED DOC "Use the GLEW library") mitkFunctionAddExternalProject(NAME ANN ON ADVANCED DOC "Use Approximate Nearest Neighbor Library") mitkFunctionAddExternalProject(NAME CppUnit ON ADVANCED DOC "Use CppUnit for unit tests") mitkFunctionAddExternalProject(NAME PCRE OFF ADVANCED NO_PACKAGE) mitkFunctionAddExternalProject(NAME ZLIB OFF ADVANCED NO_PACKAGE NO_CACHE) mitkFunctionAddExternalProject(NAME HDF5 OFF ADVANCED) # ----------------------------------------- # The following external projects must be # ordered according to their # inter-dependencies mitkFunctionAddExternalProject(NAME SWIG OFF ADVANCED NO_PACKAGE DEPENDS PCRE) mitkFunctionAddExternalProject(NAME Python OFF NO_PACKAGE DEPENDS SWIG DOC "Use Python wrapping in MITK") mitkFunctionAddExternalProject(NAME Numpy OFF ADVANCED NO_PACKAGE) mitkFunctionAddExternalProject(NAME OpenCV OFF) mitkFunctionAddExternalProject(NAME Vigra OFF DEPENDS HDF5) # These are "hard" dependencies and always set to ON mitkFunctionAddExternalProject(NAME ITK ON NO_CACHE) mitkFunctionAddExternalProject(NAME VTK ON NO_CACHE) mitkFunctionAddExternalProject(NAME Boost ON NO_CACHE) mitkFunctionAddExternalProject(NAME SimpleITK OFF DEPENDS ITK GDCM SWIG) mitkFunctionAddExternalProject(NAME ACVD OFF DOC "Use Approximated Centroidal Voronoi Diagrams") mitkFunctionAddExternalProject(NAME CTK ON DEPENDS Qt5 DCMTK DOC "Use CTK in MITK") mitkFunctionAddExternalProject(NAME Rasqal OFF DEPENDS Raptor2 PCRE ADVANCED) mitkFunctionAddExternalProject(NAME Redland OFF DEPENDS Rasqal DOC "Use the Redland RDF library") mitkFunctionAddExternalProject(NAME SOFA OFF DEPENDS GLUT Eigen Boost DOC "Use Simulation Open Framework Architecture") mitkFunctionAddExternalProject(NAME VMTK OFF DEPENDS ITK VTK) mitkFunctionAddExternalProject(NAME DCMQI OFF DEPENDS DCMTK ITK DOC "Use dcmqi in MITK") mitkFunctionAddExternalProject(NAME MatchPoint OFF ADVANCED DEPENDS ITK DOC "Use the MatchPoint translation image registration library") if(MITK_USE_Qt5) mitkFunctionAddExternalProject(NAME Qwt ON ADVANCED DEPENDS Qt5) endif() # ----------------------------------------- # Other MITK_USE_* options not related to # external projects build via the # MITK superbuild env_option(MITK_USE_BLUEBERRY "Build the BlueBerry platform" ON) env_option(MITK_USE_OpenCL "Use OpenCL GPU-Computing library" OFF) #----------------------------------------------------------------------------- # Build configurations #----------------------------------------------------------------------------- set(_buildConfigs "Custom") file(GLOB _buildConfigFiles CMake/BuildConfigurations/*.cmake) foreach(_buildConfigFile ${_buildConfigFiles}) get_filename_component(_buildConfigFile ${_buildConfigFile} NAME_WE) list(APPEND _buildConfigs ${_buildConfigFile}) endforeach() set(MITK_BUILD_CONFIGURATION "Custom" CACHE STRING "Use pre-defined MITK configurations") set_property(CACHE MITK_BUILD_CONFIGURATION PROPERTY STRINGS ${_buildConfigs}) mitkFunctionEnableBuildConfiguration() mitkFunctionCreateWhitelistPaths(MITK) mitkFunctionFindWhitelists(MITK) # ----------------------------------------- # Custom dependency logic option(MITK_USE_SYSTEM_Boost "Use the system Boost" OFF) set(MITK_USE_Boost_LIBRARIES "" CACHE STRING "A semi-colon separated list of required Boost libraries") if(MITK_USE_SOFA) # SOFA requires boost system library list(FIND MITK_USE_Boost_LIBRARIES system _result) if(_result LESS 0) message("> Adding 'system' to MITK_USE_Boost_LIBRARIES.") list(APPEND MITK_USE_Boost_LIBRARIES system) endif() # SOFA requires boost thread library list(FIND MITK_USE_Boost_LIBRARIES thread _result) if(_result LESS 0) message("> Adding 'thread' to MITK_USE_Boost_LIBRARIES.") list(APPEND MITK_USE_Boost_LIBRARIES thread) endif() # Simulation plugin requires boost chrono library list(FIND MITK_USE_Boost_LIBRARIES chrono _result) if(_result LESS 0) message("> Adding 'chrono' to MITK_USE_Boost_LIBRARIES.") list(APPEND MITK_USE_Boost_LIBRARIES chrono) endif() set(MITK_USE_Boost_LIBRARIES ${MITK_USE_Boost_LIBRARIES} CACHE STRING "" FORCE) # Allow setting external SOFA plugins directory and SOFA plugins set(MITK_USE_SOFA_PLUGINS_DIR ${MITK_USE_SOFA_PLUGINS_DIR} CACHE PATH "External SOFA plugins directory" FORCE) set(MITK_USE_SOFA_PLUGINS ${MITK_USE_SOFA_PLUGINS} CACHE PATH "List of semicolon-separated plugin names" FORCE) endif() # only windows can't build python in debug mode if(MITK_USE_Python AND "${CMAKE_BUILD_TYPE}" STREQUAL "Debug" AND WIN32) message(WARNING "Disabling Python support. Building MITK Python in debug mode on Windowsis not supported!") set(MITK_USE_Python OFF CACHE BOOL "Use python wrapping in MITK" FORCE) set(MITK_USE_Numpy OFF CACHE BOOL "Use Numpy" FORCE) set(MITK_USE_SimpleITK OFF CACHE BOOL "Use SimpleITK" FORCE) elseif(MITK_USE_Python) set(MITK_USE_ZLIB ON) if(NOT MITK_USE_Numpy) message("> Forcing MITK_USE_Numpy to ON because of MITK_USE_Python") set(MITK_USE_Numpy ON CACHE BOOL "Use Numpy" FORCE) endif() if(NOT MITK_USE_SimpleITK) message("> Forcing MITK_USE_SimpleITK to ON because of MITK_USE_Python") set(MITK_USE_SimpleITK ON CACHE BOOL "Use SimpleITK" FORCE) endif() option(MITK_USE_SYSTEM_PYTHON "Use the system python runtime" OFF) if(MITK_USE_SYSTEM_PYTHON) find_package(PythonLibs REQUIRED) find_package(PythonInterp REQUIRED) endif() elseif(MITK_USE_Python AND "${CMAKE_BUILD_TYPE}" STREQUAL "Debug" AND WIN32) message(WARNING "Disabling Python support. Building MITK Python in debug mode on Windowsis not supported!") set(MITK_USE_Python OFF CACHE BOOL "Use python wrapping in MITK" FORCE) endif() if(BUILD_TESTING AND NOT MITK_USE_CppUnit) message("> Forcing MITK_USE_CppUnit to ON because BUILD_TESTING=ON") set(MITK_USE_CppUnit ON CACHE BOOL "Use CppUnit for unit tests" FORCE) endif() if(MITK_USE_BLUEBERRY) option(MITK_BUILD_ALL_PLUGINS "Build all MITK plugins" OFF) mark_as_advanced(MITK_BUILD_ALL_PLUGINS) if(NOT MITK_USE_CTK) message("> Forcing MITK_USE_CTK to ON because of MITK_USE_BLUEBERRY") set(MITK_USE_CTK ON CACHE BOOL "Use CTK in MITK" FORCE) endif() endif() #----------------------------------------------------------------------------- # Pixel type multiplexing #----------------------------------------------------------------------------- # Customize the default pixel types for multiplex macros set(MITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES "int, unsigned int, short, unsigned short, char, unsigned char" CACHE STRING "List of integral pixel types used in AccessByItk and InstantiateAccessFunction macros") set(MITK_ACCESSBYITK_FLOATING_PIXEL_TYPES "double, float" CACHE STRING "List of floating pixel types used in AccessByItk and InstantiateAccessFunction macros") set(MITK_ACCESSBYITK_COMPOSITE_PIXEL_TYPES "itk::RGBPixel, itk::RGBAPixel" CACHE STRING "List of composite pixel types used in AccessByItk and InstantiateAccessFunction macros") set(MITK_ACCESSBYITK_DIMENSIONS "2,3" CACHE STRING "List of dimensions used in AccessByItk and InstantiateAccessFunction macros") mark_as_advanced(MITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES MITK_ACCESSBYITK_FLOATING_PIXEL_TYPES MITK_ACCESSBYITK_COMPOSITE_PIXEL_TYPES MITK_ACCESSBYITK_DIMENSIONS ) # consistency checks if(NOT MITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES) set(MITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES "int, unsigned int, short, unsigned short, char, unsigned char" CACHE STRING "List of integral pixel types used in AccessByItk and InstantiateAccessFunction macros" FORCE) endif() if(NOT MITK_ACCESSBYITK_FLOATING_PIXEL_TYPES) set(MITK_ACCESSBYITK_FLOATING_PIXEL_TYPES "double, float" CACHE STRING "List of floating pixel types used in AccessByItk and InstantiateAccessFunction macros" FORCE) endif() if(NOT MITK_ACCESSBYITK_COMPOSITE_PIXEL_TYPES) set(MITK_ACCESSBYITK_COMPOSITE_PIXEL_TYPES "itk::RGBPixel, itk::RGBAPixel" CACHE STRING "List of composite pixel types used in AccessByItk and InstantiateAccessFunction macros" FORCE) endif() if(NOT MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES) string(REPLACE "," ";" _integral_types ${MITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES}) string(REPLACE "," ";" _floating_types ${MITK_ACCESSBYITK_FLOATING_PIXEL_TYPES}) foreach(_scalar_type ${_integral_types} ${_floating_types}) set(MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES "${MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES}itk::VariableLengthVector<${_scalar_type}>,") endforeach() string(LENGTH "${MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES}" _length) math(EXPR _length "${_length} - 1") string(SUBSTRING "${MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES}" 0 ${_length} MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES) set(MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES ${MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES} CACHE STRING "List of vector pixel types used in AccessByItk and InstantiateAccessFunction macros for itk::VectorImage types" FORCE) endif() if(NOT MITK_ACCESSBYITK_DIMENSIONS) set(MITK_ACCESSBYITK_DIMENSIONS "2,3" CACHE STRING "List of dimensions used in AccessByItk and InstantiateAccessFunction macros") endif() #----------------------------------------------------------------------------- # Project.xml #----------------------------------------------------------------------------- # A list of topologically ordered targets set(CTEST_PROJECT_SUBPROJECTS) list(APPEND CTEST_PROJECT_SUBPROJECTS MITK-Core MITK-CoreUI MITK-IGT MITK-ToF MITK-DTI - MITK-Registration MITK-Modules # all modules not contained in a specific subproject MITK-Plugins # all plugins not contained in a specific subproject MITK-Examples Unlabeled # special "subproject" catching all unlabeled targets and tests ) # Configure CTestConfigSubProject.cmake that could be used by CTest scripts configure_file(${MITK_SOURCE_DIR}/CTestConfigSubProject.cmake.in ${MITK_BINARY_DIR}/CTestConfigSubProject.cmake) if(CTEST_PROJECT_ADDITIONAL_TARGETS) # those targets will be executed at the end of the ctest driver script # and they also get their own subproject label set(subproject_list "${CTEST_PROJECT_SUBPROJECTS};${CTEST_PROJECT_ADDITIONAL_TARGETS}") else() set(subproject_list "${CTEST_PROJECT_SUBPROJECTS}") endif() # Generate Project.xml file expected by the CTest driver script mitkFunctionGenerateProjectXml(${MITK_BINARY_DIR} MITK "${subproject_list}" ${MITK_USE_SUPERBUILD}) #----------------------------------------------------------------------------- # Superbuild script #----------------------------------------------------------------------------- if(MITK_USE_SUPERBUILD) include("${CMAKE_CURRENT_SOURCE_DIR}/SuperBuild.cmake") # Print configuration summary message("\n\n") feature_summary( DESCRIPTION "------- FEATURE SUMMARY FOR ${PROJECT_NAME} -------" WHAT ALL) return() endif() #***************************************************************************** #**************************** END OF SUPERBUILD **************************** #***************************************************************************** #----------------------------------------------------------------------------- # CMake function(s) and macro(s) #----------------------------------------------------------------------------- include(WriteBasicConfigVersionFile) include(CheckCXXSourceCompiles) include(GenerateExportHeader) include(mitkFunctionAddCustomModuleTest) include(mitkFunctionCheckModuleDependencies) include(mitkFunctionCompileSnippets) include(mitkFunctionConfigureVisualStudioUserProjectFile) include(mitkFunctionConvertXPSchema) include(mitkFunctionCreateBlueBerryApplication) include(mitkFunctionCreateCommandLineApp) include(mitkFunctionCreateModule) include(mitkFunctionCreatePlugin) include(mitkFunctionCreateProvisioningFile) include(mitkFunctionGetLibrarySearchPaths) include(mitkFunctionGetVersion) include(mitkFunctionGetVersionDescription) include(mitkFunctionInstallAutoLoadModules) include(mitkFunctionInstallCTKPlugin) include(mitkFunctionInstallProvisioningFiles) include(mitkFunctionInstallThirdPartyCTKPlugins) include(mitkFunctionOrganizeSources) include(mitkFunctionTestPlugin) include(mitkFunctionUseModules) if( ${MITK_USE_MatchPoint} ) include(mitkFunctionCreateMatchPointDeployedAlgorithm) endif() include(mitkMacroConfigureItkPixelTypes) include(mitkMacroCreateExecutable) include(mitkMacroCreateModuleTests) include(mitkMacroGenerateToolsLibrary) include(mitkMacroGetLinuxDistribution) include(mitkMacroGetPMDPlatformString) include(mitkMacroInstall) include(mitkMacroInstallHelperApp) include(mitkMacroInstallTargets) include(mitkMacroMultiplexPicType) # Deprecated include(mitkMacroCreateCTKPlugin) #----------------------------------------------------------------------------- # Global CMake variables #----------------------------------------------------------------------------- # Required and enabled C++14 features for all MITK code. # These are added as PUBLIC compile features to all MITK modules. set(MITK_CXX_FEATURES cxx_auto_type cxx_decltype cxx_enum_forward_declarations cxx_extended_friend_declarations cxx_extern_templates cxx_final cxx_lambdas cxx_local_type_template_args cxx_long_long_type cxx_nullptr cxx_override cxx_range_for cxx_right_angle_brackets cxx_rvalue_references cxx_static_assert cxx_strong_enums cxx_template_template_parameters cxx_trailing_return_types cxx_variadic_macros ) if(NOT DEFINED CMAKE_DEBUG_POSTFIX) # We can't do this yet because the CTK Plugin Framework # cannot cope with a postfix yet. #set(CMAKE_DEBUG_POSTFIX d) endif() #----------------------------------------------------------------------------- # Output directories. #----------------------------------------------------------------------------- set(_default_LIBRARY_output_dir lib) set(_default_RUNTIME_output_dir bin) set(_default_ARCHIVE_output_dir lib) foreach(type LIBRARY RUNTIME ARCHIVE) # Make sure the directory exists if(MITK_CMAKE_${type}_OUTPUT_DIRECTORY AND NOT EXISTS ${MITK_CMAKE_${type}_OUTPUT_DIRECTORY}) message("Creating directory MITK_CMAKE_${type}_OUTPUT_DIRECTORY: ${MITK_CMAKE_${type}_OUTPUT_DIRECTORY}") file(MAKE_DIRECTORY "${MITK_CMAKE_${type}_OUTPUT_DIRECTORY}") endif() if(MITK_CMAKE_${type}_OUTPUT_DIRECTORY) set(CMAKE_${type}_OUTPUT_DIRECTORY ${MITK_CMAKE_${type}_OUTPUT_DIRECTORY}) else() set(CMAKE_${type}_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${_default_${type}_output_dir}) set(MITK_CMAKE_${type}_OUTPUT_DIRECTORY ${CMAKE_${type}_OUTPUT_DIRECTORY}) endif() set(CMAKE_${type}_OUTPUT_DIRECTORY ${CMAKE_${type}_OUTPUT_DIRECTORY} CACHE INTERNAL "Output directory for ${type} files.") mark_as_advanced(CMAKE_${type}_OUTPUT_DIRECTORY) endforeach() #----------------------------------------------------------------------------- # Set MITK specific options and variables (NOT available during superbuild) #----------------------------------------------------------------------------- # Look for optional Doxygen package find_package(Doxygen) option(BLUEBERRY_DEBUG_SMARTPOINTER "Enable code for debugging smart pointers" OFF) mark_as_advanced(BLUEBERRY_DEBUG_SMARTPOINTER) # ASK THE USER TO SHOW THE CONSOLE WINDOW FOR CoreApp and mitkWorkbench option(MITK_SHOW_CONSOLE_WINDOW "Use this to enable or disable the console window when starting MITK GUI Applications" ON) mark_as_advanced(MITK_SHOW_CONSOLE_WINDOW) # TODO: check if necessary option(USE_ITKZLIB "Use the ITK zlib for pic compression." ON) mark_as_advanced(USE_ITKZLIB) if(NOT MITK_FAST_TESTING) if(DEFINED MITK_CTEST_SCRIPT_MODE AND (MITK_CTEST_SCRIPT_MODE STREQUAL "continuous" OR MITK_CTEST_SCRIPT_MODE STREQUAL "experimental") ) set(MITK_FAST_TESTING 1) endif() endif() if(NOT UNIX AND NOT MINGW) set(MITK_WIN32_FORCE_STATIC "STATIC" CACHE INTERNAL "Use this variable to always build static libraries on non-unix platforms") endif() if(MITK_BUILD_ALL_PLUGINS) set(MITK_BUILD_ALL_PLUGINS_OPTION "FORCE_BUILD_ALL") endif() # Configure pixel types used for ITK image access multiplexing mitkMacroConfigureItkPixelTypes() # Configure module naming conventions set(MITK_MODULE_NAME_REGEX_MATCH "^[A-Z].*$") set(MITK_MODULE_NAME_REGEX_NOT_MATCH "^[Mm][Ii][Tt][Kk].*$") set(MITK_MODULE_NAME_PREFIX "Mitk") set(MITK_MODULE_NAME_DEFAULTS_TO_DIRECTORY_NAME 1) #----------------------------------------------------------------------------- # Get MITK version info #----------------------------------------------------------------------------- mitkFunctionGetVersion(${MITK_SOURCE_DIR} MITK) mitkFunctionGetVersionDescription(${MITK_SOURCE_DIR} MITK) # MITK_VERSION set(MITK_VERSION_STRING "${MITK_VERSION_MAJOR}.${MITK_VERSION_MINOR}.${MITK_VERSION_PATCH}") if(MITK_VERSION_PATCH STREQUAL "99") set(MITK_VERSION_STRING "${MITK_VERSION_STRING}-${MITK_REVISION_SHORTID}") endif() #----------------------------------------------------------------------------- # Installation preparation # # These should be set before any MITK install macros are used #----------------------------------------------------------------------------- # on Mac OSX all BlueBerry plugins get copied into every # application bundle (.app directory) specified here if(MITK_USE_BLUEBERRY AND APPLE) include("${CMAKE_CURRENT_SOURCE_DIR}/Applications/AppList.cmake") foreach(mitk_app ${MITK_APPS}) # extract option_name string(REPLACE "^^" "\\;" target_info ${mitk_app}) set(target_info_list ${target_info}) list(GET target_info_list 1 option_name) list(GET target_info_list 0 app_name) # check if the application is enabled if(${option_name} OR MITK_BUILD_ALL_APPS) set(MACOSX_BUNDLE_NAMES ${MACOSX_BUNDLE_NAMES} Mitk${app_name}) endif() endforeach() endif() #----------------------------------------------------------------------------- # Set coverage Flags #----------------------------------------------------------------------------- if(WITH_COVERAGE) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(coverage_flags "-g -fprofile-arcs -ftest-coverage -O0 -DNDEBUG") set(COVERAGE_CXX_FLAGS ${coverage_flags}) set(COVERAGE_C_FLAGS ${coverage_flags}) endif() endif() #----------------------------------------------------------------------------- # MITK C/CXX Flags #----------------------------------------------------------------------------- set(MITK_C_FLAGS "${COVERAGE_C_FLAGS}") set(MITK_C_FLAGS_DEBUG ) set(MITK_C_FLAGS_RELEASE ) set(MITK_CXX_FLAGS "${COVERAGE_CXX_FLAGS} ${MITK_CXX14_FLAG}") set(MITK_CXX_FLAGS_DEBUG ) set(MITK_CXX_FLAGS_RELEASE ) set(MITK_EXE_LINKER_FLAGS ) set(MITK_SHARED_LINKER_FLAGS ) find_package(OpenMP) if (OPENMP_FOUND) set(MITK_C_FLAGS "${MITK_C_FLAGS} ${OpenMP_C_FLAGS}") set(MITK_CXX_FLAGS "${MITK_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") endif() if(WIN32) set(MITK_CXX_FLAGS "${MITK_CXX_FLAGS} -D_WIN32_WINNT=0x0501 -DPOCO_NO_UNWINDOWS -DWIN32_LEAN_AND_MEAN -DNOMINMAX") mitkFunctionCheckCompilerFlags("/wd4005" MITK_CXX_FLAGS) # warning C4005: macro redefinition mitkFunctionCheckCompilerFlags("/wd4231" MITK_CXX_FLAGS) # warning C4231: nonstandard extension used : 'extern' before template explicit instantiation # the following line should be removed after fixing bug 17637 mitkFunctionCheckCompilerFlags("/wd4316" MITK_CXX_FLAGS) # warning C4316: object alignment on heap mitkFunctionCheckCompilerFlags("/wd4180" MITK_CXX_FLAGS) # warning C4180: qualifier applied to function type has no meaning endif() if(NOT MSVC_VERSION) foreach(_flag -Wall -Wextra -Wpointer-arith -Winvalid-pch -Wcast-align -Wwrite-strings -Wno-error=gnu -Wno-error=unknown-pragmas # The strict-overflow warning is generated by ITK template code -Wno-error=strict-overflow -Woverloaded-virtual -Wstrict-null-sentinel #-Wold-style-cast #-Wsign-promo -Wno-array-bounds -fdiagnostics-show-option ) mitkFunctionCheckCAndCXXCompilerFlags(${_flag} MITK_C_FLAGS MITK_CXX_FLAGS) endforeach() endif() if(CMAKE_COMPILER_IS_GNUCXX AND NOT APPLE) mitkFunctionCheckCompilerFlags("-Wl,--no-undefined" MITK_SHARED_LINKER_FLAGS) mitkFunctionCheckCompilerFlags("-Wl,--as-needed" MITK_SHARED_LINKER_FLAGS) endif() if(CMAKE_COMPILER_IS_GNUCXX) mitkFunctionCheckCAndCXXCompilerFlags("-fstack-protector-all" MITK_C_FLAGS MITK_CXX_FLAGS) if(MINGW) # suppress warnings about auto imported symbols set(MITK_SHARED_LINKER_FLAGS "-Wl,--enable-auto-import ${MITK_SHARED_LINKER_FLAGS}") endif() set(MITK_CXX_FLAGS_RELEASE "-U_FORTIFY_SOURCES -D_FORTIFY_SOURCE=2 ${MITK_CXX_FLAGS_RELEASE}") endif() set(MITK_MODULE_LINKER_FLAGS ${MITK_SHARED_LINKER_FLAGS}) set(MITK_EXE_LINKER_FLAGS ${MITK_SHARED_LINKER_FLAGS}) #----------------------------------------------------------------------------- # MITK Packages #----------------------------------------------------------------------------- set(MITK_MODULES_PACKAGE_DEPENDS_DIR ${MITK_SOURCE_DIR}/CMake/PackageDepends) set(MODULES_PACKAGE_DEPENDS_DIRS ${MITK_MODULES_PACKAGE_DEPENDS_DIR}) if(NOT MITK_USE_SYSTEM_Boost) set(Boost_NO_SYSTEM_PATHS 1) endif() set(Boost_USE_MULTITHREADED 1) set(Boost_USE_STATIC_LIBS 0) set(Boost_USE_STATIC_RUNTIME 0) set(Boost_ADDITIONAL_VERSIONS "1.60" "1.60.0") # We need this later for a DCMTK workaround set(_dcmtk_dir_orig ${DCMTK_DIR}) # This property is populated at the top half of this file get_property(MITK_EXTERNAL_PROJECTS GLOBAL PROPERTY MITK_EXTERNAL_PROJECTS) foreach(ep ${MITK_EXTERNAL_PROJECTS}) get_property(_package GLOBAL PROPERTY MITK_${ep}_PACKAGE) get_property(_components GLOBAL PROPERTY MITK_${ep}_COMPONENTS) if(MITK_USE_${ep} AND _package) if(_components) find_package(${_package} COMPONENTS ${_components} REQUIRED CONFIG) else() # Prefer config mode first because it finds external # Config.cmake files pointed at by _DIR variables. # Otherwise, existing Find.cmake files could fail. # (e.g. in the case of GLEW and the FindGLEW.cmake file shipped # with CMake). find_package(${_package} QUIET CONFIG) string(TOUPPER "${_package}" _package_uc) if(NOT (${_package}_FOUND OR ${_package_uc}_FOUND)) find_package(${_package} REQUIRED) endif() endif() endif() endforeach() # Ensure that the MITK CMake module path comes first set(CMAKE_MODULE_PATH ${MITK_CMAKE_DIR} ${CMAKE_MODULE_PATH} ) if(MITK_USE_DCMTK) # Due to the preferred CONFIG mode in find_package calls above, # the DCMTKConfig.cmake file is read, which does not provide useful # package information. We explictly need MODULE mode to find DCMTK. if(${_dcmtk_dir_orig} MATCHES "${MITK_EXTERNAL_PROJECT_PREFIX}.*") # Help our FindDCMTK.cmake script find our super-build DCMTK set(DCMTK_DIR ${MITK_EXTERNAL_PROJECT_PREFIX}) else() # Use the original value set(DCMTK_DIR ${_dcmtk_dir_orig}) endif() find_package(DCMTK REQUIRED MODULE) endif() if(MITK_USE_DCMQI) # Due to the preferred CONFIG mode in find_package calls above, # the DCMQIConfig.cmake file is read, which does not provide useful # package information. We explictly need MODULE mode to find DCMQI. # Help our FindDCMQI.cmake script find our super-build DCMQI set(DCMQI_DIR ${MITK_EXTERNAL_PROJECT_PREFIX}) find_package(DCMQI REQUIRED) endif() if(MITK_USE_Python) find_package(PythonLibs REQUIRED) find_package(PythonInterp REQUIRED) if(MITK_USE_Numpy) find_package(Numpy REQUIRED) endif() endif() if(MITK_USE_SOFA) # The SOFAConfig.cmake file does not provide exported targets or # libraries with absolute paths, hence we need to make the link # directories globally available until the SOFAConfig.cmake file # supports a proper mechanism for handling targets. # The same code is needed in MITKConfig.cmake. link_directories(${SOFA_LIBRARY_DIRS}) endif() # Same as SOFA above link_directories(${Boost_LIBRARY_DIRS}) if(MITK_USE_OpenIGTLink) # Same as SOFA above link_directories(${OpenIGTLink_LIBRARY_DIRS}) endif() if(MITK_USE_SimpleITK) link_directories(${SimpleITK_LIBRARY_DIRS}) endif() if(MITK_USE_OpenCL) find_package(OpenCL REQUIRED) endif() # Qt support if(MITK_USE_Qt5) find_package(Qt5Core ${MITK_QT5_MINIMUM_VERSION} REQUIRED) # at least Core required get_target_property(_qmake_exec Qt5::qmake LOCATION) execute_process(COMMAND ${_qmake_exec} -query QT_INSTALL_BINS RESULT_VARIABLE _result OUTPUT_VARIABLE QT_BINARY_DIR ERROR_VARIABLE _error ) string(STRIP "${QT_BINARY_DIR}" QT_BINARY_DIR) if(_result OR NOT EXISTS "${QT_BINARY_DIR}") message(FATAL_ERROR "Could not determine Qt binary directory: ${_result} ${QT_BINARY_DIR} ${_error}") endif() find_program(QT_HELPGENERATOR_EXECUTABLE NAMES qhelpgenerator qhelpgenerator-qt5 qhelpgenerator5 PATHS ${QT_BINARY_DIR} NO_DEFAULT_PATH ) find_program(QT_COLLECTIONGENERATOR_EXECUTABLE NAMES qcollectiongenerator qcollectiongenerator-qt5 qcollectiongenerator5 PATHS ${QT_BINARY_DIR} NO_DEFAULT_PATH ) find_program(QT_ASSISTANT_EXECUTABLE NAMES assistant assistant-qt5 assistant5 PATHS ${QT_BINARY_DIR} NO_DEFAULT_PATH ) find_program(QT_XMLPATTERNS_EXECUTABLE NAMES xmlpatterns PATHS ${QT_BINARY_DIR} NO_DEFAULT_PATH ) mark_as_advanced(QT_HELPGENERATOR_EXECUTABLE QT_COLLECTIONGENERATOR_EXECUTABLE QT_ASSISTANT_EXECUTABLE QT_XMLPATTERNS_EXECUTABLE ) if(MITK_USE_BLUEBERRY) option(BLUEBERRY_USE_QT_HELP "Enable support for integrating plugin documentation into Qt Help" ${DOXYGEN_FOUND}) mark_as_advanced(BLUEBERRY_USE_QT_HELP) # Sanity checks for in-application BlueBerry plug-in help generation if(BLUEBERRY_USE_QT_HELP) set(_force_blueberry_use_qt_help_to_off 0) if(NOT DOXYGEN_FOUND) message("> Forcing BLUEBERRY_USE_QT_HELP to OFF because Doxygen was not found.") set(_force_blueberry_use_qt_help_to_off 1) endif() if(DOXYGEN_FOUND AND DOXYGEN_VERSION VERSION_LESS 1.8.7) message("> Forcing BLUEBERRY_USE_QT_HELP to OFF because Doxygen version 1.8.7 or newer not found.") set(_force_blueberry_use_qt_help_to_off 1) endif() if(NOT QT_HELPGENERATOR_EXECUTABLE) message("> Forcing BLUEBERRY_USE_QT_HELP to OFF because QT_HELPGENERATOR_EXECUTABLE is empty.") set(_force_blueberry_use_qt_help_to_off 1) endif() if(NOT MITK_USE_Qt5_WebEngine) message("> Forcing BLUEBERRY_USE_QT_HELP to OFF because MITK_USE_Qt5_WebEngine is OFF.") set(_force_blueberry_use_qt_help_to_off 1) endif() if(NOT QT_XMLPATTERNS_EXECUTABLE) message("You have enabled Qt Help support, but QT_XMLPATTERNS_EXECUTABLE is empty") set(_force_blueberry_use_qt_help_to_off 1) endif() if(_force_blueberry_use_qt_help_to_off) set(BLUEBERRY_USE_QT_HELP OFF CACHE BOOL "Enable support for integrating plugin documentation into Qt Help" FORCE) endif() endif() if(BLUEBERRY_QT_HELP_REQUIRED AND NOT BLUEBERRY_USE_QT_HELP) message(FATAL_ERROR "BLUEBERRY_USE_QT_HELP is required to be set to ON") endif() endif() endif() #----------------------------------------------------------------------------- # Testing #----------------------------------------------------------------------------- if(BUILD_TESTING) enable_testing() include(CTest) mark_as_advanced(TCL_TCLSH DART_ROOT) option(MITK_ENABLE_RENDERING_TESTING OFF "Enable the MITK rendering tests. Requires x-server in Linux.") #Rendering testing does not work for Linux nightlies, thus it is disabled per default #and activated for Mac and Windows. if(WIN32 OR APPLE) set(MITK_ENABLE_RENDERING_TESTING ON) endif() mark_as_advanced( MITK_ENABLE_RENDERING_TESTING ) # Setup file for setting custom ctest vars configure_file( CMake/CTestCustom.cmake.in ${MITK_BINARY_DIR}/CTestCustom.cmake @ONLY ) # Initial cache for ProjectTemplate and PluginGenerator tests configure_file( CMake/mitkTestInitialCache.txt.in ${MITK_BINARY_DIR}/mitkTestInitialCache.txt @ONLY ) # Configuration for the CMake-generated test driver set(CMAKE_TESTDRIVER_EXTRA_INCLUDES "#include ") set(CMAKE_TESTDRIVER_BEFORE_TESTMAIN " try {") set(CMAKE_TESTDRIVER_AFTER_TESTMAIN " } catch( std::exception & excp ) { fprintf(stderr,\"%s\\n\",excp.what()); return EXIT_FAILURE; } catch( ... ) { printf(\"Exception caught in the test driver\\n\"); return EXIT_FAILURE; } ") set(MITK_TEST_OUTPUT_DIR "${MITK_BINARY_DIR}/test_output") if(NOT EXISTS ${MITK_TEST_OUTPUT_DIR}) file(MAKE_DIRECTORY ${MITK_TEST_OUTPUT_DIR}) endif() # Test the external project template if(MITK_USE_BLUEBERRY) include(mitkTestProjectTemplate) endif() # Test the package target include(mitkPackageTest) endif() configure_file(mitkTestingConfig.h.in ${MITK_BINARY_DIR}/mitkTestingConfig.h) #----------------------------------------------------------------------------- # MITK_SUPERBUILD_BINARY_DIR #----------------------------------------------------------------------------- # If MITK_SUPERBUILD_BINARY_DIR isn't defined, it means MITK is *NOT* build using Superbuild. # In that specific case, MITK_SUPERBUILD_BINARY_DIR should default to MITK_BINARY_DIR if(NOT DEFINED MITK_SUPERBUILD_BINARY_DIR) set(MITK_SUPERBUILD_BINARY_DIR ${MITK_BINARY_DIR}) endif() #----------------------------------------------------------------------------- # Set C/CXX and linker flags for MITK code #----------------------------------------------------------------------------- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MITK_CXX_FLAGS}") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${MITK_CXX_FLAGS_DEBUG}") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${MITK_CXX_FLAGS_RELEASE}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MITK_C_FLAGS}") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${MITK_C_FLAGS_DEBUG}") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${MITK_C_FLAGS_RELEASE}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MITK_EXE_LINKER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${MITK_SHARED_LINKER_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${MITK_MODULE_LINKER_FLAGS}") #----------------------------------------------------------------------------- # Add custom targets representing CDash subprojects #----------------------------------------------------------------------------- foreach(subproject ${CTEST_PROJECT_SUBPROJECTS}) if(NOT TARGET ${subproject} AND NOT subproject MATCHES "Unlabeled") add_custom_target(${subproject}) endif() endforeach() #----------------------------------------------------------------------------- # Add subdirectories #----------------------------------------------------------------------------- add_subdirectory(Utilities) add_subdirectory(Modules) if(MITK_USE_BLUEBERRY) set(BLUEBERRY_XPDOC_OUTPUT_DIR ${MITK_DOXYGEN_OUTPUT_DIR}/html/extension-points/html/) set(MITK_DEFAULT_SUBPROJECTS MITK-Plugins) # Plug-in testing (needs some work to be enabled again) if(BUILD_TESTING) set(BLUEBERRY_UI_TEST_APP "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/CoreApp") if(TARGET CoreApp) get_target_property(_is_macosx_bundle CoreApp MACOSX_BUNDLE) if(APPLE AND _is_macosx_bundle) set(BLUEBERRY_UI_TEST_APP "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/CoreApp.app/Contents/MacOS/CoreApp") endif() endif() set(BLUEBERRY_TEST_APP_ID "org.mitk.qt.coreapplication") endif() include("${CMAKE_CURRENT_SOURCE_DIR}/Plugins/PluginList.cmake") mitkFunctionWhitelistPlugins(MITK MITK_PLUGINS) set(mitk_plugins_fullpath "") foreach(mitk_plugin ${MITK_PLUGINS}) list(APPEND mitk_plugins_fullpath Plugins/${mitk_plugin}) endforeach() if(EXISTS ${MITK_PRIVATE_MODULES}/PluginList.cmake) include(${MITK_PRIVATE_MODULES}/PluginList.cmake) foreach(mitk_plugin ${MITK_PRIVATE_PLUGINS}) list(APPEND mitk_plugins_fullpath ${MITK_PRIVATE_MODULES}/${mitk_plugin}) endforeach() endif() if(MITK_BUILD_EXAMPLES) include("${CMAKE_CURRENT_SOURCE_DIR}/Examples/Plugins/PluginList.cmake") set(mitk_example_plugins_fullpath ) foreach(mitk_example_plugin ${MITK_EXAMPLE_PLUGINS}) list(APPEND mitk_example_plugins_fullpath Examples/Plugins/${mitk_example_plugin}) list(APPEND mitk_plugins_fullpath Examples/Plugins/${mitk_example_plugin}) endforeach() endif() # Specify which plug-ins belong to this project macro(GetMyTargetLibraries all_target_libraries varname) set(re_ctkplugin_mitk "^org_mitk_[a-zA-Z0-9_]+$") set(re_ctkplugin_bb "^org_blueberry_[a-zA-Z0-9_]+$") set(_tmp_list) list(APPEND _tmp_list ${all_target_libraries}) ctkMacroListFilter(_tmp_list re_ctkplugin_mitk re_ctkplugin_bb OUTPUT_VARIABLE ${varname}) endmacro() # Get infos about application directories and build options include("${CMAKE_CURRENT_SOURCE_DIR}/Applications/AppList.cmake") set(mitk_apps_fullpath ) foreach(mitk_app ${MITK_APPS}) # extract option_name string(REPLACE "^^" "\\;" target_info ${mitk_app}) set(target_info_list ${target_info}) list(GET target_info_list 0 directory_name) list(GET target_info_list 1 option_name) if(${option_name}) list(APPEND mitk_apps_fullpath "${CMAKE_CURRENT_SOURCE_DIR}/Applications/${directory_name}^^${option_name}") endif() endforeach() if (mitk_plugins_fullpath) ctkMacroSetupPlugins(${mitk_plugins_fullpath} BUILD_OPTION_PREFIX MITK_BUILD_ APPS ${mitk_apps_fullpath} BUILD_ALL ${MITK_BUILD_ALL_PLUGINS} COMPACT_OPTIONS) endif() set(MITK_PLUGIN_USE_FILE "${MITK_BINARY_DIR}/MitkPluginUseFile.cmake") if(${PROJECT_NAME}_PLUGIN_LIBRARIES) ctkFunctionGeneratePluginUseFile(${MITK_PLUGIN_USE_FILE}) else() file(REMOVE ${MITK_PLUGIN_USE_FILE}) set(MITK_PLUGIN_USE_FILE ) endif() endif() #----------------------------------------------------------------------------- # Documentation #----------------------------------------------------------------------------- if(DOXYGEN_FOUND) add_subdirectory(Documentation) endif() #----------------------------------------------------------------------------- # Installation #----------------------------------------------------------------------------- # set MITK cpack variables # These are the default variables, which can be overwritten ( see below ) include(mitkSetupCPack) set(use_default_config ON) # MITK_APPS is set in Applications/AppList.cmake (included somewhere above # if MITK_USE_BLUEBERRY is set to ON). if(MITK_APPS) set(activated_apps_no 0) list(LENGTH MITK_APPS app_count) # Check how many apps have been enabled # If more than one app has been activated, the we use the # default CPack configuration. Otherwise that apps configuration # will be used, if present. foreach(mitk_app ${MITK_APPS}) # extract option_name string(REPLACE "^^" "\\;" target_info ${mitk_app}) set(target_info_list ${target_info}) list(GET target_info_list 1 option_name) # check if the application is enabled if(${option_name} OR MITK_BUILD_ALL_APPS) MATH(EXPR activated_apps_no "${activated_apps_no} + 1") endif() endforeach() if(app_count EQUAL 1 AND (activated_apps_no EQUAL 1 OR MITK_BUILD_ALL_APPS)) # Corner case if there is only one app in total set(use_project_cpack ON) elseif(activated_apps_no EQUAL 1 AND NOT MITK_BUILD_ALL_APPS) # Only one app is enabled (no "build all" flag set) set(use_project_cpack ON) else() # Less or more then one app is enabled set(use_project_cpack OFF) endif() foreach(mitk_app ${MITK_APPS}) # extract target_dir and option_name string(REPLACE "^^" "\\;" target_info ${mitk_app}) set(target_info_list ${target_info}) list(GET target_info_list 0 target_dir) list(GET target_info_list 1 option_name) list(GET target_info_list 2 executable_name) # check if the application is enabled if(${option_name} OR MITK_BUILD_ALL_APPS) # check whether application specific configuration files will be used if(use_project_cpack) # use files if they exist if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Applications/${target_dir}/CPackOptions.cmake") include("${CMAKE_CURRENT_SOURCE_DIR}/Applications/${target_dir}/CPackOptions.cmake") endif() if(EXISTS "${PROJECT_SOURCE_DIR}/Applications/${target_dir}/CPackConfig.cmake.in") set(CPACK_PROJECT_CONFIG_FILE "${PROJECT_BINARY_DIR}/Applications/${target_dir}/CPackConfig.cmake") configure_file(${PROJECT_SOURCE_DIR}/Applications/${target_dir}/CPackConfig.cmake.in ${CPACK_PROJECT_CONFIG_FILE} @ONLY) set(use_default_config OFF) endif() endif() # add link to the list list(APPEND CPACK_CREATE_DESKTOP_LINKS "${executable_name}") endif() endforeach() endif() # if no application specific configuration file was used, use default if(use_default_config) configure_file(${MITK_SOURCE_DIR}/MITKCPackOptions.cmake.in ${MITK_BINARY_DIR}/MITKCPackOptions.cmake @ONLY) set(CPACK_PROJECT_CONFIG_FILE "${MITK_BINARY_DIR}/MITKCPackOptions.cmake") endif() # include CPack model once all variables are set include(CPack) # Additional installation rules include(mitkInstallRules) #----------------------------------------------------------------------------- # Last configuration steps #----------------------------------------------------------------------------- # ---------------- Export targets ----------------- set(MITK_EXPORTS_FILE "${MITK_BINARY_DIR}/MitkExports.cmake") file(REMOVE ${MITK_EXPORTS_FILE}) set(targets_to_export) get_property(module_targets GLOBAL PROPERTY MITK_MODULE_TARGETS) if(module_targets) list(APPEND targets_to_export ${module_targets}) endif() if(MITK_USE_BLUEBERRY) if(MITK_PLUGIN_LIBRARIES) list(APPEND targets_to_export ${MITK_PLUGIN_LIBRARIES}) endif() endif() export(TARGETS ${targets_to_export} APPEND FILE ${MITK_EXPORTS_FILE}) set(MITK_EXPORTED_TARGET_PROPERTIES ) foreach(target_to_export ${targets_to_export}) get_target_property(autoload_targets ${target_to_export} MITK_AUTOLOAD_TARGETS) if(autoload_targets) set(MITK_EXPORTED_TARGET_PROPERTIES "${MITK_EXPORTED_TARGET_PROPERTIES} set_target_properties(${target_to_export} PROPERTIES MITK_AUTOLOAD_TARGETS \"${autoload_targets}\")") endif() get_target_property(autoload_dir ${target_to_export} MITK_AUTOLOAD_DIRECTORY) if(autoload_dir) set(MITK_EXPORTED_TARGET_PROPERTIES "${MITK_EXPORTED_TARGET_PROPERTIES} set_target_properties(${target_to_export} PROPERTIES MITK_AUTOLOAD_DIRECTORY \"${autoload_dir}\")") endif() get_target_property(deprecated_module ${target_to_export} MITK_MODULE_DEPRECATED_SINCE) if(deprecated_module) set(MITK_EXPORTED_TARGET_PROPERTIES "${MITK_EXPORTED_TARGET_PROPERTIES} set_target_properties(${target_to_export} PROPERTIES MITK_MODULE_DEPRECATED_SINCE \"${deprecated_module}\")") endif() endforeach() # ---------------- External projects ----------------- get_property(MITK_ADDITIONAL_LIBRARY_SEARCH_PATHS_CONFIG GLOBAL PROPERTY MITK_ADDITIONAL_LIBRARY_SEARCH_PATHS) set(MITK_CONFIG_EXTERNAL_PROJECTS ) #string(REPLACE "^^" ";" _mitk_external_projects ${MITK_EXTERNAL_PROJECTS}) foreach(ep ${MITK_EXTERNAL_PROJECTS}) get_property(_components GLOBAL PROPERTY MITK_${ep}_COMPONENTS) set(MITK_CONFIG_EXTERNAL_PROJECTS "${MITK_CONFIG_EXTERNAL_PROJECTS} set(MITK_USE_${ep} ${MITK_USE_${ep}}) set(MITK_${ep}_DIR \"${${ep}_DIR}\") set(MITK_${ep}_COMPONENTS ${_components}) ") endforeach() foreach(ep ${MITK_EXTERNAL_PROJECTS}) get_property(_package GLOBAL PROPERTY MITK_${ep}_PACKAGE) get_property(_components GLOBAL PROPERTY MITK_${ep}_COMPONENTS) if(_components) set(_components_arg COMPONENTS \${_components}) else() set(_components_arg) endif() if(_package) set(MITK_CONFIG_EXTERNAL_PROJECTS "${MITK_CONFIG_EXTERNAL_PROJECTS} if(MITK_USE_${ep}) set(${ep}_DIR \${MITK_${ep}_DIR}) if(MITK_${ep}_COMPONENTS) mitkMacroFindDependency(${_package} COMPONENTS \${MITK_${ep}_COMPONENTS}) else() mitkMacroFindDependency(${_package}) endif() endif()") endif() endforeach() # ---------------- Tools ----------------- configure_file(${MITK_SOURCE_DIR}/CMake/ToolExtensionITKFactory.cpp.in ${MITK_BINARY_DIR}/ToolExtensionITKFactory.cpp.in COPYONLY) configure_file(${MITK_SOURCE_DIR}/CMake/ToolExtensionITKFactoryLoader.cpp.in ${MITK_BINARY_DIR}/ToolExtensionITKFactoryLoader.cpp.in COPYONLY) configure_file(${MITK_SOURCE_DIR}/CMake/ToolGUIExtensionITKFactory.cpp.in ${MITK_BINARY_DIR}/ToolGUIExtensionITKFactory.cpp.in COPYONLY) # ---------------- Configure files ----------------- configure_file(mitkVersion.h.in ${MITK_BINARY_DIR}/mitkVersion.h) configure_file(mitkConfig.h.in ${MITK_BINARY_DIR}/mitkConfig.h) set(IPFUNC_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ipFunc) set(UTILITIES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities) configure_file(mitkConfig.h.in ${MITK_BINARY_DIR}/mitkConfig.h) configure_file(MITKConfig.cmake.in ${MITK_BINARY_DIR}/MITKConfig.cmake @ONLY) write_basic_config_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake VERSION ${MITK_VERSION_STRING} COMPATIBILITY AnyNewerVersion) #----------------------------------------------------------------------------- # MITK Applications #----------------------------------------------------------------------------- # This must come after MITKConfig.h was generated, since applications # might do a find_package(MITK REQUIRED). add_subdirectory(Applications) #----------------------------------------------------------------------------- # MITK Examples #----------------------------------------------------------------------------- if(MITK_BUILD_EXAMPLES) # This must come after MITKConfig.h was generated, since applications # might do a find_package(MITK REQUIRED). add_subdirectory(Examples) endif() #----------------------------------------------------------------------------- # Print configuration summary #----------------------------------------------------------------------------- message("\n\n") feature_summary( DESCRIPTION "------- FEATURE SUMMARY FOR ${PROJECT_NAME} -------" WHAT ALL ) diff --git a/Modules/DeformableRegistration/CMakeLists.txt b/Modules/DeformableRegistration/CMakeLists.txt deleted file mode 100644 index 0c6bd23af8..0000000000 --- a/Modules/DeformableRegistration/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -MITK_CREATE_MODULE( - SUBPROJECTS MITK-Registration - DEPENDS MitkRigidRegistration - PACKAGE_DEPENDS PUBLIC ITK|ITKPDEDeformableRegistration -) - -add_subdirectory(Testing) diff --git a/Modules/DeformableRegistration/Testing/CMakeLists.txt b/Modules/DeformableRegistration/Testing/CMakeLists.txt deleted file mode 100644 index 153cd81e2e..0000000000 --- a/Modules/DeformableRegistration/Testing/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -MITK_CREATE_MODULE_TESTS() diff --git a/Modules/DeformableRegistration/Testing/files.cmake b/Modules/DeformableRegistration/Testing/files.cmake deleted file mode 100644 index 8dab4479ca..0000000000 --- a/Modules/DeformableRegistration/Testing/files.cmake +++ /dev/null @@ -1,5 +0,0 @@ -set(MODULE_TESTS - mitkDemonsRegistrationTest.cpp - mitkHistogramMatchingTest.cpp - mitkSymmetricForcesDemonsRegistrationTest.cpp -) \ No newline at end of file diff --git a/Modules/DeformableRegistration/Testing/mitkDemonsRegistrationTest.cpp b/Modules/DeformableRegistration/Testing/mitkDemonsRegistrationTest.cpp deleted file mode 100644 index 0626bbc855..0000000000 --- a/Modules/DeformableRegistration/Testing/mitkDemonsRegistrationTest.cpp +++ /dev/null @@ -1,128 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkDemonsRegistration.h" -#include "mitkImage.h" -#include "mitkImageWriteAccessor.h" - -int mitkDemonsRegistrationTest(int /*argc*/, char * /*argv*/ []) -{ - // Create Image out of nowhere - mitk::Image::Pointer image; - mitk::PixelType pt(mitk::MakeScalarPixelType()); - unsigned int dim[] = {100, 100, 20}; - - std::cout << "Creating image: "; - image = mitk::Image::New(); - // image->DebugOn(); - image->Initialize(mitk::MakeScalarPixelType(), 3, dim); - - try - { - mitk::ImageWriteAccessor imgB(image); - int *p = (int *)imgB.GetData(); - - int size = dim[0] * dim[1] * dim[2]; - int i; - for (i = 0; i < size; ++i, ++p) - *p = i; - std::cout << "[PASSED]" << std::endl; - } - catch (mitk::Exception &e) - { - // we don't have image access, set test to failed - std::cout << "[FAILED] creation of the image" << std::endl; - return EXIT_FAILURE; - } - - // Create second Image out of nowhere - mitk::Image::Pointer image2; - mitk::PixelType pt2(mitk::MakeScalarPixelType()); - unsigned int dim2[] = {100, 100, 20}; - - std::cout << "Creating image: "; - image2 = mitk::Image::New(); - // image->DebugOn(); - image2->Initialize(mitk::MakeScalarPixelType(), 3, dim2); - - try - { - mitk::ImageWriteAccessor imgB(image2); - int *p2 = (int *)imgB.GetData(); - - int size2 = dim2[0] * dim2[1] * dim2[2]; - int i2; - for (i2 = 0; i2 < size2; ++i2, ++p2) - *p2 = i2; - std::cout << "[PASSED]" << std::endl; - } - catch (mitk::Exception &e) - { - // we don't have image access, set test to failed - std::cout << "[FAILED] creation of the image2" << std::endl; - return EXIT_FAILURE; - } - - std::cout << "Constructor: "; - mitk::DemonsRegistration::Pointer demonsRegistration = mitk::DemonsRegistration::New(); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set Reference Image: "; - demonsRegistration->SetReferenceImage(image); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set Moving Image: "; - demonsRegistration->SetInput(image2); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set number of iterations: "; - demonsRegistration->SetNumberOfIterations(5); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set standard deviation: "; - demonsRegistration->SetStandardDeviation(1.0); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set save deformation field: "; - demonsRegistration->SetSaveDeformationField(false); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set deformation field file name: "; - demonsRegistration->SetDeformationFieldFileName("TestField.mhd"); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set save result image: "; - demonsRegistration->SetSaveResult(false); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set result image file name: "; - demonsRegistration->SetResultFileName("TestResult.mhd"); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Perform registration: "; - demonsRegistration->Update(); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Get the result image: "; - mitk::Image::Pointer resultImage = demonsRegistration->GetOutput(); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Get the deformation field: "; - itk::Image, 3>::Pointer deformationField = demonsRegistration->GetDeformationField(); - std::cout << "[PASSED]" << std::endl; - - return EXIT_SUCCESS; -} diff --git a/Modules/DeformableRegistration/Testing/mitkHistogramMatchingTest.cpp b/Modules/DeformableRegistration/Testing/mitkHistogramMatchingTest.cpp deleted file mode 100644 index 05234de8e3..0000000000 --- a/Modules/DeformableRegistration/Testing/mitkHistogramMatchingTest.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkHistogramMatching.h" -#include "mitkImage.h" -#include "mitkImageWriteAccessor.h" - -int mitkHistogramMatchingTest(int /*argc*/, char * /*argv*/ []) -{ - // Create Image out of nowhere - mitk::Image::Pointer image; - mitk::PixelType pt(mitk::MakeScalarPixelType()); - unsigned int dim[] = {100, 100, 20}; - - std::cout << "Creating image: "; - image = mitk::Image::New(); - // image->DebugOn(); - image->Initialize(mitk::MakeScalarPixelType(), 3, dim); - - try - { - mitk::ImageWriteAccessor imgB(image); - int *p = (int *)imgB.GetData(); - - int size = dim[0] * dim[1] * dim[2]; - int i; - for (i = 0; i < size; ++i, ++p) - *p = i; - std::cout << "[PASSED]" << std::endl; - } - catch (const mitk::Exception &) - { - // we don't have image access, set test to failed - std::cout << "[FAILED] creation of the image" << std::endl; - return EXIT_FAILURE; - } - - // Create second Image out of nowhere - mitk::Image::Pointer image2; - mitk::PixelType pt2(mitk::MakeScalarPixelType()); - unsigned int dim2[] = {100, 100, 20}; - - std::cout << "Creating image: "; - image2 = mitk::Image::New(); - // image->DebugOn(); - image2->Initialize(mitk::MakeScalarPixelType(), 3, dim2); - - try - { - mitk::ImageWriteAccessor imgB(image2); - int *p2 = (int *)imgB.GetData(); - - int size2 = dim2[0] * dim2[1] * dim2[2]; - int i2; - for (i2 = 0; i2 < size2; ++i2, ++p2) - *p2 = i2; - std::cout << "[PASSED]" << std::endl; - } - catch (const mitk::Exception &) - { - // we don't have image access, set test to failed - std::cout << "[FAILED] creation of the image" << std::endl; - return EXIT_FAILURE; - } - - std::cout << "Constructor: "; - mitk::HistogramMatching::Pointer histogramMatching = mitk::HistogramMatching::New(); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set Reference Image: "; - histogramMatching->SetReferenceImage(image); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set Moving Image: "; - histogramMatching->SetInput(image2); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set number of match points: "; - histogramMatching->SetNumberOfMatchPoints(100); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set number of histogram levels: "; - histogramMatching->SetNumberOfHistogramLevels(8); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set threshold at mean intensity: "; - histogramMatching->SetThresholdAtMeanIntensity(true); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Perform histogram matching: "; - histogramMatching->Update(); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Get the result image: "; - mitk::Image::Pointer histimage = histogramMatching->GetOutput(); - std::cout << "[PASSED]" << std::endl; - - return EXIT_SUCCESS; -} diff --git a/Modules/DeformableRegistration/Testing/mitkSymmetricForcesDemonsRegistrationTest.cpp b/Modules/DeformableRegistration/Testing/mitkSymmetricForcesDemonsRegistrationTest.cpp deleted file mode 100644 index 6104ec2e05..0000000000 --- a/Modules/DeformableRegistration/Testing/mitkSymmetricForcesDemonsRegistrationTest.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkImage.h" -#include "mitkImageWriteAccessor.h" -#include "mitkSymmetricForcesDemonsRegistration.h" - -int mitkSymmetricForcesDemonsRegistrationTest(int /*argc*/, char * /*argv*/ []) -{ - // Create Image out of nowhere - mitk::Image::Pointer image; - mitk::PixelType pt(mitk::MakeScalarPixelType()); - unsigned int dim[] = {100, 100, 20}; - - std::cout << "Creating image: "; - image = mitk::Image::New(); - // image->DebugOn(); - image->Initialize(mitk::MakeScalarPixelType(), 3, dim); - - try - { - mitk::ImageWriteAccessor imgB(image); - int *p = (int *)imgB.GetData(); - int size = dim[0] * dim[1] * dim[2]; - int i; - for (i = 0; i < size; ++i, ++p) - *p = i; - std::cout << "[PASSED]" << std::endl; - } - catch (mitk::Exception &e) - { - // we don't have image access, set test to failed - std::cout << "[FAILED] creation of the image" << std::endl; - return EXIT_FAILURE; - } - - // Create second Image out of nowhere - mitk::Image::Pointer image2; - mitk::PixelType pt2(mitk::MakeScalarPixelType()); - unsigned int dim2[] = {100, 100, 20}; - - std::cout << "Creating image: "; - image2 = mitk::Image::New(); - // image->DebugOn(); - image2->Initialize(mitk::MakeScalarPixelType(), 3, dim2); - - try - { - mitk::ImageWriteAccessor imgB(image2); - int *p2 = (int *)imgB.GetData(); - int size2 = dim2[0] * dim2[1] * dim2[2]; - int i2; - for (i2 = 0; i2 < size2; ++i2, ++p2) - *p2 = i2; - - std::cout << "[PASSED]" << std::endl; - } - catch (mitk::Exception &e) - { - // we don't have image access, set test to failed - std::cout << "[FAILED] creation of the image2" << std::endl; - return EXIT_FAILURE; - } - - std::cout << "Constructor: "; - mitk::SymmetricForcesDemonsRegistration::Pointer symmetricForcesDemonsRegistration = - mitk::SymmetricForcesDemonsRegistration::New(); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set Reference Image: "; - symmetricForcesDemonsRegistration->SetReferenceImage(image); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set Moving Image: "; - symmetricForcesDemonsRegistration->SetInput(image2); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set number of iterations: "; - symmetricForcesDemonsRegistration->SetNumberOfIterations(5); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set standard deviation: "; - symmetricForcesDemonsRegistration->SetStandardDeviation(1.0); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set save deformation field: "; - symmetricForcesDemonsRegistration->SetSaveDeformationField(false); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set deformation field file name: "; - symmetricForcesDemonsRegistration->SetDeformationFieldFileName("TestField.mhd"); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set save result image: "; - symmetricForcesDemonsRegistration->SetSaveResult(false); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Set result image file name: "; - symmetricForcesDemonsRegistration->SetResultFileName("TestResult.mhd"); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Perform registration: "; - symmetricForcesDemonsRegistration->Update(); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Get the result image: "; - mitk::Image::Pointer resultImage = symmetricForcesDemonsRegistration->GetOutput(); - std::cout << "[PASSED]" << std::endl; - - std::cout << "Get the deformation field: "; - itk::Image, 3>::Pointer deformationField = - symmetricForcesDemonsRegistration->GetDeformationField(); - std::cout << "[PASSED]" << std::endl; - - return EXIT_SUCCESS; -} diff --git a/Modules/DeformableRegistration/files.cmake b/Modules/DeformableRegistration/files.cmake deleted file mode 100644 index b466cea186..0000000000 --- a/Modules/DeformableRegistration/files.cmake +++ /dev/null @@ -1,7 +0,0 @@ -set(CPP_FILES - mitkBSplineRegistration.cpp - mitkDemonsRegistration.cpp - mitkSymmetricForcesDemonsRegistration.cpp - mitkRegistrationBase.cpp - mitkHistogramMatching.cpp -) \ No newline at end of file diff --git a/Modules/DeformableRegistration/itkBSplineDeformableTransformInitializer.h b/Modules/DeformableRegistration/itkBSplineDeformableTransformInitializer.h deleted file mode 100644 index 7990b02e76..0000000000 --- a/Modules/DeformableRegistration/itkBSplineDeformableTransformInitializer.h +++ /dev/null @@ -1,122 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef __itkBSplineDeformableTransformInitializer_h -#define __itkBSplineDeformableTransformInitializer_h - -#include "itkObject.h" -#include "itkObjectFactory.h" - -#include - -namespace itk -{ - /** \class BSplineDeformableTransformInitializer - * \brief BSplineDeformableTransformInitializer is a helper class intended to - * initialize the grid parameters of a BSplineDeformableTransform based on the - * parameters of an image. - * - * In the context of image registration, the image to be used are reference will - * be the fixed image. The BSpline grid will use the fixed image as a base for - * computing the grid spacing, orientation and origin, among other things. - * - * - * \ingroup Transforms - */ - template - class ITK_EXPORT BSplineDeformableTransformInitializer : public Object - { - public: - /** Standard class typedefs. */ - typedef BSplineDeformableTransformInitializer Self; - typedef Object Superclass; - typedef SmartPointer Pointer; - typedef SmartPointer ConstPointer; - - /** New macro for creation of through a Smart Pointer. */ - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - /** Run-time type information (and related methods). */ - itkTypeMacro(BSplineDeformableTransformInitializer, Object); - - /** Type of the transform to initialize */ - typedef TTransform TransformType; - - /** Types defined from transform traits */ - typedef typename TransformType::Pointer TransformPointer; - typedef typename TransformType::RegionType TransformRegionType; - typedef typename TransformRegionType::SizeType TransformSizeType; - - /** Dimension of parameters. */ - itkStaticConstMacro(SpaceDimension, unsigned int, TransformType::InputSpaceDimension); - - /** Image Types to use in the initialization of the transform */ - typedef TImage ImageType; - typedef typename ImageType::ConstPointer ImagePointer; - - /** Set the transform to be initialized */ - itkSetObjectMacro(Transform, TransformType); - - /** Set the fixed image used in the registration process */ - itkSetConstObjectMacro(Image, ImageType); - - /** Set the number of grid nodes that we want to place inside the image. This - * method will override the settings of any previous call to - * SetNumberOfGridNodesInsideTheImage().*/ - itkSetMacro(GridSizeInsideTheImage, TransformSizeType); - - /** Set the number of grid nodes that we want to place inside the image. This - * number of node is used along one dimension of the image. Therefore, if - * you pass the number 5 as argument of this method, in a 3D space, then the - * total number of grid nodes inside the image will be \$ 5 x 5 x 5 \$ . - * This method will override the settings of any previous call to - * SetGridSizeInsideTheImage().*/ - void SetNumberOfGridNodesInsideTheImage(unsigned int numberOfNodes) - { - this->m_GridSizeInsideTheImage.Fill(numberOfNodes); - this->Modified(); - } - - /** Initialize the transform using data from the images */ - virtual void InitializeTransform() const; - - protected: - BSplineDeformableTransformInitializer(); - ~BSplineDeformableTransformInitializer(){}; - - void PrintSelf(std::ostream &os, Indent indent) const override; - - private: - BSplineDeformableTransformInitializer(const Self &); // purposely not implemented - void operator=(const Self &); // purposely not implemented - - TransformPointer m_Transform; - - ImagePointer m_Image; - - TransformSizeType m_GridSizeInsideTheImage; - - unsigned int m_NumberOfGridNodesInsideTheImage; - - }; // class BSplineDeformableTransformInitializer - -} // namespace itk - -#ifndef ITK_MANUAL_INSTANTIATION -#include "itkBSplineDeformableTransformInitializer.txx" -#endif - -#endif /* __itkBSplineDeformableTransformInitializer_h */ diff --git a/Modules/DeformableRegistration/itkBSplineDeformableTransformInitializer.txx b/Modules/DeformableRegistration/itkBSplineDeformableTransformInitializer.txx deleted file mode 100644 index 060b9b06e7..0000000000 --- a/Modules/DeformableRegistration/itkBSplineDeformableTransformInitializer.txx +++ /dev/null @@ -1,146 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -/*=================================================================== - -This file is based heavily on a corresponding ITK filter. - -===================================================================*/ - -#ifndef __itkBSplineDeformableTransformInitializer_txx -#define __itkBSplineDeformableTransformInitializer_txx - -#include "itkBSplineDeformableTransformInitializer.h" - -namespace itk -{ - template - BSplineDeformableTransformInitializer::BSplineDeformableTransformInitializer() - { - this->m_GridSizeInsideTheImage.Fill(5); - } - - template - void BSplineDeformableTransformInitializer::InitializeTransform() const - { - // Sanity check - if (!this->m_Image) - { - itkExceptionMacro("Reference Image has not been set"); - return; - } - - if (!this->m_Transform) - { - itkExceptionMacro("Transform has not been set"); - return; - } - - // If the image come from a filter, then update that filter. - if (this->m_Image->GetSource()) - { - this->m_Image->GetSource()->Update(); - } - - typedef typename TransformType::RegionType RegionType; - - typename RegionType::SizeType numberOfGridNodesOutsideTheImageSupport; - typename RegionType::SizeType totalGridSize; - - numberOfGridNodesOutsideTheImageSupport.Fill(TransformType::SplineOrder); - - totalGridSize = this->m_GridSizeInsideTheImage; - totalGridSize += numberOfGridNodesOutsideTheImageSupport; - - RegionType gridRegion; - gridRegion.SetSize(totalGridSize); - - typedef typename TransformType::SpacingType SpacingType; - const SpacingType &imageSpacing = this->m_Image->GetSpacing(); - - typedef typename TransformType::OriginType OriginType; - const OriginType &imageOrigin = this->m_Image->GetOrigin(); - ; - - const typename TransformType::RegionType &imageRegion = this->m_Image->GetLargestPossibleRegion(); - - typename ImageType::SizeType fixedImageSize = imageRegion.GetSize(); - - SpacingType gridSpacing; - SpacingType gridOriginShift; - - const unsigned int orderShift = TransformType::SplineOrder / 2; - - for (unsigned int r = 0; r < SpaceDimension; r++) - { - const unsigned int numberOfGridCells = this->m_GridSizeInsideTheImage[r] - 1; - const unsigned int numberOfImagePixels = fixedImageSize[r]; - - gridSpacing[r] = - imageSpacing[r] * static_cast(numberOfImagePixels) / static_cast(numberOfGridCells); - - // Shift half image pixel to cover the image support - const double imageSupportShift = -imageSpacing[r] / 2.0; - - // Shift by the number of extra grid cells required by - // the BSpline order. - const double gridSupportShift = -1.0 * gridSpacing[r] * orderShift; - - // Combine both shifts. They are both aligned with the coordinate - // system of the grid. Direction has not been considered so far. - gridOriginShift[r] = gridSupportShift + imageSupportShift; - } - - typename ImageType::DirectionType gridDirection = this->m_Image->GetDirection(); - SpacingType gridOriginOffset = gridDirection * gridOriginShift; - - OriginType gridOrigin = imageOrigin + gridOriginOffset; - - this->m_Transform->SetGridRegion(gridRegion); - this->m_Transform->SetGridOrigin(gridOrigin); - this->m_Transform->SetGridSpacing(gridSpacing); - this->m_Transform->SetGridDirection(gridDirection); - } - - template - void BSplineDeformableTransformInitializer::PrintSelf(std::ostream &os, Indent indent) const - { - Superclass::PrintSelf(os, indent); - - os << indent << "Transform = " << std::endl; - if (this->m_Transform) - { - os << indent << this->m_Transform << std::endl; - } - else - { - os << indent << "None" << std::endl; - } - - os << indent << "Image = " << std::endl; - if (this->m_Image) - { - os << indent << this->m_Image << std::endl; - } - else - { - os << indent << "None" << std::endl; - } - } - -} // namespace itk - -#endif diff --git a/Modules/DeformableRegistration/mitkBSplineRegistration.cpp b/Modules/DeformableRegistration/mitkBSplineRegistration.cpp deleted file mode 100644 index d4c876624b..0000000000 --- a/Modules/DeformableRegistration/mitkBSplineRegistration.cpp +++ /dev/null @@ -1,307 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include - -#include "itkImageFileWriter.h" -#include "itkImageRegionIterator.h" -#include "itkWarpImageFilter.h" - -#include "itkBSplineDeformableTransform.h" -#include "mitkBSplineRegistration.h" -//#include "itkLBFGSOptimizer.h" -#include "itkImageRegistrationMethod.h" -#include "itkMattesMutualInformationImageToImageMetric.h" -#include "itkMeanSquaresImageToImageMetric.h" -#include "itkResampleImageFilter.h" - -#include "itkBSplineDeformableTransformInitializer.h" - -#include "mitkMetricFactory.h" -#include "mitkOptimizerFactory.h" - -#include -#include - -namespace mitk -{ - BSplineRegistration::BSplineRegistration() - : m_Iterations(50), - m_ResultName("deformedImage.mhd"), - m_SaveResult(true), - m_SaveDeformationField(false), - m_UpdateInputImage(false), - m_MatchHistograms(true), - m_Metric(0) - { - m_Observer = mitk::RigidRegistrationObserver::New(); - } - - BSplineRegistration::~BSplineRegistration() {} - void BSplineRegistration::SetNumberOfIterations(int iterations) { m_Iterations = iterations; } - void BSplineRegistration::SetSaveResult(bool saveResult) { m_SaveResult = saveResult; } - void BSplineRegistration::SetResultFileName(const char *resultName) { m_ResultName = resultName; } - template - void BSplineRegistration::GenerateData2(const itk::Image *itkImage1) - { - std::cout << "start bspline registration" << std::endl; - - // Typedefs - typedef typename itk::Image InternalImageType; - - typedef typename itk::Vector VectorPixelType; - typedef typename itk::Image DeformationFieldType; - - typedef itk::BSplineDeformableTransform TransformType; - - typedef typename TransformType::ParametersType ParametersType; - - // typedef itk::LBFGSOptimizer OptimizerType; - typedef itk::SingleValuedNonLinearOptimizer OptimizerType; - // typedef itk::SingleValuedCostFunction MetricType; - - typedef itk::MattesMutualInformationImageToImageMetric MetricType; - - typedef itk::MeanSquaresImageToImageMetric MetricTypeMS; - - typedef itk::LinearInterpolateImageFunction InterpolatorType; - - typedef itk::ImageRegistrationMethod RegistrationType; - - typedef typename itk::WarpImageFilter WarperType; - - typedef typename TransformType::SpacingType SpacingType; - - typedef typename TransformType::OriginType OriginType; - - typedef itk::ResampleImageFilter ResampleFilterType; - - typedef itk::Image OutputImageType; - - // Sample new image with the same image type as the fixed image - typedef itk::CastImageFilter CastFilterType; - - typedef itk::Vector VectorType; - typedef itk::Image DeformationFieldType; - - typedef itk::BSplineDeformableTransformInitializer InitializerType; - - typename InterpolatorType::Pointer interpolator = InterpolatorType::New(); - typename RegistrationType::Pointer registration = RegistrationType::New(); - typename InitializerType::Pointer initializer = InitializerType::New(); - typename TransformType::Pointer transform = TransformType::New(); - - if (m_Metric == 0 || m_Metric == 1) - { - typename MetricType::Pointer metric = MetricType::New(); - metric->SetNumberOfHistogramBins(32); - metric->SetNumberOfSpatialSamples(90000); - registration->SetMetric(metric); - } - else - { - typename MetricTypeMS::Pointer metric = MetricTypeMS::New(); - registration->SetMetric(metric); - } - - typename OptimizerFactory::Pointer optFac = OptimizerFactory::New(); - optFac->SetOptimizerParameters(m_OptimizerParameters); - optFac->SetNumberOfTransformParameters(transform->GetNumberOfParameters()); - OptimizerType::Pointer optimizer = optFac->GetOptimizer(); - - optimizer->AddObserver(itk::AnyEvent(), m_Observer); - - // typedef mitk::MetricFactory MetricFactoryType; - // typename MetricFactoryType::Pointer metricFac = MetricFactoryType::New(); - // metricFac->SetMetricParameters(m_MetricParameters); - ////MetricType::Pointer metric = metricFac->GetMetric(); - - typename InternalImageType::Pointer fixedImage = InternalImageType::New(); - mitk::CastToItkImage(m_ReferenceImage, fixedImage); - typename InternalImageType::ConstPointer movingImage = itkImage1; - typename InternalImageType::RegionType fixedRegion = fixedImage->GetBufferedRegion(); - typename InternalImageType::RegionType movingRegion = movingImage->GetBufferedRegion(); - - if (m_MatchHistograms) - { - typedef itk::RescaleIntensityImageFilter FilterType; - typedef itk::HistogramMatchingImageFilter HEFilterType; - - typename FilterType::Pointer inputRescaleFilter = FilterType::New(); - typename FilterType::Pointer referenceRescaleFilter = FilterType::New(); - - referenceRescaleFilter->SetInput(fixedImage); - inputRescaleFilter->SetInput(movingImage); - - TPixel desiredMinimum = 0; - TPixel desiredMaximum = 255; - - referenceRescaleFilter->SetOutputMinimum(desiredMinimum); - referenceRescaleFilter->SetOutputMaximum(desiredMaximum); - referenceRescaleFilter->UpdateLargestPossibleRegion(); - inputRescaleFilter->SetOutputMinimum(desiredMinimum); - inputRescaleFilter->SetOutputMaximum(desiredMaximum); - inputRescaleFilter->UpdateLargestPossibleRegion(); - - // Histogram match the images - typename HEFilterType::Pointer intensityEqualizeFilter = HEFilterType::New(); - - intensityEqualizeFilter->SetReferenceImage(inputRescaleFilter->GetOutput()); - intensityEqualizeFilter->SetInput(referenceRescaleFilter->GetOutput()); - intensityEqualizeFilter->SetNumberOfHistogramLevels(64); - intensityEqualizeFilter->SetNumberOfMatchPoints(12); - intensityEqualizeFilter->ThresholdAtMeanIntensityOn(); - intensityEqualizeFilter->Update(); - - // fixedImage = referenceRescaleFilter->GetOutput(); - // movingImage = IntensityEqualizeFilter->GetOutput(); - - fixedImage = intensityEqualizeFilter->GetOutput(); - movingImage = inputRescaleFilter->GetOutput(); - } - - // - registration->SetOptimizer(optimizer); - registration->SetInterpolator(interpolator); - registration->SetFixedImage(fixedImage); - registration->SetMovingImage(movingImage); - registration->SetFixedImageRegion(fixedRegion); - - initializer->SetTransform(transform); - initializer->SetImage(fixedImage); - initializer->SetNumberOfGridNodesInsideTheImage(m_NumberOfGridPoints); - initializer->InitializeTransform(); - - registration->SetTransform(transform); - - const unsigned int numberOfParameters = transform->GetNumberOfParameters(); - - typename itk::BSplineDeformableTransform::ParametersType parameters; - - parameters.set_size(numberOfParameters); - parameters.Fill(0.0); - transform->SetParameters(parameters); - - // We now pass the parameters of the current transform as the initial - // parameters to be used when the registration process starts. - registration->SetInitialTransformParameters(transform->GetParameters()); - - std::cout << "Intial Parameters = " << std::endl; - std::cout << transform->GetParameters() << std::endl; - - std::cout << std::endl << "Starting Registration" << std::endl; - - try - { - double tstart(clock()); - registration->Update(); - double time = clock() - tstart; - time = time / CLOCKS_PER_SEC; - MITK_INFO << "Registration time: " << time; - } - catch (itk::ExceptionObject &err) - { - std::cerr << "ExceptionObject caught !" << std::endl; - std::cerr << err << std::endl; - } - - typename OptimizerType::ParametersType finalParameters = registration->GetLastTransformParameters(); - - std::cout << "Last Transform Parameters" << std::endl; - std::cout << finalParameters << std::endl; - - transform->SetParameters(finalParameters); - - /* - ResampleFilterType::Pointer resampler = ResampleFilterType::New(); - resampler->SetTransform( transform ); - resampler->SetInput( movingImage ); - resampler->SetSize( fixedImage->GetLargestPossibleRegion().GetSize() ); - resampler->SetOutputOrigin( fixedImage->GetOrigin() ); - resampler->SetOutputSpacing( fixedImage->GetSpacing() ); - resampler->SetOutputDirection( fixedImage->GetDirection() ); - resampler->SetDefaultPixelValue( 100 ); - resampler->SetInterpolator( interpolator); - resampler->Update();*/ - - // Generate deformation field - typename DeformationFieldType::Pointer field = DeformationFieldType::New(); - field->SetRegions(movingRegion); - field->SetOrigin(movingImage->GetOrigin()); - field->SetSpacing(movingImage->GetSpacing()); - field->SetDirection(movingImage->GetDirection()); - field->Allocate(); - - typedef itk::ImageRegionIterator FieldIterator; - FieldIterator fi(field, movingRegion); - fi.GoToBegin(); - - typename TransformType::InputPointType fixedPoint; - typename TransformType::OutputPointType movingPoint; - typename DeformationFieldType::IndexType index; - - VectorType displacement; - - while (!fi.IsAtEnd()) - { - index = fi.GetIndex(); - field->TransformIndexToPhysicalPoint(index, fixedPoint); - movingPoint = transform->TransformPoint(fixedPoint); - displacement = movingPoint - fixedPoint; - fi.Set(displacement); - ++fi; - } - - // Use the deformation field to warp the moving image - typename WarperType::Pointer warper = WarperType::New(); - warper->SetInput(movingImage); - warper->SetInterpolator(interpolator); - warper->SetOutputSpacing(movingImage->GetSpacing()); - warper->SetOutputOrigin(movingImage->GetOrigin()); - warper->SetOutputDirection(movingImage->GetDirection()); - warper->SetDisplacementField(field); - warper->Update(); - - typename InternalImageType::Pointer result = warper->GetOutput(); - - if (m_UpdateInputImage) - { - Image::Pointer outputImage = this->GetOutput(); - mitk::CastToMitkImage(result, outputImage); - } - - // Save the deformationfield resulting from the registration - if (m_SaveDeformationField) - { - typedef itk::ImageFileWriter FieldWriterType; - typename FieldWriterType::Pointer fieldWriter = FieldWriterType::New(); - - fieldWriter->SetInput(field); - - fieldWriter->SetFileName(m_DeformationFileName); - try - { - fieldWriter->Update(); - } - catch (itk::ExceptionObject &excp) - { - std::cerr << "Exception thrown " << std::endl; - std::cerr << excp << std::endl; - // return EXIT_FAILURE; - } - } - } -} // end namespace diff --git a/Modules/DeformableRegistration/mitkBSplineRegistration.h b/Modules/DeformableRegistration/mitkBSplineRegistration.h deleted file mode 100644 index 820e212fee..0000000000 --- a/Modules/DeformableRegistration/mitkBSplineRegistration.h +++ /dev/null @@ -1,138 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKBSPLINEREGISTRATION_H -#define MITKBSPLINEREGISTRATION_H - -#include "MitkDeformableRegistrationExports.h" -#include "mitkImageAccessByItk.h" -#include "mitkRegistrationBase.h" -#include -//#include -#include "mitkRigidRegistrationObserver.h" - -namespace mitk -{ - /*! - \brief This class performes a b-spline registration between two images. - - \ingroup DeformableRegistration - - \author Thomas van Bruggen - */ - - class MITKDEFORMABLEREGISTRATION_EXPORT BSplineRegistration : public RegistrationBase - { - public: - mitkClassMacro(BSplineRegistration, RegistrationBase); - - /*! - * \brief Method for creation through the object factory. - */ - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - /*! - * \brief Sets the number of iterations which will be performed during the registration process. - */ - void SetNumberOfIterations(int iterations); - - /*! - * \brief Sets whether the result should be saved or not. - */ - void SetSaveResult(bool saveResult); - - /*! - * \brief Sets the filename for the resulting deformed image. - */ - void SetResultFileName(const char *resultName); - - /*! - * \brief Starts the B-Spline registration. - */ - virtual void GenerateData() override - { - if (this->GetInput()) - { - AccessByItk(this->GetInput(), GenerateData2); - } - } - - /*! - \brief Set the optimizer parameters - */ - - void SetOptimizerParameters(mitk::OptimizerParameters::Pointer optimizerParameters) - { - m_OptimizerParameters = optimizerParameters; - } - - /* void SetMetricParameters(mitk::MetricParameters::Pointer metricParameters) - { - m_MetricParameters = metricParameters; - }*/ - - /* void SetParameters(mitk::OptimizerParameters::Pointer optimizerParameters, mitk::MetricParameters::Pointer - metricParameters) - { - m_OptimizerParameters = optimizerParameters; - m_MetricParameters = metricParameters; - }*/ - - itkSetMacro(NumberOfGridPoints, int); - itkSetMacro(SaveDeformationField, bool); - itkSetMacro(UpdateInputImage, bool); - itkSetMacro(DeformationFileName, std::string); - itkSetMacro(Metric, int); - itkSetMacro(MatchHistograms, bool); - - protected: - /*! - * \brief Default constructor - */ - BSplineRegistration(); - - /*! - * \brief Default destructor - */ - virtual ~BSplineRegistration(); - - /*! - * \brief Template class to perform the demons registration with any kind of image. Called by GenerateData(). - */ - template - void GenerateData2(const itk::Image *itkImage1); - - int m_Iterations; - const char *m_ResultName; - bool m_SaveResult; - - mitk::OptimizerParameters::Pointer m_OptimizerParameters; - // mitk::MetricParameters::Pointer m_MetricParameters; - - int m_NumberOfGridPoints; - bool m_SaveDeformationField; - bool m_UpdateInputImage; - std::string m_DeformationFileName; - - bool m_MatchHistograms; - - int m_Metric; - - RigidRegistrationObserver::Pointer m_Observer; - }; -} - -#endif // MITKDEMONSREGISTRATION_H diff --git a/Modules/DeformableRegistration/mitkDemonsRegistration.cpp b/Modules/DeformableRegistration/mitkDemonsRegistration.cpp deleted file mode 100644 index a03f1b16fb..0000000000 --- a/Modules/DeformableRegistration/mitkDemonsRegistration.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include - -#include "itkImageFileWriter.h" -#include "itkImageRegionIterator.h" -#include "itkWarpImageFilter.h" - -#include "mitkDemonsRegistration.h" - -namespace mitk -{ - DemonsRegistration::DemonsRegistration() - : m_Iterations(50), - m_StandardDeviation(1.0), - m_FieldName("newField.mhd"), - m_ResultName("deformedImage.mhd"), - m_SaveField(true), - m_SaveResult(true), - m_DeformationField(nullptr) - { - } - - DemonsRegistration::~DemonsRegistration() {} - void DemonsRegistration::SetNumberOfIterations(int iterations) { m_Iterations = iterations; } - void DemonsRegistration::SetStandardDeviation(float deviation) { m_StandardDeviation = deviation; } - void DemonsRegistration::SetSaveDeformationField(bool saveField) { m_SaveField = saveField; } - void DemonsRegistration::SetDeformationFieldFileName(const char *fieldName) { m_FieldName = fieldName; } - void DemonsRegistration::SetSaveResult(bool saveResult) { m_SaveResult = saveResult; } - void DemonsRegistration::SetResultFileName(const char *resultName) { m_ResultName = resultName; } - itk::Image, 3>::Pointer DemonsRegistration::GetDeformationField() { return m_DeformationField; } - template - void DemonsRegistration::GenerateData2(const itk::Image *itkImage1) - { - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - - typedef float InternalPixelType; - typedef typename itk::Image InternalImageType; - typedef typename itk::CastImageFilter FixedImageCasterType; - typedef typename itk::CastImageFilter MovingImageCasterType; - typedef typename itk::Image InternalImageType; - typedef typename itk::Vector VectorPixelType; - typedef typename itk::Image DeformationFieldType; - typedef typename itk::DemonsRegistrationFilter - RegistrationFilterType; - typedef typename itk::WarpImageFilter WarperType; - typedef typename itk::LinearInterpolateImageFunction InterpolatorType; - - typedef TPixel OutputPixelType; - typedef typename itk::Image OutputImageType; - typedef typename itk::CastImageFilter CastFilterType; - typedef typename itk::ImageFileWriter WriterType; - typedef typename itk::ImageFileWriter FieldWriterType; - - typename FixedImageType::Pointer fixedImage = FixedImageType::New(); - mitk::CastToItkImage(m_ReferenceImage, fixedImage); - typename MovingImageType::ConstPointer movingImage = itkImage1; - - if (fixedImage.IsNotNull() && movingImage.IsNotNull()) - { - typename RegistrationFilterType::Pointer filter = RegistrationFilterType::New(); - - this->AddStepsToDo(4); - typename itk::ReceptorMemberCommand::Pointer command = - itk::ReceptorMemberCommand::New(); - command->SetCallbackFunction(this, &DemonsRegistration::SetProgress); - filter->AddObserver(itk::IterationEvent(), command); - - typename FixedImageCasterType::Pointer fixedImageCaster = FixedImageCasterType::New(); - fixedImageCaster->SetInput(fixedImage); - filter->SetFixedImage(fixedImageCaster->GetOutput()); - typename MovingImageCasterType::Pointer movingImageCaster = MovingImageCasterType::New(); - movingImageCaster->SetInput(movingImage); - filter->SetMovingImage(movingImageCaster->GetOutput()); - filter->SetNumberOfIterations(m_Iterations); - filter->SetStandardDeviations(m_StandardDeviation); - filter->Update(); - - typename WarperType::Pointer warper = WarperType::New(); - typename InterpolatorType::Pointer interpolator = InterpolatorType::New(); - - warper->SetInput(movingImage); - warper->SetInterpolator(interpolator); - warper->SetOutputSpacing(fixedImage->GetSpacing()); - warper->SetOutputOrigin(fixedImage->GetOrigin()); - warper->SetOutputDirection(fixedImage->GetDirection()); - warper->SetDisplacementField(filter->GetOutput()); - warper->Update(); - Image::Pointer outputImage = this->GetOutput(); - mitk::CastToMitkImage(warper->GetOutput(), outputImage); - - typename WriterType::Pointer writer = WriterType::New(); - typename CastFilterType::Pointer caster = CastFilterType::New(); - - writer->SetFileName(m_ResultName); - - caster->SetInput(warper->GetOutput()); - writer->SetInput(caster->GetOutput()); - if (m_SaveResult) - { - writer->Update(); - } - - if (VImageDimension == 2) - { - typedef DeformationFieldType VectorImage2DType; - typedef typename DeformationFieldType::PixelType Vector2DType; - - typename VectorImage2DType::ConstPointer vectorImage2D = filter->GetOutput(); - - typename VectorImage2DType::RegionType region2D = vectorImage2D->GetBufferedRegion(); - typename VectorImage2DType::IndexType index2D = region2D.GetIndex(); - typename VectorImage2DType::SizeType size2D = region2D.GetSize(); - - typedef typename itk::Vector Vector3DType; - typedef typename itk::Image VectorImage3DType; - - typedef typename itk::ImageFileWriter WriterType; - - typename WriterType::Pointer writer3D = WriterType::New(); - - typename VectorImage3DType::Pointer vectorImage3D = VectorImage3DType::New(); - - typename VectorImage3DType::RegionType region3D; - typename VectorImage3DType::IndexType index3D; - typename VectorImage3DType::SizeType size3D; - - index3D[0] = index2D[0]; - index3D[1] = index2D[1]; - index3D[2] = 0; - - size3D[0] = size2D[0]; - size3D[1] = size2D[1]; - size3D[2] = 1; - - region3D.SetSize(size3D); - region3D.SetIndex(index3D); - - typename VectorImage2DType::SpacingType spacing2D = vectorImage2D->GetSpacing(); - typename VectorImage3DType::SpacingType spacing3D; - - spacing3D[0] = spacing2D[0]; - spacing3D[1] = spacing2D[1]; - spacing3D[2] = 1.0; - - vectorImage3D->SetSpacing(spacing3D); - - vectorImage3D->SetRegions(region3D); - vectorImage3D->Allocate(); - - typedef typename itk::ImageRegionConstIterator Iterator2DType; - - typedef typename itk::ImageRegionIterator Iterator3DType; - - Iterator2DType it2(vectorImage2D, region2D); - Iterator3DType it3(vectorImage3D, region3D); - - it2.GoToBegin(); - it3.GoToBegin(); - - Vector2DType vector2D; - Vector3DType vector3D; - - vector3D[2] = 0; // set Z component to zero. - - while (!it2.IsAtEnd()) - { - vector2D = it2.Get(); - vector3D[0] = vector2D[0]; - vector3D[1] = vector2D[1]; - it3.Set(vector3D); - ++it2; - ++it3; - } - - writer3D->SetInput(vectorImage3D); - m_DeformationField = vectorImage3D; - - writer3D->SetFileName(m_FieldName); - - try - { - if (m_SaveField) - { - writer3D->Update(); - } - } - catch (itk::ExceptionObject &excp) - { - MITK_ERROR << excp << std::endl; - } - } - else - { - typename FieldWriterType::Pointer fieldwriter = FieldWriterType::New(); - fieldwriter->SetFileName(m_FieldName); - fieldwriter->SetInput(filter->GetOutput()); - m_DeformationField = (itk::Image, 3> *)(filter->GetOutput()); - if (m_SaveField) - { - fieldwriter->Update(); - } - } - this->SetRemainingProgress(4); - } - } -} // end namespace diff --git a/Modules/DeformableRegistration/mitkDemonsRegistration.h b/Modules/DeformableRegistration/mitkDemonsRegistration.h deleted file mode 100644 index 59436f44e0..0000000000 --- a/Modules/DeformableRegistration/mitkDemonsRegistration.h +++ /dev/null @@ -1,119 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKDEMONSREGISTRATION_H -#define MITKDEMONSREGISTRATION_H - -#include "MitkDeformableRegistrationExports.h" -#include "itkDemonsRegistrationFilter.h" - -#include "mitkImageAccessByItk.h" -#include "mitkRegistrationBase.h" - -namespace mitk -{ - /*! - \brief This class performes a demons registration between two images with the same modality.. - - \ingroup DeformableRegistration - - \author Daniel Stein - */ - - class MITKDEFORMABLEREGISTRATION_EXPORT DemonsRegistration : public RegistrationBase - { - public: - mitkClassMacro(DemonsRegistration, RegistrationBase); - - /*! - * \brief Method for creation through the object factory. - */ - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - /*! - * \brief Sets the number of iterations which will be performed during the registration process. - */ - void SetNumberOfIterations(int iterations); - - /*! - * \brief Sets the standard deviation used by the demons registration. - */ - void SetStandardDeviation(float deviation); - - /*! - * \brief Sets whether the resulting deformation field should be saved or not. - */ - void SetSaveDeformationField(bool saveField); - - /*! - * \brief Sets the filename for the resulting deformation field. - */ - void SetDeformationFieldFileName(const char *fieldName); - - /*! - * \brief Sets whether the result should be saved or not. - */ - void SetSaveResult(bool saveResult); - - /*! - * \brief Sets the filename for the resulting deformed image. - */ - void SetResultFileName(const char *resultName); - - /*! - * \brief Returns the deformation field, which results by the registration. - */ - itk::Image, 3>::Pointer GetDeformationField(); - - /*! - * \brief Starts the demons registration. - */ - virtual void GenerateData() override - { - if (this->GetInput()) - { - AccessByItk(this->GetInput(), GenerateData2); - } - } - - protected: - /*! - * \brief Default constructor - */ - DemonsRegistration(); - - /*! - * \brief Default destructor - */ - virtual ~DemonsRegistration(); - - /*! - * \brief Template class to perform the demons registration with any kind of image. Called by GenerateData(). - */ - template - void GenerateData2(const itk::Image *itkImage1); - - int m_Iterations; - float m_StandardDeviation; - const char *m_FieldName; - const char *m_ResultName; - bool m_SaveField; - bool m_SaveResult; - itk::Image, 3>::Pointer m_DeformationField; - }; -} - -#endif // MITKDEMONSREGISTRATION_H diff --git a/Modules/DeformableRegistration/mitkHistogramMatching.cpp b/Modules/DeformableRegistration/mitkHistogramMatching.cpp deleted file mode 100644 index 379ee31584..0000000000 --- a/Modules/DeformableRegistration/mitkHistogramMatching.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkHistogramMatching.h" - -#include - -namespace mitk -{ - HistogramMatching::HistogramMatching() - { - m_ThresholdAtMeanIntensity = true; - m_NumberOfHistogramLevels = 1024; - m_NumberOfMatchPoints = 7; - } - - HistogramMatching::~HistogramMatching() {} - void HistogramMatching::SetNumberOfHistogramLevels(int histogrammLevels) - { - m_NumberOfHistogramLevels = histogrammLevels; - } - - void HistogramMatching::SetNumberOfMatchPoints(int matchPoints) { m_NumberOfMatchPoints = matchPoints; } - void HistogramMatching::SetThresholdAtMeanIntensity(bool on) { m_ThresholdAtMeanIntensity = on; } - template - void HistogramMatching::GenerateData2(const itk::Image *itkImage1) - { - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - - typedef float InternalPixelType; - typedef typename itk::Image InternalImageType; - typedef typename itk::CastImageFilter FixedImageCasterType; - typedef typename itk::CastImageFilter MovingImageCasterType; - typedef typename itk::HistogramMatchingImageFilter MatchingFilterType; - - typename FixedImageType::Pointer fixedImage = FixedImageType::New(); - mitk::CastToItkImage(m_ReferenceImage, fixedImage); - typename MovingImageType::ConstPointer movingImage = itkImage1; - if (fixedImage.IsNotNull() && movingImage.IsNotNull()) - { - typename FixedImageCasterType::Pointer fixedImageCaster = FixedImageCasterType::New(); - fixedImageCaster->SetInput(fixedImage); - typename MovingImageCasterType::Pointer movingImageCaster = MovingImageCasterType::New(); - movingImageCaster->SetInput(movingImage); - typename MatchingFilterType::Pointer matcher = MatchingFilterType::New(); - matcher->SetInput(movingImageCaster->GetOutput()); - matcher->SetReferenceImage(fixedImageCaster->GetOutput()); - matcher->SetNumberOfHistogramLevels(m_NumberOfHistogramLevels); - matcher->SetNumberOfMatchPoints(m_NumberOfMatchPoints); - matcher->SetThresholdAtMeanIntensity(m_ThresholdAtMeanIntensity); - matcher->Update(); - Image::Pointer outputImage = this->GetOutput(); - mitk::CastToMitkImage(matcher->GetOutput(), outputImage); - } - } -} // end namespace diff --git a/Modules/DeformableRegistration/mitkHistogramMatching.h b/Modules/DeformableRegistration/mitkHistogramMatching.h deleted file mode 100644 index c4483f59f0..0000000000 --- a/Modules/DeformableRegistration/mitkHistogramMatching.h +++ /dev/null @@ -1,96 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKHISTOGRAMMATCHING_H -#define MITKHISTOGRAMMATCHING_H - -#include "MitkDeformableRegistrationExports.h" -#include "itkHistogramMatchingImageFilter.h" - -#include "mitkImageAccessByItk.h" -#include "mitkRegistrationBase.h" - -namespace mitk -{ - /*! - \brief This class performes a histogram matching between the fixed image and moving image to improve the registration - results. - - \ingroup DeformableRegistration - - \author Daniel Stein - */ - - class MITKDEFORMABLEREGISTRATION_EXPORT HistogramMatching : public RegistrationBase - { - public: - mitkClassMacro(HistogramMatching, RegistrationBase); - - /*! - * \brief Method for creation through the object factory. - */ - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - /*! - * \brief Sets the number of match points for the histogram generation. - */ - void SetNumberOfMatchPoints(int matchPoints); - - /*! - * \brief Sets the number of histogram levels for the histogram generation. - */ - void SetNumberOfHistogramLevels(int histogrammLevels); - - /*! - * \brief Sets whether a threshold at mean intensity should be used for the histogram generation. - */ - void SetThresholdAtMeanIntensity(bool on); - - /*! - * \brief Starts the histogram matching. - */ - virtual void GenerateData() override - { - if (this->GetInput()) - { - AccessByItk(this->GetInput(), GenerateData2); - } - } - - protected: - /*! - * \brief Default constructor - */ - HistogramMatching(); - - /*! - * \brief Default destructor - */ - virtual ~HistogramMatching(); - - /*! - * \brief Template class to perform the histogram matching with any kind of image. Called by GenerateData(). - */ - template - void GenerateData2(const itk::Image *itkImage1); - - bool m_ThresholdAtMeanIntensity; - int m_NumberOfHistogramLevels; - int m_NumberOfMatchPoints; - }; - -} // end namespace -#endif // MITKHISTOGRAMMATCHING_H diff --git a/Modules/DeformableRegistration/mitkRegistrationBase.cpp b/Modules/DeformableRegistration/mitkRegistrationBase.cpp deleted file mode 100644 index 63e8e032d0..0000000000 --- a/Modules/DeformableRegistration/mitkRegistrationBase.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkRegistrationBase.h" -#include "mitkProgressBar.h" - -namespace mitk -{ - RegistrationBase::RegistrationBase() { m_ReferenceImage = Image::New(); } - RegistrationBase::~RegistrationBase() {} - void RegistrationBase::SetReferenceImage(Image::Pointer fixedImage) - { - m_ReferenceImage = fixedImage; - SetNthInput(1, m_ReferenceImage); - Modified(); - } - - void RegistrationBase::SetProgress(const itk::EventObject &) - { - ProgressBar::GetInstance()->AddStepsToDo(1); - ProgressBar::GetInstance()->Progress(); - } - - void RegistrationBase::AddStepsToDo(int steps) { ProgressBar::GetInstance()->AddStepsToDo(steps); } - void RegistrationBase::SetRemainingProgress(int steps) { ProgressBar::GetInstance()->Progress(steps); } -} diff --git a/Modules/DeformableRegistration/mitkRegistrationBase.h b/Modules/DeformableRegistration/mitkRegistrationBase.h deleted file mode 100644 index d7834c1cd6..0000000000 --- a/Modules/DeformableRegistration/mitkRegistrationBase.h +++ /dev/null @@ -1,82 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKREGISTRATIONBASE_H -#define MITKREGISTRATIONBASE_H - -#include "MitkDeformableRegistrationExports.h" -#include "mitkImageToImageFilter.h" - -namespace mitk -{ - /*! - \brief This class handles the images for the registration as well as taking care of the progress bar during the - registration process. - It is the base class for the registration classes. - - \ingroup DeformableRegistration - - \author Daniel Stein - */ - - class MITKDEFORMABLEREGISTRATION_EXPORT RegistrationBase : public ImageToImageFilter - { - public: - mitkClassMacro(RegistrationBase, ImageToImageFilter); - - /*! - * \brief Method for creation through the object factory. - */ - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - /*! - * \brief Sets the reference image (fixed image) for the registration. - */ - virtual void SetReferenceImage(Image::Pointer fixedImage); - - protected: - /*! - * \brief Default constructor - */ - RegistrationBase(); - - /*! - * \brief Default destructor - */ - virtual ~RegistrationBase(); - - /*! - * \brief Adds steps to the progress bar, which will be done with AddStepsToDo(int steps) and - * SetRemainingProgress(int steps) - */ - virtual void AddStepsToDo(int steps); - - /*! - * \brief Sets one step of progress to the progress bar - */ - virtual void SetProgress(const itk::EventObject &); - - /*! - * \brief Sets the remaining progress to the progress bar - */ - virtual void SetRemainingProgress(int steps); - - Image::Pointer m_ReferenceImage; - }; - -} // namespace mitk - -#endif // MITKREGISTRATIONBASE_H diff --git a/Modules/DeformableRegistration/mitkSymmetricForcesDemonsRegistration.cpp b/Modules/DeformableRegistration/mitkSymmetricForcesDemonsRegistration.cpp deleted file mode 100644 index 264f608446..0000000000 --- a/Modules/DeformableRegistration/mitkSymmetricForcesDemonsRegistration.cpp +++ /dev/null @@ -1,230 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include - -#include "itkImageFileWriter.h" -#include "itkWarpImageFilter.h" - -#include "itkInverseDisplacementFieldImageFilter.h" - -#include "mitkSymmetricForcesDemonsRegistration.h" - -namespace mitk -{ - SymmetricForcesDemonsRegistration::SymmetricForcesDemonsRegistration() - : m_Iterations(50), - m_StandardDeviation(1.0), - m_FieldName("newField.mhd"), - m_ResultName("deformedImage.mhd"), - m_SaveField(true), - m_SaveResult(true), - m_DeformationField(nullptr) - { - } - - SymmetricForcesDemonsRegistration::~SymmetricForcesDemonsRegistration() {} - void SymmetricForcesDemonsRegistration::SetNumberOfIterations(int iterations) { m_Iterations = iterations; } - void SymmetricForcesDemonsRegistration::SetStandardDeviation(float deviation) { m_StandardDeviation = deviation; } - void SymmetricForcesDemonsRegistration::SetSaveDeformationField(bool saveField) { m_SaveField = saveField; } - void SymmetricForcesDemonsRegistration::SetDeformationFieldFileName(const char *fieldName) - { - m_FieldName = fieldName; - } - - void SymmetricForcesDemonsRegistration::SetSaveResult(bool saveResult) { m_SaveResult = saveResult; } - void SymmetricForcesDemonsRegistration::SetResultFileName(const char *resultName) { m_ResultName = resultName; } - itk::Image, 3>::Pointer SymmetricForcesDemonsRegistration::GetDeformationField() - { - return m_DeformationField; - } - - template - void SymmetricForcesDemonsRegistration::GenerateData2(const itk::Image *itkImage1) - { - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - - typedef float InternalPixelType; - typedef typename itk::Image InternalImageType; - typedef typename itk::CastImageFilter FixedImageCasterType; - typedef typename itk::CastImageFilter MovingImageCasterType; - typedef typename itk::Vector VectorPixelType; - typedef typename itk::Image DeformationFieldType; - typedef - typename itk::SymmetricForcesDemonsRegistrationFilter - RegistrationFilterType; - typedef typename itk::WarpImageFilter WarperType; - typedef typename itk::LinearInterpolateImageFunction InterpolatorType; - - typedef TPixel OutputPixelType; - typedef typename itk::Image OutputImageType; - typedef typename itk::CastImageFilter CastFilterType; - typedef typename itk::ImageFileWriter WriterType; - typedef typename itk::ImageFileWriter FieldWriterType; - - typename FixedImageType::Pointer fixedImage = FixedImageType::New(); - mitk::CastToItkImage(m_ReferenceImage, fixedImage); - typename MovingImageType::ConstPointer movingImage = itkImage1; - - if (fixedImage.IsNotNull() && movingImage.IsNotNull()) - { - typename RegistrationFilterType::Pointer filter = RegistrationFilterType::New(); - - this->AddStepsToDo(4); - itk::ReceptorMemberCommand::Pointer command = - itk::ReceptorMemberCommand::New(); - command->SetCallbackFunction(this, &SymmetricForcesDemonsRegistration::SetProgress); - filter->AddObserver(itk::IterationEvent(), command); - - typename FixedImageCasterType::Pointer fixedImageCaster = FixedImageCasterType::New(); - fixedImageCaster->SetInput(fixedImage); - filter->SetFixedImage(fixedImageCaster->GetOutput()); - typename MovingImageCasterType::Pointer movingImageCaster = MovingImageCasterType::New(); - movingImageCaster->SetInput(movingImage); - filter->SetMovingImage(movingImageCaster->GetOutput()); - filter->SetNumberOfIterations(m_Iterations); - filter->SetStandardDeviations(m_StandardDeviation); - filter->Update(); - - typename WarperType::Pointer warper = WarperType::New(); - typename InterpolatorType::Pointer interpolator = InterpolatorType::New(); - - warper->SetInput(movingImage); - warper->SetInterpolator(interpolator); - warper->SetOutputSpacing(fixedImage->GetSpacing()); - warper->SetOutputOrigin(fixedImage->GetOrigin()); - warper->SetDisplacementField(filter->GetOutput()); - warper->Update(); - typename WriterType::Pointer writer = WriterType::New(); - typename CastFilterType::Pointer caster = CastFilterType::New(); - - writer->SetFileName(m_ResultName); - - caster->SetInput(warper->GetOutput()); - writer->SetInput(caster->GetOutput()); - if (m_SaveResult) - { - writer->Update(); - } - Image::Pointer outputImage = this->GetOutput(); - mitk::CastToMitkImage(warper->GetOutput(), outputImage); - - if (VImageDimension == 2) - { - typedef DeformationFieldType VectorImage2DType; - typedef typename DeformationFieldType::PixelType Vector2DType; - - typename VectorImage2DType::ConstPointer vectorImage2D = filter->GetOutput(); - - typename VectorImage2DType::RegionType region2D = vectorImage2D->GetBufferedRegion(); - typename VectorImage2DType::IndexType index2D = region2D.GetIndex(); - typename VectorImage2DType::SizeType size2D = region2D.GetSize(); - - typedef typename itk::Vector Vector3DType; - typedef typename itk::Image VectorImage3DType; - - typedef typename itk::ImageFileWriter WriterType; - - WriterType::Pointer writer3D = WriterType::New(); - - VectorImage3DType::Pointer vectorImage3D = VectorImage3DType::New(); - - VectorImage3DType::RegionType region3D; - VectorImage3DType::IndexType index3D; - VectorImage3DType::SizeType size3D; - - index3D[0] = index2D[0]; - index3D[1] = index2D[1]; - index3D[2] = 0; - - size3D[0] = size2D[0]; - size3D[1] = size2D[1]; - size3D[2] = 1; - - region3D.SetSize(size3D); - region3D.SetIndex(index3D); - - typename VectorImage2DType::SpacingType spacing2D = vectorImage2D->GetSpacing(); - VectorImage3DType::SpacingType spacing3D; - - spacing3D[0] = spacing2D[0]; - spacing3D[1] = spacing2D[1]; - spacing3D[2] = 1.0; - - vectorImage3D->SetSpacing(spacing3D); - - vectorImage3D->SetRegions(region3D); - vectorImage3D->Allocate(); - - typedef typename itk::ImageRegionConstIterator Iterator2DType; - - typedef typename itk::ImageRegionIterator Iterator3DType; - - Iterator2DType it2(vectorImage2D, region2D); - Iterator3DType it3(vectorImage3D, region3D); - - it2.GoToBegin(); - it3.GoToBegin(); - - Vector2DType vector2D; - Vector3DType vector3D; - - vector3D[2] = 0; // set Z component to zero. - - while (!it2.IsAtEnd()) - { - vector2D = it2.Get(); - vector3D[0] = vector2D[0]; - vector3D[1] = vector2D[1]; - it3.Set(vector3D); - ++it2; - ++it3; - } - - writer3D->SetInput(vectorImage3D); - m_DeformationField = vectorImage3D; - - writer3D->SetFileName(m_FieldName); - - try - { - if (m_SaveField) - { - writer3D->Update(); - } - } - catch (itk::ExceptionObject &excp) - { - MITK_ERROR << excp << std::endl; - } - } - else - { - typename FieldWriterType::Pointer fieldwriter = FieldWriterType::New(); - fieldwriter->SetFileName(m_FieldName); - fieldwriter->SetInput(filter->GetOutput()); - // m_DeformationField = filter->GetOutput(); - m_DeformationField = (itk::Image, 3> *)(filter->GetOutput()); // see BUG #3732 - if (m_SaveField) - { - fieldwriter->Update(); - } - } - this->SetRemainingProgress(4); - } - } -} // end namespace diff --git a/Modules/DeformableRegistration/mitkSymmetricForcesDemonsRegistration.h b/Modules/DeformableRegistration/mitkSymmetricForcesDemonsRegistration.h deleted file mode 100644 index 8574e450a8..0000000000 --- a/Modules/DeformableRegistration/mitkSymmetricForcesDemonsRegistration.h +++ /dev/null @@ -1,120 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKSYMMETRICFORCESDEMONSREGISTRATION_H -#define MITKSYMMETRICFORCESDEMONSREGISTRATION_H - -#include "MitkDeformableRegistrationExports.h" -#include "itkSymmetricForcesDemonsRegistrationFilter.h" - -#include "mitkImageAccessByItk.h" -#include "mitkRegistrationBase.h" - -namespace mitk -{ - /*! - \brief This class performes a symmetric forces demons registration between two images with the same modality. - - \ingroup DeformableRegistration - - \author Daniel Stein - */ - - class MITKDEFORMABLEREGISTRATION_EXPORT SymmetricForcesDemonsRegistration : public RegistrationBase - { - public: - mitkClassMacro(SymmetricForcesDemonsRegistration, RegistrationBase); - - /*! - * \brief Method for creation through the object factory. - */ - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - /*! - * \brief Sets the number of iterations which will be performed during the registration process. - */ - void SetNumberOfIterations(int iterations); - - /*! - * \brief Sets the standard deviation used by the symmetric forces demons registration. - */ - void SetStandardDeviation(float deviation); - - /*! - * \brief Sets whether the resulting deformation field should be saved or not. - */ - void SetSaveDeformationField(bool saveField); - - /*! - * \brief Sets the filename for the resulting deformation field. - */ - void SetDeformationFieldFileName(const char *fieldName); - - /*! - * \brief Sets whether the result should be saved or not. - */ - void SetSaveResult(bool saveResult); - - /*! - * \brief Sets the filename for the resulting deformed image. - */ - void SetResultFileName(const char *resultName); - - /*! - * \brief Returns the deformation field, which results by the registration. - */ - itk::Image, 3>::Pointer GetDeformationField(); - - /*! - * \brief Starts the symmetric forces demons registration. - */ - virtual void GenerateData() override - { - if (this->GetInput()) - { - AccessByItk(this->GetInput(), GenerateData2); - } - } - - protected: - /*! - * \brief Default constructor - */ - SymmetricForcesDemonsRegistration(); - - /*! - * \brief Default destructor - */ - virtual ~SymmetricForcesDemonsRegistration(); - - /*! - * \brief Template class to perform the symmetric forces demons registration with any kind of image. Called by - * GenerateData(). - */ - template - void GenerateData2(const itk::Image *itkImage1); - - int m_Iterations; - float m_StandardDeviation; - const char *m_FieldName; - const char *m_ResultName; - bool m_SaveField; - bool m_SaveResult; - itk::Image, 3>::Pointer m_DeformationField; - }; -} - -#endif // MITKSYMMETRICFORCESDEMONSREGISTRATION_H diff --git a/Modules/DeformableRegistrationUI/CMakeLists.txt b/Modules/DeformableRegistrationUI/CMakeLists.txt deleted file mode 100644 index 5c1db39d4a..0000000000 --- a/Modules/DeformableRegistrationUI/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -MITK_CREATE_MODULE( - SUBPROJECTS MITK-Registration - DEPENDS MitkQtWidgets MitkDeformableRegistration -) diff --git a/Modules/DeformableRegistrationUI/QmitkBSplineRegistrationView.cpp b/Modules/DeformableRegistrationUI/QmitkBSplineRegistrationView.cpp deleted file mode 100644 index df50cad512..0000000000 --- a/Modules/DeformableRegistrationUI/QmitkBSplineRegistrationView.cpp +++ /dev/null @@ -1,203 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkBSplineRegistrationView.h" -#include "itkImageFileReader.h" -#include "itkRegularStepGradientDescentOptimizer.h" -#include "mitkBSplineRegistration.h" -#include "ui_QmitkBSplineRegistrationViewControls.h" -#include -#include -#include -#include -#include -#include -#include -#include - -typedef itk::Vector VectorType; -typedef itk::Image DeformationFieldType; - -typedef itk::ImageFileReader ImageReaderType; - -QmitkBSplineRegistrationView::QmitkBSplineRegistrationView(QWidget *parent, Qt::WindowFlags f) - : QWidget(parent, f), m_FixedNode(nullptr), m_MovingNode(nullptr) -{ - m_Controls.setupUi(parent); - - QObject::connect( - (QObject *)(m_Controls.m_PrintDeformField), SIGNAL(clicked()), (QObject *)this, SLOT(PrintDeformationField())); - - QObject::connect((QObject *)(m_Controls.m_BrowseDeformationField), - SIGNAL(clicked()), - (QObject *)this, - SLOT(SelectDeformationField())); - - connect(m_Controls.m_OptimizerSelector, - SIGNAL(activated(int)), - m_Controls.m_OptimizerWidgetStack, - SLOT(setCurrentIndex(int))); - connect(m_Controls.m_OptimizerSelector, SIGNAL(activated(int)), this, SLOT(OptimizerSelected(int))); -} - -QmitkBSplineRegistrationView::~QmitkBSplineRegistrationView() -{ -} - -void QmitkBSplineRegistrationView::OptimizerSelected(int optimizer) -{ - HideAllOptimizerFrames(); - if (optimizer == 0) - { - m_Controls.m_LBFGSFrame->show(); - } - else if (optimizer == 1) - { - m_Controls.m_GradientDescentFrame->show(); - } -} - -void QmitkBSplineRegistrationView::HideAllOptimizerFrames() -{ - m_Controls.m_LBFGSFrame->hide(); - m_Controls.m_GradientDescentFrame->hide(); -} - -void QmitkBSplineRegistrationView::SelectDeformationField() -{ - // SELECT FOLDER DIALOG - QFileDialog *w = new QFileDialog(this, "Select Deformation Field"); - w->setFileMode(QFileDialog::ExistingFiles); - w->setNameFilter("Images (*.mhd)"); - w->setDirectory("G:\\home\\vanbrugg\\testimages\\deformable"); - - // RETRIEVE SELECTION - if (w->exec() != QDialog::Accepted) - { - return; - cout << "Failed to load" << endl; - } - - QStringList filenames = w->selectedFiles(); - QStringList::Iterator it = filenames.begin(); - if (it != filenames.end()) - { - std::string filename = (*it).toStdString(); - ++it; - QString qStr = QString(filename.c_str()); - m_Controls.m_DeformationField->setText(qStr); - } -} - -void QmitkBSplineRegistrationView::PrintDeformationField() -{ - ImageReaderType::Pointer reader = ImageReaderType::New(); - reader->SetFileName(m_Controls.m_DeformationField->text().toStdString()); - reader->Update(); - - DeformationFieldType::Pointer deformationField = reader->GetOutput(); - - typedef itk::ImageRegionIterator IteratorType; - IteratorType deformIter(deformationField, deformationField->GetRequestedRegion()); - - for (deformIter.GoToBegin(); !deformIter.IsAtEnd(); ++deformIter) - { - std::cout << deformIter.Get() << std::endl; - } -} - -void QmitkBSplineRegistrationView::CalculateTransformation() -{ - if (m_FixedNode != nullptr && m_MovingNode != nullptr) - { - mitk::Image::Pointer fimage = dynamic_cast(m_FixedNode->GetData()); - mitk::Image::Pointer mimage = dynamic_cast(m_MovingNode->GetData()); - - mitk::BSplineRegistration::Pointer registration = mitk::BSplineRegistration::New(); - - registration->SetSaveResult(false); - registration->SetReferenceImage(fimage); - registration->SetInput(mimage); - - // Read out optimizer parameters from the interface - setOptimizerParameters(); - - registration->SetNumberOfGridPoints(m_Controls.m_NumberOfGridNodes->text().toInt()); - registration->SetOptimizerParameters(m_OptimizerParameters); - registration->SetUpdateInputImage(true); - - if (m_Controls.m_SaveDeformFieldCheck->isChecked()) - { - // Set some parameters to save the deformation field - registration->SetSaveDeformationField(true); - registration->SetDeformationFileName(m_Controls.m_DeformationField->text().toStdString()); - } - - try - { - registration->Update(); - } - catch (itk::ExceptionObject &excpt) - { - QMessageBox::information(this, "Registration exception", excpt.GetDescription(), QMessageBox::Ok); - } - - mitk::Image::Pointer image = registration->GetOutput(); - - if (image.IsNotNull()) - { - m_MovingNode->SetData(image); - mitk::LevelWindowProperty::Pointer levWinProp = mitk::LevelWindowProperty::New(); - mitk::LevelWindow levelWindow; - levelWindow.SetAuto(image); - levWinProp->SetLevelWindow(levelWindow); - m_MovingNode->GetPropertyList()->SetProperty("levelwindow", levWinProp); - } - - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - } -} - -void QmitkBSplineRegistrationView::setOptimizerParameters() -{ - m_OptimizerParameters = mitk::OptimizerParameters::New(); - - if (m_Controls.m_OptimizerSelector->currentText() == "LBFGSOptimizer") - { - m_OptimizerParameters->SetOptimizer(mitk::OptimizerParameters::LBFGSOPTIMIZER); - m_OptimizerParameters->SetGradientConvergenceToleranceLBFGS(m_Controls.m_GradConvTolerance->text().toFloat()); - m_OptimizerParameters->SetLineSearchAccuracyLBFGS(m_Controls.m_LineSearchAccuracy->text().toFloat()); - m_OptimizerParameters->SetDefaultStepLengthLBFGS(m_Controls.m_DefaultStepLength->text().toFloat()); - m_OptimizerParameters->SetNumberOfIterationsLBFGS(m_Controls.m_FunctionEvaluations->text().toInt()); - } - else if (m_Controls.m_OptimizerSelector->currentText() == "Gradient Descent") - { - m_OptimizerParameters->SetOptimizer(mitk::OptimizerParameters::GRADIENTDESCENTOPTIMIZER); - m_OptimizerParameters->SetLearningRateGradientDescent(m_Controls.m_LearningRateGradientDescent->text().toFloat()); - m_OptimizerParameters->SetNumberOfIterationsGradientDescent( - m_Controls.m_NumberOfIterationsGradientDescent->text().toInt()); - } -} - -void QmitkBSplineRegistrationView::SetFixedNode(mitk::DataNode *fixedNode) -{ - m_FixedNode = fixedNode; -} - -void QmitkBSplineRegistrationView::SetMovingNode(mitk::DataNode *movingNode) -{ - m_MovingNode = movingNode; -} diff --git a/Modules/DeformableRegistrationUI/QmitkBSplineRegistrationView.h b/Modules/DeformableRegistrationUI/QmitkBSplineRegistrationView.h deleted file mode 100644 index 55b78f8a2d..0000000000 --- a/Modules/DeformableRegistrationUI/QmitkBSplineRegistrationView.h +++ /dev/null @@ -1,69 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkBSplineRegistrationViewWidgetHIncluded -#define QmitkBSplineRegistrationViewWidgetHIncluded - -#include "MitkDeformableRegistrationUIExports.h" -#include "mitkDataNode.h" -#include "mitkOptimizerParameters.h" -#include "ui_QmitkBSplineRegistrationViewControls.h" - -/*! -* \brief Widget for deformable demons registration -* -* Displays options for demons registration. -*/ -class MITKDEFORMABLEREGISTRATIONUI_EXPORT QmitkBSplineRegistrationView : public QWidget -{ - Q_OBJECT - -public: - QmitkBSplineRegistrationView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkBSplineRegistrationView(); - - int GetNumberOfIterations(); - Ui::QmitkBSplineRegistrationViewControls m_Controls; - - void SetFixedNode(mitk::DataNode *fixedNode); - void SetMovingNode(mitk::DataNode *movingNode); - -public slots: - void CalculateTransformation(); - -protected slots: - /*! - * Prints the values of the deformationfield - */ - void PrintDeformationField(); - - /*! - * Select a deformation field - */ - void SelectDeformationField(); - - void OptimizerSelected(int optimizer); - void HideAllOptimizerFrames(); - -protected: - mitk::DataNode *m_FixedNode; - mitk::DataNode *m_MovingNode; - mitk::OptimizerParameters::Pointer m_OptimizerParameters; - - void setOptimizerParameters(); -}; - -#endif diff --git a/Modules/DeformableRegistrationUI/QmitkBSplineRegistrationViewControls.ui b/Modules/DeformableRegistrationUI/QmitkBSplineRegistrationViewControls.ui deleted file mode 100644 index 9c68a74709..0000000000 --- a/Modules/DeformableRegistrationUI/QmitkBSplineRegistrationViewControls.ui +++ /dev/null @@ -1,411 +0,0 @@ - - - QmitkBSplineRegistrationViewControls - - - - 0 - 0 - 260 - 361 - - - - - 0 - 0 - - - - QmitkBSplineRegistrationViewControls - - - - - - true - - - - 75 - true - - - - Optimizer - - - true - - - - 0 - - - - - - 50 - false - - - - - LBFGSOptimizer - - - - - Gradient Descent - - - - - - - - - 50 - false - - - - QFrame::NoFrame - - - QFrame::Plain - - - 1 - - - 0 - - - - - 0 - - - - - true - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - - - - - - - Gradient Convergence Tolerance - - - - - - - 0.00001 - - - - - - - Line Search Accuracy - - - - - - - 0.9 - - - - - - - Default Step Length - - - - - - - 1.0 - - - - - - - Max # Function Evaluations - - - - - - - 1000 - - - - - - - - - - 50 - false - - - - Print out information on every iteration step - - - - - - - - - - - - - - 0 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - - - - - - 50 - false - - - - Learning rate - - - - - - - - 50 - false - - - - 0.01 - - - - - - - - 50 - false - - - - Number of iterations - - - - - - - - 50 - false - - - - 100 - - - - - - - - - - - - - - - - - - - - 75 - true - - - - Transform - - - true - - - - 0 - - - - - - - - 50 - false - - - - Number of Grid Nodes Inside Image - - - - - - - - 50 - false - - - - 5 - - - - - - - - - - - - - 75 - true - - - - Deformation Field - - - true - - - - 0 - - - - - - - - 50 - false - - - - Save Deformation Field - - - - - - - - 50 - false - - - - - - - - - 50 - false - - - - Browse - - - - - - - - 50 - false - - - - Apply deformation field - - - - - - - - 50 - false - - - - Print deformation field - - - - - - - - - - - - - diff --git a/Modules/DeformableRegistrationUI/QmitkDemonsRegistrationView.cpp b/Modules/DeformableRegistrationUI/QmitkDemonsRegistrationView.cpp deleted file mode 100644 index dd2acaf172..0000000000 --- a/Modules/DeformableRegistrationUI/QmitkDemonsRegistrationView.cpp +++ /dev/null @@ -1,218 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkDemonsRegistrationView.h" -#include "itkRegularStepGradientDescentOptimizer.h" -#include "mitkITKImageImport.h" -#include "mitkProgressBar.h" -#include "ui_QmitkDemonsRegistrationViewControls.h" -#include -#include -#include -#include -#include -#include -#include -#include - -QmitkDemonsRegistrationView::QmitkDemonsRegistrationView(QWidget *parent, Qt::WindowFlags f) - : QWidget(parent, f), - m_FixedNode(nullptr), - m_MovingNode(nullptr), - m_ResultImage(nullptr), - m_ResultDeformationField(nullptr) -{ - m_Controls.setupUi(parent); - - QValidator *validatorHistogramLevels = new QIntValidator(1, 20000000, this); - m_Controls.m_NumberOfHistogramLevels->setValidator(validatorHistogramLevels); - - QValidator *validatorMatchPoints = new QIntValidator(1, 20000000, this); - m_Controls.m_NumberOfMatchPoints->setValidator(validatorMatchPoints); - - QValidator *validatorIterations = new QIntValidator(1, 20000000, this); - m_Controls.m_Iterations->setValidator(validatorIterations); - - QValidator *validatorStandardDeviation = new QDoubleValidator(0, 20000000, 2, this); - m_Controls.m_StandardDeviation->setValidator(validatorStandardDeviation); -} - -QmitkDemonsRegistrationView::~QmitkDemonsRegistrationView() -{ -} - -int QmitkDemonsRegistrationView::GetNumberOfIterations() -{ - return atoi(m_Controls.m_Iterations->text().toLatin1()); -} - -float QmitkDemonsRegistrationView::GetStandardDeviation() -{ - return atof(m_Controls.m_StandardDeviation->text().toLatin1()); -} - -mitk::Image::Pointer QmitkDemonsRegistrationView::GetResultImage() -{ - return m_ResultImage; -} - -mitk::Image::Pointer QmitkDemonsRegistrationView::GetResultDeformationfield() -{ - return m_ResultDeformationField; -} - -void QmitkDemonsRegistrationView::CalculateTransformation() -{ - if (m_FixedNode.IsNotNull() && m_MovingNode.IsNotNull()) - { - mitk::Image::Pointer fimage = dynamic_cast(m_FixedNode->GetData()); - mitk::Image::Pointer mimage = dynamic_cast(m_MovingNode->GetData()); - // workaround to ensure that fimage covers a bigger region than mimage - mitk::Image::RegionType fimageRegion = fimage->GetLargestPossibleRegion(); - mitk::Image::RegionType mimageRegion = mimage->GetLargestPossibleRegion(); - if (!((fimageRegion.GetSize(0) >= mimageRegion.GetSize(0)) && - (fimageRegion.GetSize(1) >= mimageRegion.GetSize(1)) && (fimageRegion.GetSize(2) >= mimageRegion.GetSize(2)))) - { - QMessageBox::information( - nullptr, "Registration", "Fixed image must be equal or bigger in size than moving image."); - return; - } - if (m_Controls.m_RegistrationSelection->currentIndex() == 0) - { - mitk::DemonsRegistration::Pointer registration = mitk::DemonsRegistration::New(); - registration->SetSaveDeformationField(false); - registration->SetSaveResult(false); - registration->SetReferenceImage(fimage); - registration->SetNumberOfIterations(atoi(m_Controls.m_Iterations->text().toLatin1())); - registration->SetStandardDeviation(atof(m_Controls.m_StandardDeviation->text().toLatin1())); - if (m_Controls.m_UseHistogramMatching->isChecked()) - { - mitk::HistogramMatching::Pointer histogramMatching = mitk::HistogramMatching::New(); - histogramMatching->SetReferenceImage(fimage); - histogramMatching->SetInput(mimage); - histogramMatching->SetNumberOfHistogramLevels(atoi(m_Controls.m_NumberOfHistogramLevels->text().toLatin1())); - histogramMatching->SetNumberOfMatchPoints(atoi(m_Controls.m_NumberOfMatchPoints->text().toLatin1())); - histogramMatching->SetThresholdAtMeanIntensity(m_Controls.m_ThresholdAtMeanIntensity->isChecked()); - histogramMatching->Update(); - mitk::Image::Pointer histimage = histogramMatching->GetOutput(); - if (histimage.IsNotNull()) - { - registration->SetInput(histimage); - } - else - { - registration->SetInput(mimage); - } - } - else - { - registration->SetInput(mimage); - } - try - { - registration->Update(); - } - catch (itk::ExceptionObject &excpt) - { - QMessageBox::information(this, "Registration exception", excpt.GetDescription(), QMessageBox::Ok); - mitk::ProgressBar::GetInstance()->Progress(4); - return; - } - m_ResultImage = registration->GetOutput(); - typedef itk::Image, 3> VectorImageType; - VectorImageType::Pointer deformationField = registration->GetDeformationField(); - m_ResultDeformationField = mitk::ImportItkImage(deformationField)->Clone(); - } - else if (m_Controls.m_RegistrationSelection->currentIndex() == 1) - { - mitk::SymmetricForcesDemonsRegistration::Pointer registration = mitk::SymmetricForcesDemonsRegistration::New(); - registration->SetSaveDeformationField(false); - registration->SetSaveResult(false); - registration->SetReferenceImage(fimage); - registration->SetNumberOfIterations(atoi(m_Controls.m_Iterations->text().toLatin1())); - registration->SetStandardDeviation(atof(m_Controls.m_StandardDeviation->text().toLatin1())); - if (m_Controls.m_UseHistogramMatching->isChecked()) - { - mitk::HistogramMatching::Pointer histogramMatching = mitk::HistogramMatching::New(); - histogramMatching->SetReferenceImage(fimage); - histogramMatching->SetInput(mimage); - histogramMatching->SetNumberOfHistogramLevels(atoi(m_Controls.m_NumberOfHistogramLevels->text().toLatin1())); - histogramMatching->SetNumberOfMatchPoints(atoi(m_Controls.m_NumberOfMatchPoints->text().toLatin1())); - histogramMatching->SetThresholdAtMeanIntensity(m_Controls.m_ThresholdAtMeanIntensity->isChecked()); - histogramMatching->Update(); - mitk::Image::Pointer histimage = histogramMatching->GetOutput(); - if (histimage.IsNotNull()) - { - registration->SetInput(histimage); - } - else - { - registration->SetInput(mimage); - } - } - else - { - registration->SetInput(mimage); - } - try - { - registration->Update(); - } - catch (itk::ExceptionObject &excpt) - { - QMessageBox::information(this, "Registration exception", excpt.GetDescription(), QMessageBox::Ok); - mitk::ProgressBar::GetInstance()->Progress(4); - return; - } - m_ResultImage = registration->GetOutput(); - typedef itk::Image, 3> VectorImageType; - VectorImageType::Pointer deformationField = registration->GetDeformationField(); - m_ResultDeformationField = mitk::ImportItkImage(deformationField)->Clone(); - } - } -} - -void QmitkDemonsRegistrationView::SetFixedNode(mitk::DataNode *fixedNode) -{ - m_FixedNode = fixedNode; -} - -void QmitkDemonsRegistrationView::SetMovingNode(mitk::DataNode *movingNode) -{ - m_MovingNode = movingNode; -} - -void QmitkDemonsRegistrationView::UseHistogramMatching(bool useHM) -{ - if (useHM) - { - m_Controls.numberOfHistogramLevels->setEnabled(true); - m_Controls.m_NumberOfHistogramLevels->setEnabled(true); - m_Controls.numberOfMatchPoints->setEnabled(true); - m_Controls.m_NumberOfMatchPoints->setEnabled(true); - m_Controls.thresholdAtMeanIntensity->setEnabled(true); - m_Controls.m_ThresholdAtMeanIntensity->setEnabled(true); - } - else - { - m_Controls.numberOfHistogramLevels->setEnabled(false); - m_Controls.m_NumberOfHistogramLevels->setEnabled(false); - m_Controls.numberOfMatchPoints->setEnabled(false); - m_Controls.m_NumberOfMatchPoints->setEnabled(false); - m_Controls.thresholdAtMeanIntensity->setEnabled(false); - m_Controls.m_ThresholdAtMeanIntensity->setEnabled(false); - } -} diff --git a/Modules/DeformableRegistrationUI/QmitkDemonsRegistrationView.h b/Modules/DeformableRegistrationUI/QmitkDemonsRegistrationView.h deleted file mode 100644 index 9ff5cb5793..0000000000 --- a/Modules/DeformableRegistrationUI/QmitkDemonsRegistrationView.h +++ /dev/null @@ -1,57 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkDemonsRegistrationViewWidgetHIncluded -#define QmitkDemonsRegistrationViewWidgetHIncluded - -#include "MitkDeformableRegistrationUIExports.h" -#include "mitkDataNode.h" -#include "ui_QmitkDemonsRegistrationViewControls.h" - -/*! -* \brief Widget for deformable demons registration -* -* Displays options for demons registration. -*/ -class MITKDEFORMABLEREGISTRATIONUI_EXPORT QmitkDemonsRegistrationView : public QWidget -{ - Q_OBJECT - -public: - QmitkDemonsRegistrationView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkDemonsRegistrationView(); - - int GetNumberOfIterations(); - float GetStandardDeviation(); - - void SetFixedNode(mitk::DataNode *fixedNode); - void SetMovingNode(mitk::DataNode *movingNode); - void UseHistogramMatching(bool useHM); - mitk::Image::Pointer GetResultImage(); - mitk::Image::Pointer GetResultDeformationfield(); - -public slots: - void CalculateTransformation(); - -protected: - Ui::QmitkDemonsRegistrationViewControls m_Controls; - mitk::DataNode::Pointer m_FixedNode; - mitk::DataNode::Pointer m_MovingNode; - mitk::Image::Pointer m_ResultImage; - mitk::Image::Pointer m_ResultDeformationField; -}; - -#endif diff --git a/Modules/DeformableRegistrationUI/QmitkDemonsRegistrationViewControls.ui b/Modules/DeformableRegistrationUI/QmitkDemonsRegistrationViewControls.ui deleted file mode 100644 index 4f281e8331..0000000000 --- a/Modules/DeformableRegistrationUI/QmitkDemonsRegistrationViewControls.ui +++ /dev/null @@ -1,348 +0,0 @@ - - - QmitkDemonsRegistrationViewControls - - - - 0 - 0 - 271 - 256 - - - - - 0 - 0 - - - - QmitkDemonsRegistrationViewControls - - - - 6 - - - 0 - - - 9 - - - 0 - - - 9 - - - - - - 75 - true - - - - Transform - - - true - - - - 0 - - - - - - Demons Registration - - - - - Symmetric Forces Demons Registration - - - - - - - - - - - - 75 - true - - - - Histogram Matching - - - true - - - - 0 - - - - - - - - - - 50 - false - - - - Use Histogram Matching: - - - false - - - - - - - - 50 - false - - - - Number of Histogram Levels: - - - false - - - - - - - - 50 - false - - - - Number of Match Points: - - - false - - - - - - - - 50 - false - - - - Threshold at Mean Intensity: - - - false - - - - - - - - - - - - 50 - false - - - - - - - true - - - - - - - - 50 - false - - - - 1024 - - - Qt::AlignRight - - - - - - - - 50 - false - - - - 7 - - - Qt::AlignRight - - - - - - - - 50 - false - - - - - - - true - - - - - - - - - - - - - - - 75 - true - - - - Demons Registration - - - true - - - - 0 - - - - - - - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - 50 - false - - - - Standard Deviation: - - - false - - - - - - - - - - - - 0 - 0 - - - - - 50 - false - - - - 50 - - - Qt::AlignRight - - - - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - - - - - - - - mitkDataNode.h - mitkDemonsRegistration.h - mitkHistogramMatching.h - mitkSymmetricForcesDemonsRegistration.h - - - - diff --git a/Modules/DeformableRegistrationUI/files.cmake b/Modules/DeformableRegistrationUI/files.cmake deleted file mode 100644 index 24d1c42971..0000000000 --- a/Modules/DeformableRegistrationUI/files.cmake +++ /dev/null @@ -1,15 +0,0 @@ -set(CPP_FILES - QmitkDemonsRegistrationView.cpp - QmitkBSplineRegistrationView.cpp -) - - -set(UI_FILES - QmitkDemonsRegistrationViewControls.ui - QmitkBSplineRegistrationViewControls.ui -) - -set(MOC_H_FILES - QmitkDemonsRegistrationView.h - QmitkBSplineRegistrationView.h -) \ No newline at end of file diff --git a/Modules/ModuleList.cmake b/Modules/ModuleList.cmake index bf1084ad4a..82faaf1bad 100644 --- a/Modules/ModuleList.cmake +++ b/Modules/ModuleList.cmake @@ -1,84 +1,80 @@ # The entries in the mitk_modules list must be # ordered according to their dependencies. set(mitk_modules Core CommandLine AppUtil DCMTesting RDF LegacyIO DataTypesExt Annotation LegacyGL AlgorithmsExt MapperExt DICOMReader DICOMReaderServices DICOMTesting SceneSerializationBase PlanarFigure ImageDenoising ImageExtraction LegacyAdaptors SceneSerialization Gizmo GraphAlgorithms Multilabel ImageStatistics ContourModel SurfaceInterpolation Segmentation PlanarFigureSegmentation OpenViewCore QtWidgets QtWidgetsExt C3js QmlItems SegmentationUI Classification DiffusionImaging GPGPU OpenIGTLink IGTBase IGT CameraCalibration - RigidRegistration - RigidRegistrationUI - DeformableRegistration - DeformableRegistrationUI OpenCL OpenCVVideoSupport QtOverlays ToFHardware ToFProcessing ToFUI US USUI DicomUI Simulation Remeshing Python QtPython Persistence OpenIGTLinkUI IGTUI VtkShaders DicomRT RTUI IOExt XNAT TubeGraph BiophotonicsHardware TumorInvasionAnalysis MatchPointRegistration MatchPointRegistrationUI BoundingShape RenderWindowManager RenderWindowManagerUI CEST ) if(MITK_ENABLE_PIC_READER) list(APPEND mitk_modules IpPicSupportIO) endif() diff --git a/Modules/RigidRegistration/CMakeLists.txt b/Modules/RigidRegistration/CMakeLists.txt deleted file mode 100644 index 524f6f5b41..0000000000 --- a/Modules/RigidRegistration/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -MITK_CREATE_MODULE( - SUBPROJECTS MITK-Registration - DEPENDS MitkCore - PACKAGE_DEPENDS PUBLIC ITK|ITKRegistrationCommon -) - -add_subdirectory(Testing) diff --git a/Modules/RigidRegistration/Documentation/Doxygen/Modules.dox b/Modules/RigidRegistration/Documentation/Doxygen/Modules.dox deleted file mode 100644 index 9d2e9081ba..0000000000 --- a/Modules/RigidRegistration/Documentation/Doxygen/Modules.dox +++ /dev/null @@ -1,20 +0,0 @@ -/** - \defgroup Registration RigidRegistration - \ingroup MITKModules - - \brief A couple of classes related to registration. -*/ - -/** - \defgroup RigidRegistration Classes related to rigid registration - \ingroup Registration - - \brief A couple of classes related to rigid registration. -*/ - -/** - \defgroup PointBasedRegistration Classes related to point based registration - \ingroup Registration - - \brief A couple of classes related to point based registration. -*/ diff --git a/Modules/RigidRegistration/Resources/mitkRigidRegistrationPresets.xml b/Modules/RigidRegistration/Resources/mitkRigidRegistrationPresets.xml deleted file mode 100644 index 87a898a945..0000000000 --- a/Modules/RigidRegistration/Resources/mitkRigidRegistrationPresets.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistration/Resources/mitkRigidRegistrationTestPresets.xml b/Modules/RigidRegistration/Resources/mitkRigidRegistrationTestPresets.xml deleted file mode 100644 index a4423af0e4..0000000000 --- a/Modules/RigidRegistration/Resources/mitkRigidRegistrationTestPresets.xml +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistration/Testing/CMakeLists.txt b/Modules/RigidRegistration/Testing/CMakeLists.txt deleted file mode 100644 index 153cd81e2e..0000000000 --- a/Modules/RigidRegistration/Testing/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -MITK_CREATE_MODULE_TESTS() diff --git a/Modules/RigidRegistration/Testing/files.cmake b/Modules/RigidRegistration/Testing/files.cmake deleted file mode 100644 index 46ad375f7e..0000000000 --- a/Modules/RigidRegistration/Testing/files.cmake +++ /dev/null @@ -1,4 +0,0 @@ -set(MODULE_TESTS - # mitkRigidRegistrationPresetTest.cpp - # mitkRigidRegistrationTestPresetTest.cpp -) \ No newline at end of file diff --git a/Modules/RigidRegistration/Testing/mitkRigidRegistrationPresetTest.cpp b/Modules/RigidRegistration/Testing/mitkRigidRegistrationPresetTest.cpp deleted file mode 100644 index 41136b950c..0000000000 --- a/Modules/RigidRegistration/Testing/mitkRigidRegistrationPresetTest.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkRigidRegistrationPreset.h" -#include - -int mitkRigidRegistrationPresetTest(int /*argc*/, char * /*argv*/ []) -{ - typedef itk::Array ArrayType; - - mitk::RigidRegistrationPreset *rrp = new mitk::RigidRegistrationPreset; - std::cout << "[PASSED]" << std::endl; - - // Check if the default presets (in the Functionality directory) can be loaded. - std::cout << "Testing default parameter loading...\n"; - if (!rrp->LoadPreset()) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - std::cout << "[PASSED]" << std::endl; - - // Check if an exemplary parameter set can be extracted from the read presets. - std::cout << "Testing if exemplary default values match default parameters...\n"; - - ArrayType transformValues = rrp->getTransformValues("ITK Image Registration 12"); - ArrayType metricValues = rrp->getMetricValues("ITK Image Registration 12"); - ArrayType optimizerValues = rrp->getOptimizerValues("ITK Image Registration 12"); - ArrayType interpolatorValues = rrp->getInterpolatorValues("ITK Image Registration 12"); - - std::cout << transformValues[5] << metricValues[1] << optimizerValues[4] << interpolatorValues[0] << std::endl; - - if (!(transformValues[5] == 0.001) || !(metricValues[1] == 1) || !(optimizerValues[4] == 0.1) || - !(interpolatorValues[0] == 0)) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - std::cout << "[PASSED]" << std::endl; - - // Testing if a save operation can be performed. - std::cout << "Testing if saving is possible...\n"; - if (!rrp->newPresets(rrp->getTransformValuesPresets(), - rrp->getMetricValuesPresets(), - rrp->getOptimizerValuesPresets(), - rrp->getInterpolatorValuesPresets(), - "TestPresets.xml")) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - std::cout << "[PASSED]" << std::endl; - - // Testing what happens if we now repeat the test with the previously written xml file - delete rrp; - - mitk::RigidRegistrationPreset *rrp2 = new mitk::RigidRegistrationPreset; - std::cout << "[PASSED]" << std::endl; - - // Check if the default presets (in the Functionality directory) can be loaded. - std::cout << "Testing default parameter loading, second time...\n"; - if (!rrp2->LoadPreset("TestPresets.xml")) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - std::cout << "[PASSED]" << std::endl; - - // Check if an exemplary parameter set can be extracted from the read presets. - std::cout << "Testing if exemplary default values match default parameters, second time...\n"; - - transformValues = rrp2->getTransformValues("ITK Image Registration 12"); - metricValues = rrp2->getMetricValues("ITK Image Registration 12"); - optimizerValues = rrp2->getOptimizerValues("ITK Image Registration 12"); - interpolatorValues = rrp2->getInterpolatorValues("ITK Image Registration 12"); - - if (!(transformValues[5] == 0.001) || !(metricValues[1] == 1) || !(optimizerValues[4] == 0.1) || - !(interpolatorValues[0] == 0)) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - std::cout << "[PASSED]" << std::endl; - - delete rrp2; - - std::cout << "[TEST DONE]" << std::endl; - return EXIT_SUCCESS; -} diff --git a/Modules/RigidRegistration/Testing/mitkRigidRegistrationTestPresetTest.cpp b/Modules/RigidRegistration/Testing/mitkRigidRegistrationTestPresetTest.cpp deleted file mode 100644 index f0082102de..0000000000 --- a/Modules/RigidRegistration/Testing/mitkRigidRegistrationTestPresetTest.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkRigidRegistrationTestPreset.h" -#include - -int mitkRigidRegistrationTestPresetTest(int /*argc*/, char * /*argv*/ []) -{ - typedef itk::Array ArrayType; - - mitk::RigidRegistrationTestPreset *rrp = new mitk::RigidRegistrationTestPreset; - std::cout << "[PASSED]" << std::endl; - - // Check if the default presets (in the Functionality directory) can be loaded. - std::cout << "Testing default parameter loading...\n"; - if (!rrp->LoadPreset()) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - std::cout << "[PASSED]" << std::endl; - - // Check if an exemplary parameter set can be extracted from the read presets. - std::cout << "Testing if exemplary default values match default parameters...\n"; - - ArrayType transformValues = rrp->getTransformValues("ITK Image Registration 12"); - ArrayType metricValues = rrp->getMetricValues("ITK Image Registration 12"); - ArrayType optimizerValues = rrp->getOptimizerValues("ITK Image Registration 12"); - ArrayType interpolatorValues = rrp->getInterpolatorValues("ITK Image Registration 12"); - - std::cout << transformValues[5] << metricValues[1] << optimizerValues[4] << interpolatorValues[0] << std::endl; - - if (!(transformValues[5] == 0.001) || !(metricValues[1] == 1) || !(optimizerValues[4] == 0.1) || - !(interpolatorValues[0] == 0)) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - std::cout << "[PASSED]" << std::endl; - - // Testing if a save operation can be performed. - std::cout << "Testing if saving is possible...\n"; - if (!rrp->newPresets(rrp->getTransformValuesPresets(), - rrp->getMetricValuesPresets(), - rrp->getOptimizerValuesPresets(), - rrp->getInterpolatorValuesPresets(), - "TestPresets.xml")) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - std::cout << "[PASSED]" << std::endl; - - // Testing what happens if we now repeat the test with the previously written xml file - delete rrp; - - mitk::RigidRegistrationTestPreset *rrp2 = new mitk::RigidRegistrationTestPreset; - std::cout << "[PASSED]" << std::endl; - - // Check if the default presets (in the Functionality directory) can be loaded. - std::cout << "Testing default parameter loading, second time...\n"; - if (!rrp2->LoadPreset("TestPresets.xml")) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - std::cout << "[PASSED]" << std::endl; - - // Check if an exemplary parameter set can be extracted from the read presets. - std::cout << "Testing if exemplary default values match default parameters, second time...\n"; - - transformValues = rrp2->getTransformValues("ITK Image Registration 12"); - metricValues = rrp2->getMetricValues("ITK Image Registration 12"); - optimizerValues = rrp2->getOptimizerValues("ITK Image Registration 12"); - interpolatorValues = rrp2->getInterpolatorValues("ITK Image Registration 12"); - - if (!(transformValues[5] == 0.001) || !(metricValues[1] == 1) || !(optimizerValues[4] == 0.1) || - !(interpolatorValues[0] == 0)) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - std::cout << "[PASSED]" << std::endl; - - delete rrp2; - - std::cout << "[TEST DONE]" << std::endl; - return EXIT_SUCCESS; -} diff --git a/Modules/RigidRegistration/files.cmake b/Modules/RigidRegistration/files.cmake deleted file mode 100644 index 14735e7ec5..0000000000 --- a/Modules/RigidRegistration/files.cmake +++ /dev/null @@ -1,18 +0,0 @@ -set(CPP_FILES - mitkImageRegistrationMethod.cpp - mitkMetricParameters.cpp - mitkOptimizerFactory.cpp - mitkOptimizerParameters.cpp - mitkRigidRegistrationObserver.cpp - mitkRigidRegistrationPreset.cpp - mitkTransformParameters.cpp - mitkPyramidalRegistrationMethod.cpp -) - -set(RESOURCE_FILES - mitkRigidRegistrationPresets.xml - mitkRigidRegistrationTestPresets.xml -) - -MITK_MULTIPLEX_PICTYPE( mitkImageRegistrationMethod-TYPE.cpp ) -MITK_MULTIPLEX_PICTYPE( mitkPyramidalRegistrationMethod-TYPE.cpp ) diff --git a/Modules/RigidRegistration/mitkImageRegistrationMethod-TYPE.cpp b/Modules/RigidRegistration/mitkImageRegistrationMethod-TYPE.cpp deleted file mode 100644 index ef7a4f12d8..0000000000 --- a/Modules/RigidRegistration/mitkImageRegistrationMethod-TYPE.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include -#include - -#define InstantiateAccessFunction_RegistrationAccessItkImage(pixelType, dim) \ - template void mitk::ImageRegistrationMethodAccessFunctor::AccessItkImage( \ - const itk::Image *itkImage1, mitk::ImageRegistrationMethod *method); - -InstantiateAccessFunctionForFixedPixelType(RegistrationAccessItkImage, (@TYPE@)) diff --git a/Modules/RigidRegistration/mitkImageRegistrationMethod.cpp b/Modules/RigidRegistration/mitkImageRegistrationMethod.cpp deleted file mode 100644 index 2a7281e639..0000000000 --- a/Modules/RigidRegistration/mitkImageRegistrationMethod.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkImageRegistrationMethod.h" -#include "mitkImageRegistrationMethodAccessFunctor.h" - -namespace mitk -{ - ImageRegistrationMethod::ImageRegistrationMethod() : m_Interpolator(0), m_MultiResolutionScales(1) - { - m_ReferenceImage = Image::New(); - m_OptimizerScales.clear(); - } - - ImageRegistrationMethod::~ImageRegistrationMethod() {} - void ImageRegistrationMethod::GenerateData() - { - if (this->GetInput()) - { - ImageRegistrationMethodAccessFunctor()(this->GetInput(), this); - } - } - - void ImageRegistrationMethod::SetObserver(RigidRegistrationObserver::Pointer observer) { m_Observer = observer; } - void ImageRegistrationMethod::SetInterpolator(int interpolator) { m_Interpolator = interpolator; } - void ImageRegistrationMethod::SetReferenceImage(Image::Pointer fixedImage) - { - m_ReferenceImage = fixedImage; - SetNthInput(1, m_ReferenceImage); - Modified(); - } - - void ImageRegistrationMethod::SetMovingMask(Image::Pointer movingMask) - { - m_MovingMask = movingMask; - SetNthInput(3, m_MovingMask); - Modified(); - } - - void ImageRegistrationMethod::SetFixedMask(Image::Pointer FixedMask) - { - m_FixedMask = FixedMask; - SetNthInput(4, m_FixedMask); - Modified(); - } - - void ImageRegistrationMethod::SetTransform(itk::Object::Pointer transform) - { - m_Transform = transform; - - MITK_INFO("Image.Registration.Method") << "Transform : " << m_Transform; - } - - void ImageRegistrationMethod::SetMetric(itk::Object::Pointer metric) { m_Metric = metric; } - void ImageRegistrationMethod::SetOptimizer(itk::Object::Pointer optimizer) { m_Optimizer = optimizer; } - void ImageRegistrationMethod::SetOptimizerScales(itk::Array scales) - { - m_OptimizerScales.set_size(scales.size()); - m_OptimizerScales.copy_in(scales.data_block()); - } - - void ImageRegistrationMethod::SetNumberOfLevels(unsigned int levels) { m_MultiResolutionScales = levels; } -} // end namespace diff --git a/Modules/RigidRegistration/mitkImageRegistrationMethod.h b/Modules/RigidRegistration/mitkImageRegistrationMethod.h deleted file mode 100644 index c4908d9a25..0000000000 --- a/Modules/RigidRegistration/mitkImageRegistrationMethod.h +++ /dev/null @@ -1,99 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKIMAGEREGISTRATIONMETHOD_H -#define MITKIMAGEREGISTRATIONMETHOD_H - -#include "MitkRigidRegistrationExports.h" -#include "itkImageRegistrationMethod.h" -#include "itkSingleValuedNonLinearOptimizer.h" - -#include "mitkCommon.h" -#include "mitkImageAccessByItk.h" -#include "mitkImageToImageFilter.h" -#include "mitkRigidRegistrationObserver.h" - -#include "itkImageMaskSpatialObject.h" -#include "mitkRigidRegistrationPreset.h" - -namespace mitk -{ - /*! - \brief Main class for the rigid registration pipeline. - - \ingroup RigidRegistration - - \author Daniel Stein - */ - class MITKRIGIDREGISTRATION_EXPORT ImageRegistrationMethod : public ImageToImageFilter - { - public: - typedef itk::SingleValuedNonLinearOptimizer OptimizerType; - typedef itk::ImageMaskSpatialObject<3> MaskType; - - mitkClassMacro(ImageRegistrationMethod, ImageToImageFilter); - - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - static const int LINEARINTERPOLATOR = 0; - static const int NEARESTNEIGHBORINTERPOLATOR = 1; - - void SetObserver(RigidRegistrationObserver::Pointer observer); - - void SetInterpolator(int interpolator); - - virtual void GenerateData() override; - - virtual void SetReferenceImage(Image::Pointer fixedImage); - - virtual void SetFixedMask(Image::Pointer fixedMask); - - virtual void SetMovingMask(Image::Pointer movingMask); - - void SetOptimizerScales(itk::Array scales); - - void SetTransform(itk::Object::Pointer transform); - - void SetMetric(itk::Object::Pointer metric); - - void SetOptimizer(itk::Object::Pointer optimizer); - - void SetNumberOfLevels(unsigned int levels); - - protected: - ImageRegistrationMethod(); - virtual ~ImageRegistrationMethod(); - - friend struct ImageRegistrationMethodAccessFunctor; - - RigidRegistrationObserver::Pointer m_Observer; - int m_Interpolator; - Image::Pointer m_ReferenceImage; - Image::Pointer m_FixedMask; - Image::Pointer m_MovingMask; - - virtual void GenerateOutputInformation() override {} - private: - itk::Object::Pointer m_Transform; - itk::Object::Pointer m_Metric; - itk::Object::Pointer m_Optimizer; - itk::Array m_OptimizerScales; - - unsigned int m_MultiResolutionScales; - }; -} - -#endif // MITKIMAGEREGISTRATIONMETHOD_H diff --git a/Modules/RigidRegistration/mitkImageRegistrationMethodAccessFunctor.h b/Modules/RigidRegistration/mitkImageRegistrationMethodAccessFunctor.h deleted file mode 100644 index 98944aa699..0000000000 --- a/Modules/RigidRegistration/mitkImageRegistrationMethodAccessFunctor.h +++ /dev/null @@ -1,40 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKIMAGEREGISTRATIONMETHODACCESSFUNCTOR_H -#define MITKIMAGEREGISTRATIONMETHODACCESSFUNCTOR_H - -#include - -namespace mitk -{ - class ImageRegistrationMethod; - - struct ImageRegistrationMethodAccessFunctor - { - typedef ImageRegistrationMethodAccessFunctor Self; - - void operator()(const mitk::Image *img, ImageRegistrationMethod *method) - { - AccessByItk_1(img, AccessItkImage, method) - } - - template - void AccessItkImage(const itk::Image *itkImage1, ImageRegistrationMethod *method); - }; -} - -#endif // MITKIMAGEREGISTRATIONMETHODACCESSFUNCTOR_H diff --git a/Modules/RigidRegistration/mitkImageRegistrationMethodAccessFunctor.txx b/Modules/RigidRegistration/mitkImageRegistrationMethodAccessFunctor.txx deleted file mode 100644 index f682dd1610..0000000000 --- a/Modules/RigidRegistration/mitkImageRegistrationMethodAccessFunctor.txx +++ /dev/null @@ -1,177 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkImageRegistrationMethod.h" -#include "mitkImageRegistrationMethodAccessFunctor.h" - -#include - -#include -#include - -namespace mitk -{ - template - void ImageRegistrationMethodAccessFunctor::AccessItkImage(const itk::Image *itkImage1, - ImageRegistrationMethod *method) - { - // convert mitk masks to itk masks - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typedef typename itk::Image MaskImageType; - typedef typename itk::ImageMaskSpatialObject ImageMaskType; - typename ImageMaskType::Pointer movingImageMask; - if (method->m_MovingMask.IsNotNull()) - { - typename MovingImageType::Pointer movingMask = MovingImageType::New(); - mitk::CastToItkImage(method->m_MovingMask, movingMask); - typename itk::CastImageFilter::Pointer maskImageCaster = - itk::CastImageFilter::New(); - maskImageCaster->SetInput(movingMask); - maskImageCaster->UpdateLargestPossibleRegion(); - movingImageMask = ImageMaskType::New(); - movingImageMask->SetImage(maskImageCaster->GetOutput()); - } - - typename ImageMaskType::Pointer fixedImageMask; - if (method->m_FixedMask.IsNotNull()) - { - typename FixedImageType::Pointer fixedMask = FixedImageType::New(); - mitk::CastToItkImage(method->m_FixedMask, fixedMask); - typename itk::CastImageFilter::Pointer maskImageCaster = - itk::CastImageFilter::New(); - maskImageCaster->SetInput(fixedMask); - maskImageCaster->UpdateLargestPossibleRegion(); - fixedImageMask = ImageMaskType::New(); - fixedImageMask->SetImage(maskImageCaster->GetOutput()); - } - - // typedefs - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typedef typename itk::LinearInterpolateImageFunction InterpolatorType; - typedef itk::NearestNeighborInterpolateImageFunction InterpolatorType2; - // typedef typename itk::ImageRegistrationMethod RegistrationType; - typedef typename itk::MultiResolutionImageRegistrationMethod RegistrationType; - typedef typename itk::Transform TransformType; - typedef typename itk::MatrixOffsetTransformBase MatrixTransformType; - typedef typename TransformType::Pointer TransformPointer; - typedef typename itk::ImageToImageMetric MetricType; - typedef typename MetricType::Pointer MetricPointer; - typedef typename itk::SingleValuedNonLinearOptimizer OptimizerType; - // the fixed and the moving image - typename FixedImageType::Pointer fixedImage = FixedImageType::New(); - typename MovingImageType::ConstPointer movingImage = itkImage1; - mitk::CastToItkImage(method->m_ReferenceImage, fixedImage); - - // the metric - MetricPointer metric = dynamic_cast(method->m_Metric.GetPointer()); - if (movingImageMask.IsNotNull()) - metric->SetMovingImageMask(movingImageMask); - if (fixedImageMask.IsNotNull()) - metric->SetFixedImageMask(fixedImageMask); - - // the transform - TransformPointer transform = dynamic_cast(method->m_Transform.GetPointer()); - if (transform.IsNull()) - mitkThrow() << "Failed to retrieve registration transform, dynamic cast failed"; - - // the optimizer - typename OptimizerType::Pointer optimizer = dynamic_cast(method->m_Optimizer.GetPointer()); - - // optimizer scales - if (method->m_OptimizerScales.Size() != 0) - { - typename OptimizerType::ScalesType scales(transform->GetNumberOfParameters()); - for (unsigned int i = 0; i < scales.Size(); i++) - { - scales[i] = method->m_OptimizerScales[i]; - } - optimizer->SetScales(scales); - } - // the registration method - typename RegistrationType::Pointer registration = RegistrationType::New(); - registration->SetNumberOfLevels(method->m_MultiResolutionScales); - registration->SetMetric(metric); - registration->SetOptimizer(optimizer); - registration->SetTransform(transform); - registration->SetFixedImage(fixedImage); - registration->SetMovingImage(movingImage); - registration->SetFixedImageRegion(fixedImage->GetBufferedRegion()); - - // set initial position to identity by first setting the transformation to identity - // and then using its parameters - - typename TransformType::ParametersType identityParameters = transform->GetParameters(); - // the SetIdentity avialable only for a transform subset (of type matrix offset) - MatrixTransformType *matrix_transform = dynamic_cast(method->m_Transform.GetPointer()); - if (matrix_transform != nullptr) - { - matrix_transform->SetIdentity(); - identityParameters = matrix_transform->GetParameters(); - } - - registration->SetInitialTransformParameters(identityParameters); - optimizer->SetInitialPosition(identityParameters); - - if (method->m_Interpolator == ImageRegistrationMethod::LINEARINTERPOLATOR) - { - typename InterpolatorType::Pointer interpolator = InterpolatorType::New(); - registration->SetInterpolator(interpolator); - } - else if (method->m_Interpolator == ImageRegistrationMethod::NEARESTNEIGHBORINTERPOLATOR) - { - typename InterpolatorType2::Pointer interpolator = InterpolatorType2::New(); - registration->SetInterpolator(interpolator); - } - - // registering command observer with the optimizer - unsigned int pyramid_observer_tag = 0; - if (method->m_Observer.IsNotNull()) - { - method->m_Observer->AddStepsToDo(20); - optimizer->AddObserver(itk::IterationEvent(), method->m_Observer); - // registration->AddObserver(itk::IterationEvent(), method->m_Observer); - transform->AddObserver(itk::IterationEvent(), method->m_Observer); - - typename mitk::RigidRegistrationPyramidObserver::Pointer pyramid_observer = - mitk::RigidRegistrationPyramidObserver::New(); - - pyramid_observer_tag = registration->AddObserver(itk::IterationEvent(), pyramid_observer); - } - - registration->Update(); - - if (pyramid_observer_tag) - { - registration->RemoveObserver(pyramid_observer_tag); - } - - if (method->m_Observer.IsNotNull()) - { - optimizer->RemoveAllObservers(); - registration->RemoveAllObservers(); - transform->RemoveAllObservers(); - method->m_Observer->SetRemainingProgress(15); - } - - if (method->m_Observer.IsNotNull()) - { - method->m_Observer->SetRemainingProgress(5); - } - } - -} // end namespace diff --git a/Modules/RigidRegistration/mitkMetricFactory.h b/Modules/RigidRegistration/mitkMetricFactory.h deleted file mode 100644 index c7aa0c40a8..0000000000 --- a/Modules/RigidRegistration/mitkMetricFactory.h +++ /dev/null @@ -1,89 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKMETRICFACTORY_H -#define MITKMETRICFACTORY_H - -#include "itkImage.h" -#include "itkImageMaskSpatialObject.h" -#include "itkImageToImageMetric.h" -#include "mitkMetricParameters.h" - -namespace mitk -{ - /*! - \brief This class creates a metric for a rigid registration process. - - This class will e.g. be instantiated by mitkImageRegistrationMethod and a - metric corresponding to the integer value stored in mitkMetricParameters - will be created. Therefore SetMetricParameters() has to be called with an instance - of mitkMetricParameters, which holds all parameter informations for the new - metric. - - GetMetric() returns the metric which then can be used in combination with a - transform, an optimizer and an interpolator within a registration pipeline. - - - \ingroup RigidRegistration - - \author Daniel Stein - */ - - template - class MetricFactory : public itk::Object - { - public: - mitkClassMacroItkParent(MetricFactory, itk::Object); - - /** Method for creation through the object factory. */ - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - typedef typename itk::Image FixedImageType; - typedef typename itk::Image FixedMaskImageType; - typedef typename itk::ImageMaskSpatialObject FixedImageMaskType; - typedef typename itk::Image MovingImageType; - typedef typename itk::Image MovingMaskImageType; - typedef typename itk::ImageMaskSpatialObject MovingImageMaskType; - - typedef typename itk::ImageToImageMetric MetricType; - typedef typename MetricType::Pointer MetricPointer; - - /** - \brief Returns the metric which then can be used in combination with a transform, an optimizer - and an interpolator within a registration pipeline. - */ - MetricPointer GetMetric(); - - /** - \brief Sets the instance to the metric parameters class which holds all parameters for the new metric. - */ - void SetMetricParameters(MetricParameters::Pointer metricParameters) { m_MetricParameters = metricParameters; } - /** - \brief Returns the instance to the metric parameters class which holds all parameters for the new metric. - */ - MetricParameters::Pointer GetMetricParameters() { return m_MetricParameters; } - protected: - MetricFactory(); - ~MetricFactory(){}; - - MetricParameters::Pointer m_MetricParameters; - }; - -} // namespace mitk - -#include "mitkMetricFactory.txx" - -#endif // MITKMETRICFACTORY_H diff --git a/Modules/RigidRegistration/mitkMetricFactory.txx b/Modules/RigidRegistration/mitkMetricFactory.txx deleted file mode 100644 index 87d489821c..0000000000 --- a/Modules/RigidRegistration/mitkMetricFactory.txx +++ /dev/null @@ -1,196 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkMetricFactory.h" -#include "mitkMetricParameters.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace mitk -{ - template - MetricFactory::MetricFactory() : m_MetricParameters(nullptr) - { - } - - template - typename MetricFactory::MetricPointer - MetricFactory::GetMetric() - { - int metric = m_MetricParameters->GetMetric(); - if (metric == MetricParameters::MEANSQUARESIMAGETOIMAGEMETRIC) - { - typename itk::MeanSquaresImageToImageMetric::Pointer MetricPointer = - itk::MeanSquaresImageToImageMetric::New(); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::NORMALIZEDCORRELATIONIMAGETOIMAGEMETRIC) - { - typename itk::NormalizedCorrelationImageToImageMetric::Pointer MetricPointer = - itk::NormalizedCorrelationImageToImageMetric::New(); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::GRADIENTDIFFERENCEIMAGETOIMAGEMETRIC) - { - typename itk::GradientDifferenceImageToImageMetric::Pointer MetricPointer = - itk::GradientDifferenceImageToImageMetric::New(); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::KULLBACKLEIBLERCOMPAREHISTOGRAMIMAGETOIMAGEMETRIC) - { - typename itk::KullbackLeiblerCompareHistogramImageToImageMetric::Pointer - MetricPointer = itk::KullbackLeiblerCompareHistogramImageToImageMetric::New(); - unsigned int nBins = m_MetricParameters->GetNumberOfHistogramBinsKullbackLeiblerCompareHistogram(); - typename itk::KullbackLeiblerCompareHistogramImageToImageMetric::HistogramType::SizeType - histogramSize; - histogramSize[0] = nBins; - histogramSize[1] = nBins; - MetricPointer->SetHistogramSize(histogramSize); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::CORRELATIONCOEFFICIENTHISTOGRAMIMAGETOIMAGEMETRIC) - { - typename itk::CorrelationCoefficientHistogramImageToImageMetric::Pointer - MetricPointer = itk::CorrelationCoefficientHistogramImageToImageMetric::New(); - unsigned int nBins = m_MetricParameters->GetNumberOfHistogramBinsCorrelationCoefficientHistogram(); - typename itk::CorrelationCoefficientHistogramImageToImageMetric::HistogramType::SizeType - histogramSize; - histogramSize[0] = nBins; - histogramSize[1] = nBins; - MetricPointer->SetHistogramSize(histogramSize); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::MEANSQUARESHISTOGRAMIMAGETOIMAGEMETRIC) - { - typename itk::MeanSquaresHistogramImageToImageMetric::Pointer MetricPointer = - itk::MeanSquaresHistogramImageToImageMetric::New(); - unsigned int nBins = m_MetricParameters->GetNumberOfHistogramBinsMeanSquaresHistogram(); - typename itk::MeanSquaresHistogramImageToImageMetric::HistogramType::SizeType - histogramSize; - histogramSize[0] = nBins; - histogramSize[1] = nBins; - MetricPointer->SetHistogramSize(histogramSize); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::MUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC) - { - typename itk::MutualInformationHistogramImageToImageMetric::Pointer - MetricPointer = itk::MutualInformationHistogramImageToImageMetric::New(); - unsigned int nBins = m_MetricParameters->GetNumberOfHistogramBinsMutualInformationHistogram(); - typename itk::MutualInformationHistogramImageToImageMetric::HistogramType::SizeType - histogramSize; - histogramSize[0] = nBins; - histogramSize[1] = nBins; - MetricPointer->SetHistogramSize(histogramSize); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::NORMALIZEDMUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC) - { - typename itk::NormalizedMutualInformationHistogramImageToImageMetric::Pointer - MetricPointer = - itk::NormalizedMutualInformationHistogramImageToImageMetric::New(); - unsigned int nBins = m_MetricParameters->GetNumberOfHistogramBinsNormalizedMutualInformationHistogram(); - typename itk::NormalizedMutualInformationHistogramImageToImageMetric::HistogramType::SizeType - histogramSize; - histogramSize[0] = nBins; - histogramSize[1] = nBins; - MetricPointer->SetHistogramSize(histogramSize); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::MATTESMUTUALINFORMATIONIMAGETOIMAGEMETRIC) - { - typename itk::MattesMutualInformationImageToImageMetric::Pointer MetricPointer = - itk::MattesMutualInformationImageToImageMetric::New(); - bool useSampling = m_MetricParameters->GetUseSamplesMattesMutualInformation(); - if (useSampling) - { - // set the number of samples to use - MetricPointer->SetNumberOfSpatialSamples(m_MetricParameters->GetSpatialSamplesMattesMutualInformation()); - } - else - { - MetricPointer->UseAllPixelsOn(); - } - MetricPointer->SetNumberOfHistogramBins(m_MetricParameters->GetNumberOfHistogramBinsMattesMutualInformation()); - MetricPointer->ReinitializeSeed(76926294); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::MEANRECIPROCALSQUAREDIFFERENCEIMAGETOIMAGEMETRIC) - { - typename itk::MeanReciprocalSquareDifferenceImageToImageMetric::Pointer - MetricPointer = itk::MeanReciprocalSquareDifferenceImageToImageMetric::New(); - //------------------------------------------------------------ - // The lambda value is the intensity difference that should - // make the metric drop by 50% - //------------------------------------------------------------ - MetricPointer->SetLambda(m_MetricParameters->GetLambdaMeanReciprocalSquareDifference()); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::MUTUALINFORMATIONIMAGETOIMAGEMETRIC) - { - typename itk::MutualInformationImageToImageMetric::Pointer MetricPointer = - itk::MutualInformationImageToImageMetric::New(); - MetricPointer->SetNumberOfSpatialSamples(m_MetricParameters->GetSpatialSamplesMutualInformation()); - MetricPointer->SetFixedImageStandardDeviation( - m_MetricParameters->GetFixedImageStandardDeviationMutualInformation()); - MetricPointer->SetMovingImageStandardDeviation( - m_MetricParameters->GetMovingImageStandardDeviationMutualInformation()); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::MATCHCARDINALITYIMAGETOIMAGEMETRIC) - { - typename itk::MatchCardinalityImageToImageMetric::Pointer MetricPointer = - itk::MatchCardinalityImageToImageMetric::New(); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - else if (metric == MetricParameters::KAPPASTATISTICIMAGETOIMAGEMETRIC) - { - typename itk::KappaStatisticImageToImageMetric::Pointer MetricPointer = - itk::KappaStatisticImageToImageMetric::New(); - MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient()); - return MetricPointer.GetPointer(); - } - return NULL; - } -} // end namespace diff --git a/Modules/RigidRegistration/mitkMetricParameters.cpp b/Modules/RigidRegistration/mitkMetricParameters.cpp deleted file mode 100644 index aa1c211bf5..0000000000 --- a/Modules/RigidRegistration/mitkMetricParameters.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkMetricParameters.h" - -namespace mitk -{ - MetricParameters::MetricParameters() - : m_Metric(MEANSQUARESIMAGETOIMAGEMETRIC), - m_ComputeGradient(true), - // for itk::KullbackLeiblerCompareHistogramImageToImageMetric - m_NumberOfHistogramBinsKullbackLeiblerCompareHistogram(256), - // for itk::CorrelationCoefficientHistogramImageToImageMetric - m_NumberOfHistogramBinsCorrelationCoefficientHistogram(256), - // for itk::MeanSquaresHistogramImageToImageMetric - m_NumberOfHistogramBinsMeanSquaresHistogram(256), - // for itk::MutualInformationHistogramImageToImageMetric - m_NumberOfHistogramBinsMutualInformationHistogram(256), - // for itk::NormalizedMutualInformationHistogramImageToImageMetric - m_NumberOfHistogramBinsNormalizedMutualInformationHistogram(256), - // for itk::MattesMutualInformationImageToImageMetric - m_NumberOfHistogramBinsMattesMutualInformation(256), - m_UseSamplesMattesMutualInformation(true), - m_SpatialSamplesMattesMutualInformation(500), - // for itk::MeanReciprocalSquareDifferenceImageToImageMetric - m_LambdaMeanReciprocalSquareDifference(10), - // for itk::MutualInformationImageToImageMetric - m_SpatialSamplesMutualInformation(100), - m_FixedImageStandardDeviationMutualInformation(0.4), - m_MovingImageStandardDeviationMutualInformation(0.4), - m_UseNormalizerAndSmootherMutualInformation(true), - m_FixedSmootherVarianceMutualInformation(0.2), - m_MovingSmootherVarianceMutualInformation(0.2) - { - } -} // namespace mitk diff --git a/Modules/RigidRegistration/mitkMetricParameters.h b/Modules/RigidRegistration/mitkMetricParameters.h deleted file mode 100644 index 56cab57c2a..0000000000 --- a/Modules/RigidRegistration/mitkMetricParameters.h +++ /dev/null @@ -1,268 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKMETRICPARAMETERS_H -#define MITKMETRICPARAMETERS_H - -#include "MitkRigidRegistrationExports.h" -#include "mitkCommon.h" -#include - -namespace mitk -{ - /*! - \brief This class is used to hold all metric parameters needed for a rigid registration process. - - To use the rigid registration framework you have to create an instance of this class and fill it with the parameters - belonging to the selected metric. To let the rigid registration work properly, this instance has to be given - to mitkImageRegistrationMethod before calling the update() method in mitkImageRegistrationMethod. - - Also instances of the classes mitkTransformParameters and mitkOptimizerParameters have to be set in - mitkImageRegistrationMethod - before calling the update() method. - - - \ingroup RigidRegistration - - \author Daniel Stein - */ - class MITKRIGIDREGISTRATION_EXPORT MetricParameters : public itk::Object - { - public: - mitkClassMacroItkParent(MetricParameters, ::itk::Object); - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - /** - \brief Unique integer value for every metric. - */ - enum MetricType { - MEANSQUARESIMAGETOIMAGEMETRIC = 0, - NORMALIZEDCORRELATIONIMAGETOIMAGEMETRIC = 1, - GRADIENTDIFFERENCEIMAGETOIMAGEMETRIC = 2, - KULLBACKLEIBLERCOMPAREHISTOGRAMIMAGETOIMAGEMETRIC = 3, - CORRELATIONCOEFFICIENTHISTOGRAMIMAGETOIMAGEMETRIC = 4, - MEANSQUARESHISTOGRAMIMAGETOIMAGEMETRIC = 5, - MUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC = 6, - NORMALIZEDMUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC = 7, - MATTESMUTUALINFORMATIONIMAGETOIMAGEMETRIC = 8, - MEANRECIPROCALSQUAREDIFFERENCEIMAGETOIMAGEMETRIC = 9, - MUTUALINFORMATIONIMAGETOIMAGEMETRIC = 10, - MATCHCARDINALITYIMAGETOIMAGEMETRIC = 11, - KAPPASTATISTICIMAGETOIMAGEMETRIC = 12 - }; - - /** - \brief Sets the metric used for registration by its unique integer value. - */ - itkSetMacro(Metric, int); - /** - \brief Returns the metric used for registration by its unique integer value. - */ - itkGetMacro(Metric, int); - - /** - \brief Sets whether a gradient image has to be computed. Some optimizer need this. - */ - itkSetMacro(ComputeGradient, bool); - /** - \brief Returns whether a gradient image has to be computed. - */ - itkGetMacro(ComputeGradient, bool); - - /** - \brief for itk::KullbackLeiblerCompareHistogramImageToImageMetric - */ - itkSetMacro(NumberOfHistogramBinsKullbackLeiblerCompareHistogram, unsigned int); - - /** - \brief for itk::KullbackLeiblerCompareHistogramImageToImageMetric - */ - itkGetMacro(NumberOfHistogramBinsKullbackLeiblerCompareHistogram, unsigned int); - - /** - \brief for itk::CorrelationCoefficientHistogramImageToImageMetric - */ - itkSetMacro(NumberOfHistogramBinsCorrelationCoefficientHistogram, unsigned int); - - /** - \brief for itk::CorrelationCoefficientHistogramImageToImageMetric - */ - itkGetMacro(NumberOfHistogramBinsCorrelationCoefficientHistogram, unsigned int); - - /** - \brief for itk::MeanSquaresHistogramImageToImageMetric - */ - itkSetMacro(NumberOfHistogramBinsMeanSquaresHistogram, unsigned int); - - /** - \brief for itk::MeanSquaresHistogramImageToImageMetric - */ - itkGetMacro(NumberOfHistogramBinsMeanSquaresHistogram, unsigned int); - - /** - \brief for itk::MutualInformationHistogramImageToImageMetric - */ - itkSetMacro(NumberOfHistogramBinsMutualInformationHistogram, unsigned int); - - /** - \brief for itk::MutualInformationHistogramImageToImageMetric - */ - itkGetMacro(NumberOfHistogramBinsMutualInformationHistogram, unsigned int); - - /** - \brief for itk::NormalizedMutualInformationHistogramImageToImageMetric - */ - itkSetMacro(NumberOfHistogramBinsNormalizedMutualInformationHistogram, unsigned int); - - /** - \brief for itk::NormalizedMutualInformationHistogramImageToImageMetric - */ - itkGetMacro(NumberOfHistogramBinsNormalizedMutualInformationHistogram, unsigned int); - - /** - \brief for itk::MattesMutualInformationImageToImageMetric - */ - itkSetMacro(SpatialSamplesMattesMutualInformation, unsigned int); - - /** - \brief for itk::MattesMutualInformationImageToImageMetric - */ - itkGetMacro(SpatialSamplesMattesMutualInformation, unsigned int); - - /** - \brief for itk::MattesMutualInformationImageToImageMetric - */ - itkSetMacro(UseSamplesMattesMutualInformation, bool); - - /** - \brief for itk::MattesMutualInformationImageToImageMetric - */ - itkGetMacro(UseSamplesMattesMutualInformation, bool); - - /** - \brief for itk::MattesMutualInformationImageToImageMetric - */ - itkSetMacro(NumberOfHistogramBinsMattesMutualInformation, unsigned int); - - /** - \brief for itk::MattesMutualInformationImageToImageMetric - */ - itkGetMacro(NumberOfHistogramBinsMattesMutualInformation, unsigned int); - - /** - \brief for itk::MeanReciprocalSquareDifferenceImageToImageMetric - */ - itkSetMacro(LambdaMeanReciprocalSquareDifference, unsigned int); - - /** - \brief for itk::MeanReciprocalSquareDifferenceImageToImageMetric - */ - itkGetMacro(LambdaMeanReciprocalSquareDifference, unsigned int); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkSetMacro(SpatialSamplesMutualInformation, unsigned int); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkGetMacro(SpatialSamplesMutualInformation, unsigned int); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkSetMacro(FixedImageStandardDeviationMutualInformation, float); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkGetMacro(FixedImageStandardDeviationMutualInformation, float); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkSetMacro(MovingImageStandardDeviationMutualInformation, float); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkGetMacro(MovingImageStandardDeviationMutualInformation, float); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkSetMacro(UseNormalizerAndSmootherMutualInformation, bool); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkGetMacro(UseNormalizerAndSmootherMutualInformation, bool); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkSetMacro(FixedSmootherVarianceMutualInformation, float); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkGetMacro(FixedSmootherVarianceMutualInformation, float); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkSetMacro(MovingSmootherVarianceMutualInformation, float); - - /** - \brief for itk::MutualInformationImageToImageMetric - */ - itkGetMacro(MovingSmootherVarianceMutualInformation, float); - - protected: - MetricParameters(); - ~MetricParameters(){}; - - int m_Metric; - bool m_ComputeGradient; - // for itk::KullbackLeiblerCompareHistogramImageToImageMetric - unsigned int m_NumberOfHistogramBinsKullbackLeiblerCompareHistogram; - // for itk::CorrelationCoefficientHistogramImageToImageMetric - unsigned int m_NumberOfHistogramBinsCorrelationCoefficientHistogram; - // for itk::MeanSquaresHistogramImageToImageMetric - unsigned int m_NumberOfHistogramBinsMeanSquaresHistogram; - // for itk::MutualInformationHistogramImageToImageMetric - unsigned int m_NumberOfHistogramBinsMutualInformationHistogram; - // for itk::NormalizedMutualInformationHistogramImageToImageMetric - unsigned int m_NumberOfHistogramBinsNormalizedMutualInformationHistogram; - // for itk::MattesMutualInformationImageToImageMetric - unsigned int m_NumberOfHistogramBinsMattesMutualInformation; - bool m_UseSamplesMattesMutualInformation; - unsigned int m_SpatialSamplesMattesMutualInformation; - // for itk::MeanReciprocalSquareDifferenceImageToImageMetric - unsigned int m_LambdaMeanReciprocalSquareDifference; - // for itk::MutualInformationImageToImageMetric - unsigned int m_SpatialSamplesMutualInformation; - float m_FixedImageStandardDeviationMutualInformation; - float m_MovingImageStandardDeviationMutualInformation; - bool m_UseNormalizerAndSmootherMutualInformation; - float m_FixedSmootherVarianceMutualInformation; - float m_MovingSmootherVarianceMutualInformation; - }; - -} // namespace mitk - -#endif // MITKMETRICPARAMETERS_H diff --git a/Modules/RigidRegistration/mitkOptimizerFactory.cpp b/Modules/RigidRegistration/mitkOptimizerFactory.cpp deleted file mode 100644 index d063c7233f..0000000000 --- a/Modules/RigidRegistration/mitkOptimizerFactory.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkOptimizerFactory.h" -#include "mitkOptimizerParameters.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace mitk -{ - OptimizerFactory::OptimizerFactory() : m_OptimizerParameters(nullptr), m_NumberTransformParameters(16) {} - OptimizerFactory::~OptimizerFactory() {} - void OptimizerFactory::SetNumberOfTransformParameters(int numberTransformParameters) - { - m_NumberTransformParameters = numberTransformParameters; - } - - OptimizerFactory::OptimizerType::Pointer OptimizerFactory::GetOptimizer() - { - if (m_OptimizerParameters.IsNull()) - { - MITK_ERROR << "No parameters set! Returning\n"; - return nullptr; - } - int optimizer = m_OptimizerParameters->GetOptimizer(); - if (optimizer == OptimizerParameters::EXHAUSTIVEOPTIMIZER) - { - itk::ExhaustiveOptimizer::Pointer OptimizerPointer = itk::ExhaustiveOptimizer::New(); - OptimizerPointer->SetStepLength(m_OptimizerParameters->GetStepLengthExhaustive()); - itk::ExhaustiveOptimizer::StepsType steps(m_NumberTransformParameters); - for (int i = 0; i < m_NumberTransformParameters; i++) - { - steps[i] = m_OptimizerParameters->GetNumberOfStepsExhaustive(); - } - - OptimizerPointer->SetNumberOfSteps(steps); - - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::GRADIENTDESCENTOPTIMIZER) - { - itk::GradientDescentOptimizer::Pointer OptimizerPointer = itk::GradientDescentOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - OptimizerPointer->SetLearningRate(m_OptimizerParameters->GetLearningRateGradientDescent()); - OptimizerPointer->SetNumberOfIterations(m_OptimizerParameters->GetNumberOfIterationsGradientDescent()); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::QUATERNIONRIGIDTRANSFORMGRADIENTDESCENTOPTIMIZER) - { - itk::QuaternionRigidTransformGradientDescentOptimizer::Pointer OptimizerPointer = - itk::QuaternionRigidTransformGradientDescentOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - OptimizerPointer->SetLearningRate( - m_OptimizerParameters->GetLearningRateQuaternionRigidTransformGradientDescent()); - OptimizerPointer->SetNumberOfIterations( - m_OptimizerParameters->GetNumberOfIterationsQuaternionRigidTransformGradientDescent()); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::LBFGSBOPTIMIZER) - { - itk::LBFGSBOptimizer::Pointer OptimizerPointer = itk::LBFGSBOptimizer::New(); - // Set up boundary conditions - itk::LBFGSBOptimizer::BoundValueType lower(12); - itk::LBFGSBOptimizer::BoundValueType upper(12); - itk::LBFGSBOptimizer::BoundSelectionType select(12); - - lower.Fill(-1); - upper.Fill(10); - select.Fill(2); - - OptimizerPointer->SetLowerBound(lower); - OptimizerPointer->SetUpperBound(upper); - OptimizerPointer->SetBoundSelection(select); - OptimizerPointer->SetCostFunctionConvergenceFactor(1e+1); - OptimizerPointer->SetMaximumNumberOfCorrections(5); - OptimizerPointer->SetProjectedGradientTolerance(1e-5); - OptimizerPointer->SetMaximumNumberOfEvaluations(500); - OptimizerPointer->SetMaximumNumberOfIterations(200); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::ONEPLUSONEEVOLUTIONARYOPTIMIZER) - { - itk::OnePlusOneEvolutionaryOptimizer::Pointer OptimizerPointer = itk::OnePlusOneEvolutionaryOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - itk::Statistics::NormalVariateGenerator::Pointer generator = itk::Statistics::NormalVariateGenerator::New(); - generator->Initialize(12345); - OptimizerPointer->SetNormalVariateGenerator(generator); - OptimizerPointer->SetGrowthFactor(m_OptimizerParameters->GetGrowthFactorOnePlusOneEvolutionary()); - OptimizerPointer->SetShrinkFactor(m_OptimizerParameters->GetShrinkFactorOnePlusOneEvolutionary()); - OptimizerPointer->SetEpsilon(m_OptimizerParameters->GetEpsilonOnePlusOneEvolutionary()); - OptimizerPointer->SetInitialRadius(m_OptimizerParameters->GetInitialRadiusOnePlusOneEvolutionary()); - OptimizerPointer->SetMaximumIteration(m_OptimizerParameters->GetNumberOfIterationsOnePlusOneEvolutionary()); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::POWELLOPTIMIZER) - { - itk::PowellOptimizer::Pointer OptimizerPointer = itk::PowellOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - OptimizerPointer->SetStepLength(m_OptimizerParameters->GetStepLengthPowell()); - OptimizerPointer->SetStepTolerance(m_OptimizerParameters->GetStepTolerancePowell()); - OptimizerPointer->SetValueTolerance(m_OptimizerParameters->GetValueTolerancePowell()); - OptimizerPointer->SetMaximumIteration(m_OptimizerParameters->GetNumberOfIterationsPowell()); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::FRPROPTIMIZER) - { - itk::FRPROptimizer::Pointer OptimizerPointer = itk::FRPROptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - OptimizerPointer->SetStepLength(m_OptimizerParameters->GetStepLengthFRPR()); - if (m_OptimizerParameters->GetFletchReevesFRPR()) - { - OptimizerPointer->SetToFletchReeves(); - } - else if (m_OptimizerParameters->GetPolakRibiereFRPR()) - { - OptimizerPointer->SetToPolakRibiere(); - } - OptimizerPointer->SetMaximumIteration(m_OptimizerParameters->GetNumberOfIterationsFRPR()); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::REGULARSTEPGRADIENTDESCENTOPTIMIZER) - { - itk::RegularStepGradientDescentOptimizer::Pointer OptimizerPointer = - itk::RegularStepGradientDescentOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - OptimizerPointer->SetGradientMagnitudeTolerance( - m_OptimizerParameters->GetGradientMagnitudeToleranceRegularStepGradientDescent()); - OptimizerPointer->SetMinimumStepLength(m_OptimizerParameters->GetMinimumStepLengthRegularStepGradientDescent()); - OptimizerPointer->SetMaximumStepLength(m_OptimizerParameters->GetMaximumStepLengthRegularStepGradientDescent()); - OptimizerPointer->SetNumberOfIterations(m_OptimizerParameters->GetNumberOfIterationsRegularStepGradientDescent()); - OptimizerPointer->SetRelaxationFactor(m_OptimizerParameters->GetRelaxationFactorRegularStepGradientDescent()); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::VERSORRIGID3DTRANSFORMOPTIMIZER) - { - itk::VersorRigid3DTransformOptimizer::Pointer OptimizerPointer = itk::VersorRigid3DTransformOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - OptimizerPointer->SetGradientMagnitudeTolerance( - m_OptimizerParameters->GetGradientMagnitudeToleranceVersorRigid3DTransform()); - OptimizerPointer->SetMinimumStepLength(m_OptimizerParameters->GetMinimumStepLengthVersorRigid3DTransform()); - OptimizerPointer->SetMaximumStepLength(m_OptimizerParameters->GetMaximumStepLengthVersorRigid3DTransform()); - OptimizerPointer->SetNumberOfIterations(m_OptimizerParameters->GetNumberOfIterationsVersorRigid3DTransform()); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::VERSORTRANSFORMOPTIMIZER) - { - itk::VersorTransformOptimizer::Pointer OptimizerPointer = itk::VersorTransformOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - OptimizerPointer->SetGradientMagnitudeTolerance( - m_OptimizerParameters->GetGradientMagnitudeToleranceVersorTransform()); - OptimizerPointer->SetMinimumStepLength(m_OptimizerParameters->GetMinimumStepLengthVersorTransform()); - OptimizerPointer->SetMaximumStepLength(m_OptimizerParameters->GetMaximumStepLengthVersorTransform()); - OptimizerPointer->SetNumberOfIterations(m_OptimizerParameters->GetNumberOfIterationsVersorTransform()); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::AMOEBAOPTIMIZER) - { - itk::AmoebaOptimizer::Pointer OptimizerPointer = itk::AmoebaOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - OptimizerPointer->SetParametersConvergenceTolerance( - m_OptimizerParameters->GetParametersConvergenceToleranceAmoeba()); - OptimizerPointer->SetFunctionConvergenceTolerance(m_OptimizerParameters->GetFunctionConvergenceToleranceAmoeba()); - itk::Array simplexDeltaAmoeba = m_OptimizerParameters->GetSimplexDeltaAmoeba(); - OptimizerType::ParametersType simplexDelta(m_NumberTransformParameters); - for (int i = 0; i < m_NumberTransformParameters; i++) - { - simplexDelta[i] = simplexDeltaAmoeba[i]; - } - OptimizerPointer->AutomaticInitialSimplexOff(); - OptimizerPointer->SetInitialSimplexDelta(simplexDelta); - OptimizerPointer->SetMaximumNumberOfIterations(m_OptimizerParameters->GetNumberOfIterationsAmoeba()); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::CONJUGATEGRADIENTOPTIMIZER) - { - itk::ConjugateGradientOptimizer::Pointer OptimizerPointer = itk::ConjugateGradientOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - /*typedef itk::ConjugateGradientOptimizer::InternalOptimizerType vnlOptimizerType; - vnlOptimizerType * vnlOptimizer = OptimizerPointer->GetOptimizer(); - vnlOptimizer->set_f_tolerance( 1e-3 ); - vnlOptimizer->set_g_tolerance( 1e-4 ); - vnlOptimizer->set_x_tolerance( 1e-8 ); - vnlOptimizer->set_epsilon_function( 1e-10 ); - vnlOptimizer->set_max_function_evals( m_Iterations ); - vnlOptimizer->set_check_derivatives( 3 );*/ - - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::LBFGSOPTIMIZER) - { - itk::LBFGSOptimizer::Pointer OptimizerPointer = itk::LBFGSOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - OptimizerPointer->SetGradientConvergenceTolerance(m_OptimizerParameters->GetGradientConvergenceToleranceLBFGS()); - OptimizerPointer->SetLineSearchAccuracy(m_OptimizerParameters->GetLineSearchAccuracyLBFGS()); - OptimizerPointer->SetDefaultStepLength(m_OptimizerParameters->GetDefaultStepLengthLBFGS()); - OptimizerPointer->SetTrace(m_OptimizerParameters->GetTraceOnLBFGS()); - OptimizerPointer->SetMaximumNumberOfFunctionEvaluations(m_OptimizerParameters->GetNumberOfIterationsLBFGS()); - return OptimizerPointer.GetPointer(); - } - else if (optimizer == OptimizerParameters::SPSAOPTIMIZER) - { - itk::SPSAOptimizer::Pointer OptimizerPointer = itk::SPSAOptimizer::New(); - OptimizerPointer->SetMaximize(m_OptimizerParameters->GetMaximize()); - OptimizerPointer->Seta(m_OptimizerParameters->GetaSPSA()); - OptimizerPointer->SetA(m_OptimizerParameters->GetASPSA()); - OptimizerPointer->SetAlpha(m_OptimizerParameters->GetAlphaSPSA()); - OptimizerPointer->Setc(m_OptimizerParameters->GetcSPSA()); - OptimizerPointer->SetGamma(m_OptimizerParameters->GetGammaSPSA()); - OptimizerPointer->SetTolerance(m_OptimizerParameters->GetToleranceSPSA()); - OptimizerPointer->SetStateOfConvergenceDecayRate(m_OptimizerParameters->GetStateOfConvergenceDecayRateSPSA()); - OptimizerPointer->SetMinimumNumberOfIterations(m_OptimizerParameters->GetMinimumNumberOfIterationsSPSA()); - OptimizerPointer->SetNumberOfPerturbations(m_OptimizerParameters->GetNumberOfPerturbationsSPSA()); - OptimizerPointer->SetMaximumNumberOfIterations(m_OptimizerParameters->GetNumberOfIterationsSPSA()); - return OptimizerPointer.GetPointer(); - } - return nullptr; - } -} // end namespace diff --git a/Modules/RigidRegistration/mitkOptimizerFactory.h b/Modules/RigidRegistration/mitkOptimizerFactory.h deleted file mode 100644 index dfa77ba65b..0000000000 --- a/Modules/RigidRegistration/mitkOptimizerFactory.h +++ /dev/null @@ -1,86 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKOPTIMIZERFACTORY_H -#define MITKOPTIMIZERFACTORY_H - -#include "MitkRigidRegistrationExports.h" -#include "itkSingleValuedNonLinearOptimizer.h" -#include "mitkOptimizerParameters.h" - -namespace mitk -{ - /*! - \brief This class creates an optimizer for a rigid registration process. - - This class will e.g. be instantiated by mitkImageRegistrationMethod and an - optimizer corresponding to the integer value stored in mitkOptimizerParameters - will be created. Therefore SetOptimizerParameters() has to be called with an instance - of mitkOptimizerParameters, which holds all parameter informations for the new - optimizer. - - GetOptimizer() returns the optimizer which then can be used in combination with a - transform, a metric and an interpolator within a registration pipeline. - - - \ingroup RigidRegistration - - \author Daniel Stein - */ - - class MITKRIGIDREGISTRATION_EXPORT OptimizerFactory : public ::itk::Object - { - public: - mitkClassMacroItkParent(OptimizerFactory, itk::Object); - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - typedef itk::SingleValuedNonLinearOptimizer OptimizerType; - - /** - \brief Returns the optimizer which then can be used in combination with a transform, a metric - and an interpolator within a registration pipeline. - */ - OptimizerType::Pointer GetOptimizer(); - - /** - \brief Sets the number of transformParameters. - */ - void SetNumberOfTransformParameters(int numberTransformParameters); - - /** - \brief Sets the instance to the optimizer parameters class which holds all parameters for the new optimizer. - */ - void SetOptimizerParameters(OptimizerParameters::Pointer optimizerParameters) - { - m_OptimizerParameters = optimizerParameters; - } - - /** - \brief Returns the instance to the optimizer parameters class which holds all parameters for the new optimizer. - */ - OptimizerParameters::Pointer GetOptimizerParameters() { return m_OptimizerParameters; } - protected: - OptimizerFactory(); - ~OptimizerFactory(); - - private: - OptimizerParameters::Pointer m_OptimizerParameters; - int m_NumberTransformParameters; - }; - -} // namespace mitk - -#endif // MITKOPTIMIZERFACTORY_H diff --git a/Modules/RigidRegistration/mitkOptimizerParameters.cpp b/Modules/RigidRegistration/mitkOptimizerParameters.cpp deleted file mode 100644 index 593f2e747c..0000000000 --- a/Modules/RigidRegistration/mitkOptimizerParameters.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkOptimizerParameters.h" - -namespace mitk -{ - OptimizerParameters::OptimizerParameters() - : m_Optimizer(EXHAUSTIVEOPTIMIZER), - // for all Optimizer - m_Dimension(2), - m_Maximize(false), - - // for itk::ExhaustiveOptimizer - m_StepLengthExhaustive(1.0), - m_NumberOfStepsExhaustive(10), - - // for itk::GradientDescentOptimizer - m_LearningRateGradientDescent(0.01), - m_NumberOfIterationsGradientDescent(200), - - // for itk::QuaternionRigidTransformGradientDescentOptimizer - m_LearningRateQuaternionRigidTransformGradientDescent(0.01), - m_NumberOfIterationsQuaternionRigidTransformGradientDescent(200), - - // for itk::LBFGSBOptimizer - - // for itk::OnePlusOneEvolutionaryOptimizer - m_GrowthFactorOnePlusOneEvolutionary(0.01), - m_ShrinkFactorOnePlusOneEvolutionary(0.001), - m_EpsilonOnePlusOneEvolutionary(2), - m_InitialRadiusOnePlusOneEvolutionary(1), - m_NumberOfIterationsOnePlusOneEvolutionary(200), - - // for itk::PowellOptimizer - m_StepLengthPowell(0.01), - m_StepTolerancePowell(0.001), - m_ValueTolerancePowell(0.001), - m_NumberOfIterationsPowell(200), - - // for itk::FRPROptimizer - m_StepLengthFRPR(0.01), - m_FletchReevesFRPR(true), - m_PolakRibiereFRPR(false), - m_NumberOfIterationsFRPR(200), - - // for itk::RegularStepGradientDescentOptimizer - m_GradientMagnitudeToleranceRegularStepGradientDescent(0.0001), - m_MinimumStepLengthRegularStepGradientDescent(0.001), - m_MaximumStepLengthRegularStepGradientDescent(1.0), - m_NumberOfIterationsRegularStepGradientDescent(100), - m_RelaxationFactorRegularStepGradientDescent(0.5), - - // for itk::VersorRigid3DTransformOptimizer - m_GradientMagnitudeToleranceVersorRigid3DTransform(0.0001), - m_MinimumStepLengthVersorRigid3DTransform(0.0001), - m_MaximumStepLengthVersorRigid3DTransform(4.0), - m_NumberOfIterationsVersorRigid3DTransform(200), - - // for itk::VersorTransformOptimizer - m_GradientMagnitudeToleranceVersorTransform(0.0001), - m_MinimumStepLengthVersorTransform(0.0001), - m_MaximumStepLengthVersorTransform(4.0), - m_NumberOfIterationsVersorTransform(200), - - // for itk::AmoebaOptimizer - m_ParametersConvergenceToleranceAmoeba(0.01), - m_FunctionConvergenceToleranceAmoeba(0.001), - m_NumberOfIterationsAmoeba(200), - - // for itk::ConjugateGradientOptimizer - - // for itk::LBFGSOptimizer - m_GradientConvergenceToleranceLBFGS(0.01), - m_LineSearchAccuracyLBFGS(0.01), - m_DefaultStepLengthLBFGS(0.01), - m_TraceOnLBFGS(true), - m_NumberOfIterationsLBFGS(200), - - // for itk::SPSAOptimizer - m_aSPSA(1.0), - m_ASPSA(10.0), - m_AlphaSPSA(0.602), - m_cSPSA(0.0001), - m_GammaSPSA(0.101), - m_ToleranceSPSA(1e-5), - m_StateOfConvergenceDecayRateSPSA(0.5), - m_MinimumNumberOfIterationsSPSA(10), - m_NumberOfPerturbationsSPSA(1), - m_NumberOfIterationsSPSA(200) - { - // for itk::AmoebaOptimizer - m_SimplexDeltaAmoeba.SetSize(16); - m_SimplexDeltaAmoeba.Fill(5.0); - } - - /********************************** for itk::AmoebaOptimizer ****************************************/ - - void OptimizerParameters::SetSimplexDeltaAmoeba(itk::Array simplexDelta) - { - m_SimplexDeltaAmoeba = simplexDelta; - } - - itk::Array OptimizerParameters::GetSimplexDeltaAmoeba() { return m_SimplexDeltaAmoeba; } -} // namespace mitk diff --git a/Modules/RigidRegistration/mitkOptimizerParameters.h b/Modules/RigidRegistration/mitkOptimizerParameters.h deleted file mode 100644 index 8bae839d43..0000000000 --- a/Modules/RigidRegistration/mitkOptimizerParameters.h +++ /dev/null @@ -1,700 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKOPTIMIZERPARAMETERS_H -#define MITKOPTIMIZERPARAMETERS_H - -#include "MitkRigidRegistrationExports.h" -#include "mitkCommon.h" -#include -#include - -namespace mitk -{ - /*! - \brief This class is used to hold all optimizer parameters needed for a rigid registration process. - - To use the rigid registration framework you have to create an instance of this class and fill it with the parameters - belonging to the selected optimizer. To let the rigid registration work properly, this instance has to be given - to mitkImageRegistrationMethod before calling the update() method in mitkImageRegistrationMethod. - - Also instances of the classes mitkTransformParameters and mitkMetricParameters have to be set in - mitkImageRegistrationMethod - before calling the update() method. - - \ingroup RigidRegistration - - \author Daniel Stein - */ - class MITKRIGIDREGISTRATION_EXPORT OptimizerParameters : public ::itk::Object - { - public: - mitkClassMacroItkParent(OptimizerParameters, ::itk::Object); - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - /** - \brief Unique integer value for every optimizer. - */ - enum OptimizerType { - EXHAUSTIVEOPTIMIZER = 0, - GRADIENTDESCENTOPTIMIZER = 1, - QUATERNIONRIGIDTRANSFORMGRADIENTDESCENTOPTIMIZER = 2, - LBFGSBOPTIMIZER = 3, - ONEPLUSONEEVOLUTIONARYOPTIMIZER = 4, - POWELLOPTIMIZER = 5, - FRPROPTIMIZER = 6, - REGULARSTEPGRADIENTDESCENTOPTIMIZER = 7, - VERSORTRANSFORMOPTIMIZER = 8, - AMOEBAOPTIMIZER = 9, - CONJUGATEGRADIENTOPTIMIZER = 10, - LBFGSOPTIMIZER = 11, - SPSAOPTIMIZER = 12, - VERSORRIGID3DTRANSFORMOPTIMIZER = 13 - }; - - /** - \brief Sets the optimizer used for registration by its unique integer value. - */ - itkSetMacro(Optimizer, int); - /** - \brief Returns the optimizer used for registration by its unique integer value. - */ - itkGetMacro(Optimizer, int); - - /** - \brief Sets the images dimension which have to be registered. - */ - itkSetMacro(Dimension, unsigned int); - - /** - \brief Returns the images dimension which have to be registered. - */ - itkGetMacro(Dimension, unsigned int); - - /** - \brief Sets whether the optimizer should maximize or minimize the metrics value. - */ - itkSetMacro(Maximize, bool); - - /** - \brief Returns whether the optimizer should maximize or minimize the metrics value. - */ - itkGetMacro(Maximize, bool); - - /** - \brief for itk::ExhaustiveOptimizer - */ - itkSetMacro(StepLengthExhaustive, float); - - /** - \brief for itk::ExhaustiveOptimizer - */ - itkGetMacro(StepLengthExhaustive, float); - - /** - \brief for itk::ExhaustiveOptimizer - */ - itkSetMacro(NumberOfStepsExhaustive, int); - - /** - \brief for itk::ExhaustiveOptimizer - */ - itkGetMacro(NumberOfStepsExhaustive, int); - - /** - \brief for itk::GradientDescentOptimizer - */ - itkSetMacro(LearningRateGradientDescent, float); - - /** - \brief for itk::GradientDescentOptimizer - */ - itkGetMacro(LearningRateGradientDescent, float); - - /** - \brief for itk::GradientDescentOptimizer - */ - itkSetMacro(NumberOfIterationsGradientDescent, int); - - /** - \brief for itk::GradientDescentOptimizer - */ - itkGetMacro(NumberOfIterationsGradientDescent, int); - - /** - \brief for itk::QuaternionRigidTransformGradientDescentOptimizer - */ - itkSetMacro(LearningRateQuaternionRigidTransformGradientDescent, float); - - /** - \brief for itk::QuaternionRigidTransformGradientDescentOptimizer - */ - itkGetMacro(LearningRateQuaternionRigidTransformGradientDescent, float); - - /** - \brief for itk::QuaternionRigidTransformGradientDescentOptimizer - */ - itkSetMacro(NumberOfIterationsQuaternionRigidTransformGradientDescent, int); - - /** - \brief for itk::QuaternionRigidTransformGradientDescentOptimizer - */ - itkGetMacro(NumberOfIterationsQuaternionRigidTransformGradientDescent, int); - - /** - \brief for itk::OnePlusOneEvolutionaryOptimizer - */ - itkSetMacro(GrowthFactorOnePlusOneEvolutionary, float); - - /** - \brief for itk::OnePlusOneEvolutionaryOptimizer - */ - itkGetMacro(GrowthFactorOnePlusOneEvolutionary, float); - - /** - \brief for itk::OnePlusOneEvolutionaryOptimizer - */ - itkSetMacro(ShrinkFactorOnePlusOneEvolutionary, float); - - /** - \brief for itk::OnePlusOneEvolutionaryOptimizer - */ - itkGetMacro(ShrinkFactorOnePlusOneEvolutionary, float); - - /** - \brief for itk::OnePlusOneEvolutionaryOptimizer - */ - itkSetMacro(EpsilonOnePlusOneEvolutionary, float); - - /** - \brief for itk::OnePlusOneEvolutionaryOptimizer - */ - itkGetMacro(EpsilonOnePlusOneEvolutionary, float); - - /** - \brief for itk::OnePlusOneEvolutionaryOptimizer - */ - itkSetMacro(InitialRadiusOnePlusOneEvolutionary, float); - - /** - \brief for itk::OnePlusOneEvolutionaryOptimizer - */ - itkGetMacro(InitialRadiusOnePlusOneEvolutionary, float); - - /** - \brief for itk::OnePlusOneEvolutionaryOptimizer - */ - itkSetMacro(NumberOfIterationsOnePlusOneEvolutionary, int); - - /** - \brief for itk::OnePlusOneEvolutionaryOptimizer - */ - itkGetMacro(NumberOfIterationsOnePlusOneEvolutionary, int); - - /** - \brief for itk::PowellOptimizer - */ - itkSetMacro(StepLengthPowell, float); - - /** - \brief for itk::PowellOptimizer - */ - itkGetMacro(StepLengthPowell, float); - - /** - \brief for itk::PowellOptimizer - */ - itkSetMacro(StepTolerancePowell, float); - - /** - \brief for itk::PowellOptimizer - */ - itkGetMacro(StepTolerancePowell, float); - - /** - \brief for itk::PowellOptimizer - */ - itkSetMacro(ValueTolerancePowell, float); - - /** - \brief for itk::PowellOptimizer - */ - itkGetMacro(ValueTolerancePowell, float); - - /** - \brief for itk::PowellOptimizer - */ - itkSetMacro(NumberOfIterationsPowell, int); - - /** - \brief for itk::PowellOptimizer - */ - itkGetMacro(NumberOfIterationsPowell, int); - - /** - \brief for itk::FRPROptimizer - */ - itkSetMacro(StepLengthFRPR, float); - - /** - \brief for itk::FRPROptimizer - */ - itkGetMacro(StepLengthFRPR, float); - - /** - \brief for itk::FRPROptimizer - */ - itkSetMacro(FletchReevesFRPR, bool); - - /** - \brief for itk::FRPROptimizer - */ - itkGetMacro(FletchReevesFRPR, bool); - - /** - \brief for itk::FRPROptimizer - */ - itkSetMacro(PolakRibiereFRPR, bool); - - /** - \brief for itk::FRPROptimizer - */ - itkGetMacro(PolakRibiereFRPR, bool); - - /** - \brief for itk::FRPROptimizer - */ - itkSetMacro(NumberOfIterationsFRPR, int); - - /** - \brief for itk::FRPROptimizer - */ - itkGetMacro(NumberOfIterationsFRPR, int); - - /** - \brief for itk::RegularStepGradientDescentOptimizer - */ - itkSetMacro(GradientMagnitudeToleranceRegularStepGradientDescent, float); - - /** - \brief for itk::RegularStepGradientDescentOptimizer - */ - itkGetMacro(GradientMagnitudeToleranceRegularStepGradientDescent, float); - - /** - \brief for itk::RegularStepGradientDescentOptimizer - */ - itkSetMacro(MinimumStepLengthRegularStepGradientDescent, float); - - /** - \brief for itk::RegularStepGradientDescentOptimizer - */ - itkGetMacro(MinimumStepLengthRegularStepGradientDescent, float); - - /** - \brief for itk::RegularStepGradientDescentOptimizer - */ - itkSetMacro(MaximumStepLengthRegularStepGradientDescent, float); - - /** - \brief for itk::RegularStepGradientDescentOptimizer - */ - itkGetMacro(MaximumStepLengthRegularStepGradientDescent, float); - - /** - \brief for itk::RegularStepGradientDescentOptimizer - */ - itkSetMacro(NumberOfIterationsRegularStepGradientDescent, int); - - /** - \brief for itk::RegularStepGradientDescentOptimizer - */ - itkGetMacro(NumberOfIterationsRegularStepGradientDescent, int); - - /** - \brief for itk::RegularStepGradientDescentOptimizer - */ - itkSetMacro(RelaxationFactorRegularStepGradientDescent, double); - - /** - \brief for itk::RegularStepGradientDescentOptimizer - */ - itkGetMacro(RelaxationFactorRegularStepGradientDescent, double); - - /** - \brief for itk::VersorRigid3DTransformOptimizer - */ - itkSetMacro(GradientMagnitudeToleranceVersorRigid3DTransform, float); - - /** - \brief for itk::VersorRigid3DTransformOptimizer - */ - itkGetMacro(GradientMagnitudeToleranceVersorRigid3DTransform, float); - - /** - \brief for itk::VersorRigid3DTransformOptimizer - */ - itkSetMacro(MinimumStepLengthVersorRigid3DTransform, float); - - /** - \brief for itk::VersorRigid3DTransformOptimizer - */ - itkGetMacro(MinimumStepLengthVersorRigid3DTransform, float); - - /** - \brief for itk::VersorRigid3DTransformOptimizer - */ - itkSetMacro(MaximumStepLengthVersorRigid3DTransform, float); - - /** - \brief for itk::VersorRigid3DTransformOptimizer - */ - itkGetMacro(MaximumStepLengthVersorRigid3DTransform, float); - - /** - \brief for itk::VersorRigid3DTransformOptimizer - */ - itkSetMacro(NumberOfIterationsVersorRigid3DTransform, int); - - /** - \brief for itk::VersorRigid3DTransformOptimizer - */ - itkGetMacro(NumberOfIterationsVersorRigid3DTransform, int); - - /** - \brief for itk::VersorTransformOptimizer - */ - itkSetMacro(GradientMagnitudeToleranceVersorTransform, float); - - /** - \brief for itk::VersorTransformOptimizer - */ - itkGetMacro(GradientMagnitudeToleranceVersorTransform, float); - - /** - \brief for itk::VersorTransformOptimizer - */ - itkSetMacro(MinimumStepLengthVersorTransform, float); - - /** - \brief for itk::VersorTransformOptimizer - */ - itkGetMacro(MinimumStepLengthVersorTransform, float); - - /** - \brief for itk::VersorTransformOptimizer - */ - itkSetMacro(MaximumStepLengthVersorTransform, float); - - /** - \brief for itk::VersorTransformOptimizer - */ - itkGetMacro(MaximumStepLengthVersorTransform, float); - - /** - \brief for itk::VersorTransformOptimizer - */ - itkSetMacro(NumberOfIterationsVersorTransform, int); - - /** - \brief for itk::VersorTransformOptimizer - */ - itkGetMacro(NumberOfIterationsVersorTransform, int); - - /** - \brief for itk::AmoebaOptimizer - */ - void SetSimplexDeltaAmoeba(itk::Array simplexDelta); - - /** - \brief for itk::AmoebaOptimizer - */ - itk::Array GetSimplexDeltaAmoeba(); - - /** - \brief for itk::AmoebaOptimizer - */ - itkSetMacro(ParametersConvergenceToleranceAmoeba, float); - - /** - \brief for itk::AmoebaOptimizer - */ - itkGetMacro(ParametersConvergenceToleranceAmoeba, float); - - /** - \brief for itk::AmoebaOptimizer - */ - itkSetMacro(FunctionConvergenceToleranceAmoeba, float); - - /** - \brief for itk::AmoebaOptimizer - */ - itkGetMacro(FunctionConvergenceToleranceAmoeba, float); - - /** - \brief for itk::AmoebaOptimizer - */ - itkSetMacro(NumberOfIterationsAmoeba, int); - - /** - \brief for itk::AmoebaOptimizer - */ - itkGetMacro(NumberOfIterationsAmoeba, int); - - // nothing for itk::ConjugateGradientOptimizer - - /** - \brief for itk::LBFGSOptimizer - */ - itkSetMacro(GradientConvergenceToleranceLBFGS, float); - - /** - \brief for itk::LBFGSOptimizer - */ - itkGetMacro(GradientConvergenceToleranceLBFGS, float); - - /** - \brief for itk::LBFGSOptimizer - */ - itkSetMacro(LineSearchAccuracyLBFGS, float); - - /** - \brief for itk::LBFGSOptimizer - */ - itkGetMacro(LineSearchAccuracyLBFGS, float); - - /** - \brief for itk::LBFGSOptimizer - */ - itkSetMacro(DefaultStepLengthLBFGS, float); - - /** - \brief for itk::LBFGSOptimizer - */ - itkGetMacro(DefaultStepLengthLBFGS, float); - - /** - \brief for itk::LBFGSOptimizer - */ - itkSetMacro(TraceOnLBFGS, bool); - - /** - \brief for itk::LBFGSOptimizer - */ - itkGetMacro(TraceOnLBFGS, bool); - - /** - \brief for itk::LBFGSOptimizer - */ - itkSetMacro(NumberOfIterationsLBFGS, int); - - /** - \brief for itk::LBFGSOptimizer - */ - itkGetMacro(NumberOfIterationsLBFGS, int); - - /** - \brief for itk::SPSAOptimizer - */ - itkSetMacro(aSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkGetMacro(aSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkSetMacro(ASPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkGetMacro(ASPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkSetMacro(AlphaSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkGetMacro(AlphaSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkSetMacro(cSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkGetMacro(cSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkSetMacro(GammaSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkGetMacro(GammaSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkSetMacro(ToleranceSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkGetMacro(ToleranceSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkSetMacro(StateOfConvergenceDecayRateSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkGetMacro(StateOfConvergenceDecayRateSPSA, float); - - /** - \brief for itk::SPSAOptimizer - */ - itkSetMacro(MinimumNumberOfIterationsSPSA, int); - - /** - \brief for itk::SPSAOptimizer - */ - itkGetMacro(MinimumNumberOfIterationsSPSA, int); - - /** - \brief for itk::SPSAOptimizer - */ - itkSetMacro(NumberOfPerturbationsSPSA, int); - - /** - \brief for itk::SPSAOptimizer - */ - itkGetMacro(NumberOfPerturbationsSPSA, int); - - /** - \brief for itk::SPSAOptimizer - */ - itkSetMacro(NumberOfIterationsSPSA, int); - - /** - \brief for itk::SPSAOptimizer - */ - itkGetMacro(NumberOfIterationsSPSA, int); - - protected: - OptimizerParameters(); - ~OptimizerParameters(){}; - - // for all Optimizer - int m_Optimizer; - unsigned int m_Dimension; - bool m_Maximize; - - // for itk::ExhaustiveOptimizer - float m_StepLengthExhaustive; - int m_NumberOfStepsExhaustive; - - // for itk::GradientDescentOptimizer - float m_LearningRateGradientDescent; - int m_NumberOfIterationsGradientDescent; - - // for itk::QuaternionRigidTransformGradientDescentOptimizer - float m_LearningRateQuaternionRigidTransformGradientDescent; - int m_NumberOfIterationsQuaternionRigidTransformGradientDescent; - - // for itk::LBFGSBOptimizer - - // for itk::OnePlusOneEvolutionaryOptimizer - float m_GrowthFactorOnePlusOneEvolutionary; - float m_ShrinkFactorOnePlusOneEvolutionary; - float m_EpsilonOnePlusOneEvolutionary; - float m_InitialRadiusOnePlusOneEvolutionary; - int m_NumberOfIterationsOnePlusOneEvolutionary; - - // for itk::PowellOptimizer - float m_StepLengthPowell; - float m_StepTolerancePowell; - float m_ValueTolerancePowell; - int m_NumberOfIterationsPowell; - - // for itk::FRPROptimizer - float m_StepLengthFRPR; - bool m_FletchReevesFRPR; - bool m_PolakRibiereFRPR; - int m_NumberOfIterationsFRPR; - - // for itk::RegularStepGradientDescentOptimizer - float m_GradientMagnitudeToleranceRegularStepGradientDescent; - float m_MinimumStepLengthRegularStepGradientDescent; - float m_MaximumStepLengthRegularStepGradientDescent; - int m_NumberOfIterationsRegularStepGradientDescent; - double m_RelaxationFactorRegularStepGradientDescent; - - // for itk::VersorRigid3DTransformOptimizer - float m_GradientMagnitudeToleranceVersorRigid3DTransform; - float m_MinimumStepLengthVersorRigid3DTransform; - float m_MaximumStepLengthVersorRigid3DTransform; - int m_NumberOfIterationsVersorRigid3DTransform; - - // for itk::VersorTransformOptimizer - float m_GradientMagnitudeToleranceVersorTransform; - float m_MinimumStepLengthVersorTransform; - float m_MaximumStepLengthVersorTransform; - int m_NumberOfIterationsVersorTransform; - - // for itk::AmoebaOptimizer - itk::Array m_SimplexDeltaAmoeba; - float m_ParametersConvergenceToleranceAmoeba; - float m_FunctionConvergenceToleranceAmoeba; - int m_NumberOfIterationsAmoeba; - - // for itk::ConjugateGradientOptimizer - - // for itk::LBFGSOptimizer - float m_GradientConvergenceToleranceLBFGS; - float m_LineSearchAccuracyLBFGS; - float m_DefaultStepLengthLBFGS; - bool m_TraceOnLBFGS; - int m_NumberOfIterationsLBFGS; - - // for itk::SPSAOptimizer - float m_aSPSA; - float m_ASPSA; - float m_AlphaSPSA; - float m_cSPSA; - float m_GammaSPSA; - float m_ToleranceSPSA; - float m_StateOfConvergenceDecayRateSPSA; - int m_MinimumNumberOfIterationsSPSA; - int m_NumberOfPerturbationsSPSA; - int m_NumberOfIterationsSPSA; - }; - -} // namespace mitk - -#endif // MITKOPTIMIZERPARAMETERS_H diff --git a/Modules/RigidRegistration/mitkPyramidalRegistrationMethod-TYPE.cpp b/Modules/RigidRegistration/mitkPyramidalRegistrationMethod-TYPE.cpp deleted file mode 100644 index 211f83cee9..0000000000 --- a/Modules/RigidRegistration/mitkPyramidalRegistrationMethod-TYPE.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include -#include - -#define InstantiateAccessFunction_PyramidalAccessItkImage(pixelType, dim) \ - template void mitk::PyramidalRegistrationMethodAccessFunctor::AccessItkImage( \ - const itk::Image *itkImage1, mitk::PyramidalRegistrationMethod *method); - -InstantiateAccessFunctionForFixedPixelType(PyramidalAccessItkImage, (@TYPE@)) diff --git a/Modules/RigidRegistration/mitkPyramidalRegistrationMethod.cpp b/Modules/RigidRegistration/mitkPyramidalRegistrationMethod.cpp deleted file mode 100644 index f843c0e9ed..0000000000 --- a/Modules/RigidRegistration/mitkPyramidalRegistrationMethod.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkPyramidalRegistrationMethod.h" -#include "mitkPyramidalRegistrationMethodAccessFunctor.h" - -namespace mitk -{ - PyramidalRegistrationMethod::PyramidalRegistrationMethod() : m_Observer(nullptr), m_Interpolator(0) - { - m_OptimizerParameters = OptimizerParameters::New(); - m_TransformParameters = TransformParameters::New(); - m_MetricParameters = MetricParameters::New(); - m_ReferenceImage = Image::New(); - m_MovingMask = Image::New(); - m_FixedMask = Image::New(); - - m_Preset = new mitk::RigidRegistrationPreset(); - - bool succeed = m_Preset->LoadPreset(); - if (!succeed) - { - std::cout << "RigidRegistrationParameters.xml is empty or does not exist. There are no presets to select." - << std::endl; - return; - } - - m_UseMask = false; - m_BlurMovingImage = true; - m_BlurFixedImage = true; - } - - PyramidalRegistrationMethod::~PyramidalRegistrationMethod() {} - void PyramidalRegistrationMethod::GenerateData() - { - if (this->GetInput()) - { - PyramidalRegistrationMethodAccessFunctor()(this->GetInput(), this); - } - } - - void PyramidalRegistrationMethod::SetObserver(RigidRegistrationObserver::Pointer observer) { m_Observer = observer; } - void PyramidalRegistrationMethod::SetInterpolator(int interpolator) { m_Interpolator = interpolator; } - void PyramidalRegistrationMethod::SetReferenceImage(Image::Pointer fixedImage) - { - m_ReferenceImage = fixedImage; - SetNthInput(1, m_ReferenceImage); - Modified(); - } - - mitk::TransformParameters::Pointer PyramidalRegistrationMethod::ParseTransformParameters( - itk::Array transformValues) - { - mitk::TransformParameters::Pointer transformParameters = TransformParameters::New(); - - itk::Array initialParameters; - if (transformParameters->GetInitialParameters().size()) - { - initialParameters = transformParameters->GetInitialParameters(); - } - transformParameters = mitk::TransformParameters::New(); - transformParameters->SetTransform(transformValues[0]); - - if (transformParameters->GetInitialParameters().size()) - { - transformParameters->SetInitialParameters(initialParameters); - } - - // Set scales. Every type of transform has a different number of scales!!! - // TODO: Finish for al types of transform (or find a better solution) - itk::Array scales; - if (transformValues[0] == mitk::TransformParameters::AFFINETRANSFORM) - scales.SetSize(12); - if (transformValues[0] == mitk::TransformParameters::TRANSLATIONTRANSFORM) - scales.SetSize(3); - - for (unsigned int i = 0; i < scales.size(); i++) - { - scales[i] = transformValues[i + 2]; - } - transformParameters->SetScales(scales); - transformParameters->SetTransformInitializerOn(false); - - // Use Scales - if (transformValues[1] == 1) - { - transformParameters->SetUseOptimizerScales(true); - } - - return transformParameters; - } - - mitk::MetricParameters::Pointer PyramidalRegistrationMethod::ParseMetricParameters(itk::Array metricValues) - { - mitk::MetricParameters::Pointer metricParameters = mitk::MetricParameters::New(); - - metricParameters->SetMetric(metricValues[0]); - metricParameters->SetComputeGradient(metricValues[1]); - - // Some things have to be checked for every metric individually - if (metricValues[0] == mitk::MetricParameters::MUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC) - { - metricParameters->SetNumberOfHistogramBinsMutualInformationHistogram(metricValues[2]); - } - - if (metricValues[0] == mitk::MetricParameters::MATTESMUTUALINFORMATIONIMAGETOIMAGEMETRIC) - { - metricParameters->SetSpatialSamplesMattesMutualInformation(metricValues[3]); - metricParameters->SetNumberOfHistogramBinsMattesMutualInformation(metricValues[4]); - } - - return metricParameters; - } - - mitk::OptimizerParameters::Pointer PyramidalRegistrationMethod::ParseOptimizerParameters( - itk::Array optimizerValues) - { - mitk::OptimizerParameters::Pointer optimizerParameters = mitk::OptimizerParameters::New(); - - optimizerParameters->SetOptimizer(optimizerValues[0]); - optimizerParameters->SetMaximize( - optimizerValues[1]); // should be when used with maximize mutual information for example - - if (optimizerValues[0] == mitk::OptimizerParameters::GRADIENTDESCENTOPTIMIZER) - { - optimizerParameters->SetLearningRateGradientDescent(optimizerValues[2]); - optimizerParameters->SetNumberOfIterationsGradientDescent(optimizerValues[3]); - } - - if (optimizerValues[0] == mitk::OptimizerParameters::REGULARSTEPGRADIENTDESCENTOPTIMIZER) - { - cout << "use regularstepgradientdescent" << endl; - optimizerParameters->SetGradientMagnitudeToleranceRegularStepGradientDescent(optimizerValues[2]); - optimizerParameters->SetMinimumStepLengthRegularStepGradientDescent(optimizerValues[3]); - optimizerParameters->SetMaximumStepLengthRegularStepGradientDescent(optimizerValues[4]); - optimizerParameters->SetRelaxationFactorRegularStepGradientDescent(optimizerValues[5]); - optimizerParameters->SetNumberOfIterationsRegularStepGradientDescent(optimizerValues[6]); - } - - return optimizerParameters; - } - - void PyramidalRegistrationMethod::SetMovingMask(Image::Pointer movingMask) - { - m_MovingMask = movingMask; - SetNthInput(3, m_MovingMask); - Modified(); - } - - void PyramidalRegistrationMethod::SetFixedMask(Image::Pointer FixedMask) - { - m_FixedMask = FixedMask; - SetNthInput(4, m_FixedMask); - Modified(); - } - -} // end namespace diff --git a/Modules/RigidRegistration/mitkPyramidalRegistrationMethod.h b/Modules/RigidRegistration/mitkPyramidalRegistrationMethod.h deleted file mode 100644 index 04272bba5b..0000000000 --- a/Modules/RigidRegistration/mitkPyramidalRegistrationMethod.h +++ /dev/null @@ -1,131 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKPYRAMIDALREGISTRATIONMETHOD_H -#define MITKPYRAMIDALREGISTRATIONMETHOD_H - -#include "MitkRigidRegistrationExports.h" -#include "itkImageRegistrationMethod.h" -#include "itkSingleValuedNonLinearOptimizer.h" - -#include "mitkCommon.h" -#include "mitkImageAccessByItk.h" -#include "mitkImageToImageFilter.h" -#include "mitkMetricParameters.h" -#include "mitkOptimizerParameters.h" -#include "mitkRigidRegistrationObserver.h" -#include "mitkTransformParameters.h" - -#include "itkImageMaskSpatialObject.h" -#include "mitkRigidRegistrationPreset.h" - -namespace mitk -{ - /*! - \brief Main class for the rigid registration pipeline. - - - - - \ingroup RigidRegistration - - \author Thomas van Bruggen */ - class MITKRIGIDREGISTRATION_EXPORT PyramidalRegistrationMethod : public ImageToImageFilter - { - public: - typedef itk::SingleValuedNonLinearOptimizer OptimizerType; - typedef itk::ImageMaskSpatialObject<3> MaskType; - - mitkClassMacro(PyramidalRegistrationMethod, ImageToImageFilter); - - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - static const int LINEARINTERPOLATOR = 0; - static const int NEARESTNEIGHBORINTERPOLATOR = 1; - - void SetObserver(RigidRegistrationObserver::Pointer observer); - - void SetInterpolator(int interpolator); - - virtual void GenerateData() override; - - virtual void SetReferenceImage(Image::Pointer fixedImage); - - virtual void SetFixedMask(Image::Pointer fixedMask); - - virtual void SetMovingMask(Image::Pointer movingMask); - - void SetOptimizerParameters(OptimizerParameters::Pointer optimizerParameters) - { - m_OptimizerParameters = optimizerParameters; - } - - OptimizerParameters::Pointer GetOptimizerParameters() { return m_OptimizerParameters; } - void SetTransformParameters(TransformParameters::Pointer transformParameters) - { - m_TransformParameters = transformParameters; - } - - TransformParameters::Pointer GetTransformParameters() { return m_TransformParameters; } - void SetMetricParameters(MetricParameters::Pointer metricParameters) { m_MetricParameters = metricParameters; } - MetricParameters::Pointer GetMetricParameters() { return m_MetricParameters; } - void SetPresets(std::vector presets) { m_Presets = presets; } - itkSetMacro(FixedSchedule, itk::Array2D); - itkSetMacro(MovingSchedule, itk::Array2D); - itkSetMacro(MatchHistograms, bool); - itkGetMacro(Preset, mitk::RigidRegistrationPreset *); - itkSetMacro(BlurFixedImage, bool); - itkSetMacro(BlurMovingImage, bool); - - protected: - PyramidalRegistrationMethod(); - virtual ~PyramidalRegistrationMethod(); - - friend struct PyramidalRegistrationMethodAccessFunctor; - - RigidRegistrationObserver::Pointer m_Observer; - int m_Interpolator; - Image::Pointer m_ReferenceImage; - Image::Pointer m_FixedMask; - Image::Pointer m_MovingMask; - - void GenerateOutputInformation() override{}; - - private: - OptimizerParameters::Pointer m_OptimizerParameters; - TransformParameters::Pointer m_TransformParameters; - MetricParameters::Pointer m_MetricParameters; - - std::vector m_Presets; - mitk::RigidRegistrationPreset *m_Preset; - - // Schedules - itk::Array2D m_FixedSchedule; - itk::Array2D m_MovingSchedule; - - bool m_UseMask; - bool m_MatchHistograms; - bool m_BlurFixedImage; - bool m_BlurMovingImage; - MaskType::Pointer m_BrainMask; - - mitk::TransformParameters::Pointer ParseTransformParameters(itk::Array transformValues); - mitk::MetricParameters::Pointer ParseMetricParameters(itk::Array metricValues); - mitk::OptimizerParameters::Pointer ParseOptimizerParameters(itk::Array optimizerValues); - }; -} - -#endif // MITKIMAGEREGISTRATIONMETHOD_H diff --git a/Modules/RigidRegistration/mitkPyramidalRegistrationMethodAccessFunctor.h b/Modules/RigidRegistration/mitkPyramidalRegistrationMethodAccessFunctor.h deleted file mode 100644 index 07858c7187..0000000000 --- a/Modules/RigidRegistration/mitkPyramidalRegistrationMethodAccessFunctor.h +++ /dev/null @@ -1,40 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKPYRAMIDALREGISTRATIONMETHODACCESSFUNCTOR_H -#define MITKPYRAMIDALREGISTRATIONMETHODACCESSFUNCTOR_H - -#include - -namespace mitk -{ - class PyramidalRegistrationMethod; - - struct PyramidalRegistrationMethodAccessFunctor - { - typedef PyramidalRegistrationMethodAccessFunctor Self; - - void operator()(const mitk::Image *img, PyramidalRegistrationMethod *method) - { - AccessByItk_1(img, AccessItkImage, method) - } - - template - void AccessItkImage(const itk::Image *itkImage1, PyramidalRegistrationMethod *method); - }; -} - -#endif // MITKPYRAMIDALREGISTRATIONMETHODACCESSFUNCTOR_H diff --git a/Modules/RigidRegistration/mitkPyramidalRegistrationMethodAccessFunctor.txx b/Modules/RigidRegistration/mitkPyramidalRegistrationMethodAccessFunctor.txx deleted file mode 100644 index 8338b30d46..0000000000 --- a/Modules/RigidRegistration/mitkPyramidalRegistrationMethodAccessFunctor.txx +++ /dev/null @@ -1,244 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkPyramidalRegistrationMethod.h" -#include "mitkPyramidalRegistrationMethodAccessFunctor.h" - -#include - -#include -#include -#include -#include - -#include "mitkMetricFactory.h" -#include "mitkOptimizerFactory.h" -#include "mitkRegistrationInterfaceCommand.h" -#include "mitkTransformFactory.h" - -namespace mitk -{ - template - void PyramidalRegistrationMethodAccessFunctor::AccessItkImage(const itk::Image *itkImage1, - PyramidalRegistrationMethod *method) - { - // TYPEDEFS - typedef itk::Image ImageType; - - typedef float InternalPixelType; - typedef itk::Image InternalImageType; - - typedef typename itk::Transform TransformType; - typedef mitk::TransformFactory TransformFactoryType; - typedef itk::LinearInterpolateImageFunction InterpolatorType; - typedef mitk::MetricFactory MetricFactoryType; - typedef itk::RecursiveMultiResolutionPyramidImageFilter ImagePyramidType; - typedef itk::DiscreteGaussianImageFilter GaussianFilterType; - - typedef itk::MultiResolutionImageRegistrationMethod RegistrationType; - typedef RegistrationInterfaceCommand CommandType; - - typedef itk::CastImageFilter CastImageFilterType; - - itk::Array initialParameters; - if (method->m_TransformParameters->GetInitialParameters().size()) - { - initialParameters = method->m_TransformParameters->GetInitialParameters(); - } - - // LOAD PARAMETERS - itk::Array transformValues = method->m_Preset->getTransformValues(method->m_Presets[0]); - itk::Array metricValues = method->m_Preset->getMetricValues(method->m_Presets[0]); - itk::Array optimizerValues = method->m_Preset->getOptimizerValues(method->m_Presets[0]); - method->m_TransformParameters = method->ParseTransformParameters(transformValues); - method->m_MetricParameters = method->ParseMetricParameters(metricValues); - method->m_OptimizerParameters = method->ParseOptimizerParameters(optimizerValues); - - // The fixed and the moving image - typename InternalImageType::Pointer fixedImage = InternalImageType::New(); - typename InternalImageType::Pointer movingImage = InternalImageType::New(); - - mitk::CastToItkImage(method->m_ReferenceImage, fixedImage); - - // Blur the moving image - if (method->m_BlurMovingImage) - { - typename GaussianFilterType::Pointer gaussianFilter = GaussianFilterType::New(); - gaussianFilter->SetInput(itkImage1); - gaussianFilter->SetVariance(6.0); - gaussianFilter->SetMaximumError(0.1); - // gaussianFilter->SetMaximumKernelWidth ( 3 ); - gaussianFilter->Update(); - movingImage = gaussianFilter->GetOutput(); - } - else - { - typename CastImageFilterType::Pointer castImageFilter = CastImageFilterType::New(); - castImageFilter->SetInput(itkImage1); - castImageFilter->Update(); - movingImage = castImageFilter->GetOutput(); - } - - if (method->m_MatchHistograms) - { - typedef itk::RescaleIntensityImageFilter FilterType; - typedef itk::HistogramMatchingImageFilter HEFilterType; - - typename FilterType::Pointer inputRescaleFilter = FilterType::New(); - typename FilterType::Pointer referenceRescaleFilter = FilterType::New(); - - referenceRescaleFilter->SetInput(fixedImage); - inputRescaleFilter->SetInput(movingImage); - - const float desiredMinimum = 0.0; - const float desiredMaximum = 255.0; - - referenceRescaleFilter->SetOutputMinimum(desiredMinimum); - referenceRescaleFilter->SetOutputMaximum(desiredMaximum); - referenceRescaleFilter->UpdateLargestPossibleRegion(); - inputRescaleFilter->SetOutputMinimum(desiredMinimum); - inputRescaleFilter->SetOutputMaximum(desiredMaximum); - inputRescaleFilter->UpdateLargestPossibleRegion(); - - // Histogram match the images - typename HEFilterType::Pointer intensityEqualizeFilter = HEFilterType::New(); - - intensityEqualizeFilter->SetReferenceImage(inputRescaleFilter->GetOutput()); - intensityEqualizeFilter->SetInput(referenceRescaleFilter->GetOutput()); - intensityEqualizeFilter->SetNumberOfHistogramLevels(64); - intensityEqualizeFilter->SetNumberOfMatchPoints(12); - intensityEqualizeFilter->ThresholdAtMeanIntensityOn(); - intensityEqualizeFilter->Update(); - - // fixedImage = referenceRescaleFilter->GetOutput(); - // movingImage = IntensityEqualizeFilter->GetOutput(); - - fixedImage = intensityEqualizeFilter->GetOutput(); - movingImage = inputRescaleFilter->GetOutput(); - } - - typename TransformFactoryType::Pointer transFac = TransformFactoryType::New(); - transFac->SetTransformParameters(method->m_TransformParameters); - transFac->SetFixedImage(fixedImage); - transFac->SetMovingImage(movingImage); - typename TransformType::Pointer transform = transFac->GetTransform(); - - typename InterpolatorType::Pointer interpolator = InterpolatorType::New(); - typename MetricFactoryType::Pointer metFac = MetricFactoryType::New(); - metFac->SetMetricParameters(method->m_MetricParameters); - - typename OptimizerFactory::Pointer optFac = OptimizerFactory::New(); - optFac->SetOptimizerParameters(method->m_OptimizerParameters); - optFac->SetNumberOfTransformParameters(transform->GetNumberOfParameters()); - typename PyramidalRegistrationMethod::OptimizerType::Pointer optimizer = optFac->GetOptimizer(); - - // optimizer scales - if (method->m_TransformParameters->GetUseOptimizerScales()) - { - itk::Array optimizerScales = method->m_TransformParameters->GetScales(); - typename PyramidalRegistrationMethod::OptimizerType::ScalesType scales(transform->GetNumberOfParameters()); - for (unsigned int i = 0; i < scales.Size(); i++) - { - scales[i] = optimizerScales[i]; - } - optimizer->SetScales(scales); - } - - typename ImagePyramidType::Pointer fixedImagePyramid = ImagePyramidType::New(); - typename ImagePyramidType::Pointer movingImagePyramid = ImagePyramidType::New(); - - if (method->m_FixedSchedule.size() > 0 && method->m_MovingSchedule.size() > 0) - { - fixedImagePyramid->SetSchedule(method->m_FixedSchedule); - movingImagePyramid->SetSchedule(method->m_MovingSchedule); - // Otherwise just use the default schedule - } - - typename RegistrationType::Pointer registration = RegistrationType::New(); - registration->SetOptimizer(optimizer); - registration->SetTransform(transform); - registration->SetInterpolator(interpolator); - registration->SetMetric(metFac->GetMetric()); - registration->SetFixedImagePyramid(fixedImagePyramid); - registration->SetMovingImagePyramid(movingImagePyramid); - registration->SetFixedImage(fixedImage); - registration->SetMovingImage(movingImage); - registration->SetFixedImageRegion(fixedImage->GetBufferedRegion()); - - if (transFac->GetTransformParameters()->GetInitialParameters().size()) - { - registration->SetInitialTransformParameters(transFac->GetTransformParameters()->GetInitialParameters()); - } - else - { - itk::Array zeroInitial; - zeroInitial.set_size(transform->GetNumberOfParameters()); - zeroInitial.fill(0.0); - zeroInitial[0] = 1.0; - zeroInitial[4] = 1.0; - zeroInitial[8] = 1.0; - registration->SetInitialTransformParameters(zeroInitial); - } - - if (method->m_UseMask) - { - itk::ImageMaskSpatialObject *mask = - dynamic_cast *>(method->m_BrainMask.GetPointer()); - registration->GetMetric()->SetFixedImageMask(mask); - } - - // registering command observer with the optimizer - if (method->m_Observer.IsNotNull()) - { - method->m_Observer->AddStepsToDo(20); - optimizer->AddObserver(itk::AnyEvent(), method->m_Observer); - registration->AddObserver(itk::AnyEvent(), method->m_Observer); - transform->AddObserver(itk::AnyEvent(), method->m_Observer); - } - - typename CommandType::Pointer command = CommandType::New(); - command->observer = method->m_Observer; - command->m_Presets = method->m_Presets; - command->m_UseMask = method->m_UseMask; - command->m_BrainMask = method->m_BrainMask; - - registration->AddObserver(itk::IterationEvent(), command); - registration->SetSchedules(method->m_FixedSchedule, method->m_MovingSchedule); - - // Start the registration process - try - { - registration->Update(); - } - catch (itk::ExceptionObject &err) - { - std::cout << "ExceptionObject caught !" << std::endl; - std::cout << err << std::endl; - } - if (method->m_Observer.IsNotNull()) - { - optimizer->RemoveAllObservers(); - registration->RemoveAllObservers(); - transform->RemoveAllObservers(); - method->m_Observer->SetRemainingProgress(15); - } - if (method->m_Observer.IsNotNull()) - { - method->m_Observer->SetRemainingProgress(5); - } - } - -} // end namespace diff --git a/Modules/RigidRegistration/mitkRegistrationInterfaceCommand.h b/Modules/RigidRegistration/mitkRegistrationInterfaceCommand.h deleted file mode 100644 index 52ad2e0ea0..0000000000 --- a/Modules/RigidRegistration/mitkRegistrationInterfaceCommand.h +++ /dev/null @@ -1,154 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -namespace mitk -{ - template - class RegistrationInterfaceCommand : public itk::Command - { - public: - typedef RegistrationInterfaceCommand Self; - typedef itk::Command Superclass; - typedef itk::SmartPointer Pointer; - itkFactorylessNewMacro(Self) itkCloneMacro(Self) protected : RegistrationInterfaceCommand() { m_UseMask = false; } - public: - // typedef TRegistration RegistrationType; - - typedef itk::MultiResolutionImageRegistrationMethod, itk::Image> RegistrationType; - - typedef RegistrationType *RegistrationPointer; - typedef itk::SingleValuedNonLinearOptimizer OptimizerType; - typedef OptimizerType *OptimizerPointer; - typedef itk::ImageMaskSpatialObject<3> MaskType; - - mitk::RigidRegistrationObserver::Pointer observer; - bool m_UseMask; - std::vector m_Presets; - MaskType::Pointer m_BrainMask; - - void Execute(itk::Object *object, const itk::EventObject &event) override - { - if (!(itk::IterationEvent().CheckEvent(&event))) - { - return; - } - - RegistrationPointer registration = dynamic_cast(object); - - /*OptimizerPointer optimizer = dynamic_cast< OptimizerPointer >( - registration->GetOptimizer() );*/ - - std::cout << "-------------------------------------" << std::endl; - std::cout << "MultiResolution Level : " << registration->GetCurrentLevel() << std::endl << std::endl; - - if (registration->GetCurrentLevel() == 0) - { - // Nothing needs to be changed in the first step - } - else - { - // Load presets and make a new optimizer if that succeeds - mitk::RigidRegistrationPreset *preset = new mitk::RigidRegistrationPreset(); - if (preset->LoadPreset()) - { - mitk::OptimizerParameters::Pointer optimizerParameters = mitk::OptimizerParameters::New(); - itk::Array optimizerValues = preset->getOptimizerValues(m_Presets[registration->GetCurrentLevel()]); - - optimizerParameters->SetOptimizer(optimizerValues[0]); - optimizerParameters->SetMaximize( - optimizerValues[1]); // should be when used with maximize mutual information for example - - if (optimizerValues[0] == mitk::OptimizerParameters::GRADIENTDESCENTOPTIMIZER) - { - optimizerParameters->SetLearningRateGradientDescent(optimizerValues[2]); - optimizerParameters->SetNumberOfIterationsGradientDescent(optimizerValues[3]); - } - - if (optimizerValues[0] == mitk::OptimizerParameters::REGULARSTEPGRADIENTDESCENTOPTIMIZER) - { - cout << "use regularstepgradientdescent" << endl; - optimizerParameters->SetGradientMagnitudeToleranceRegularStepGradientDescent(optimizerValues[2]); - optimizerParameters->SetMinimumStepLengthRegularStepGradientDescent(optimizerValues[3]); - optimizerParameters->SetMaximumStepLengthRegularStepGradientDescent(optimizerValues[4]); - optimizerParameters->SetRelaxationFactorRegularStepGradientDescent(optimizerValues[5]); - optimizerParameters->SetNumberOfIterationsRegularStepGradientDescent(optimizerValues[6]); - } - - // Typedef for the OptimizerFactory and initialisation of the optimizer using m_OptimizerParameters - typename OptimizerFactory::Pointer optFac = OptimizerFactory::New(); - optFac->SetOptimizerParameters(optimizerParameters); - optFac->SetNumberOfTransformParameters(registration->GetTransform()->GetNumberOfParameters()); - typename OptimizerType::Pointer optimizer = optFac->GetOptimizer(); - - if (observer.IsNotNull()) - { - optimizer->AddObserver(itk::AnyEvent(), observer); - } - - itk::Array transformValues = preset->getTransformValues(m_Presets[registration->GetCurrentLevel()]); - - itk::Array scales; - if (transformValues[0] == mitk::TransformParameters::AFFINETRANSFORM) - scales.SetSize(12); - mitk::TransformParameters::Pointer transformParameters = mitk::TransformParameters::New(); - transformParameters->SetTransform(transformValues[0]); - - for (unsigned int i = 0; i < scales.size(); i++) - { - scales[i] = transformValues[i + 2]; - std::cout << "scale " << i << ": " << scales[i] << std::endl; - } - - transformParameters->SetScales(scales); - // transformParameters->SetTransformInitializerOn(false); - - // Use Scales - if (transformValues[1] == 1) - { - transformParameters->SetUseOptimizerScales(true); - } - - if (transformParameters->GetUseOptimizerScales()) - { - itk::Array optimizerScales = transformParameters->GetScales(); - typename OptimizerType::ScalesType scales(registration->GetTransform()->GetNumberOfParameters()); - for (unsigned int i = 0; i < scales.Size(); i++) - { - scales[i] = optimizerScales[i]; - } - optimizer->SetScales(scales); - } - - registration->SetOptimizer(optimizer); - } - delete preset; - } - - registration->Print(std::cout, 0); - std::cout << std::endl; - std::cout << "METRIC" << std::endl; - registration->GetMetric()->Print(std::cout, 0); - std::cout << std::endl; - std::cout << "OPTIMIZER" << std::endl; - registration->GetOptimizer()->Print(std::cout, 0); - std::cout << std::endl; - std::cout << "TRANSFORM" << std::endl; - registration->GetTransform()->Print(std::cout, 0); - } - - void Execute(const itk::Object *, const itk::EventObject &) override { return; } - }; -} diff --git a/Modules/RigidRegistration/mitkRigidRegistrationObserver.cpp b/Modules/RigidRegistration/mitkRigidRegistrationObserver.cpp deleted file mode 100644 index 8b6e5159bc..0000000000 --- a/Modules/RigidRegistration/mitkRigidRegistrationObserver.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkRigidRegistrationObserver.h" -#include "mitkProgressBar.h" - -mitk::RigidRegistrationObserver::RigidRegistrationObserver() : m_OptimizerValue(0), m_StopOptimization(false) -{ -} - -void mitk::RigidRegistrationObserver::HandleOptimizationIterationEvent(OptimizerType *optimizer) -{ - unsigned int iteration = 0; - - itk::RegularStepGradientDescentBaseOptimizer *rsgdbase = - dynamic_cast(optimizer); - if (rsgdbase != nullptr) - { - m_OptimizerValue = rsgdbase->GetValue(); - m_Params = rsgdbase->GetCurrentPosition(); - iteration = rsgdbase->GetCurrentIteration(); - - MITK_INFO << "(" << iteration << ") " << m_OptimizerValue << " :: " << m_Params << std::endl; - - if (this->m_StopOptimization) - { - rsgdbase->StopOptimization(); - m_StopOptimization = false; - } - return; - } - - itk::GradientDescentOptimizer *gdbase = dynamic_cast(optimizer); - if (gdbase != nullptr) - { - m_OptimizerValue = gdbase->GetValue(); - m_Params = gdbase->GetCurrentPosition(); - iteration = gdbase->GetCurrentIteration(); - - MITK_INFO << "(" << iteration << ") " << m_OptimizerValue << " :: " << m_Params << std::endl; - - if (this->m_StopOptimization) - { - gdbase->StopOptimization(); - m_StopOptimization = false; - } - return; - } - - itk::PowellOptimizer *powbase = dynamic_cast(optimizer); - if (powbase != nullptr) - { - m_OptimizerValue = powbase->GetValue(); - m_Params = powbase->GetCurrentPosition(); - iteration = powbase->GetCurrentIteration(); - - MITK_INFO << "(" << iteration << ") " << m_OptimizerValue << " :: " << m_Params << std::endl; - - if (this->m_StopOptimization) - { - powbase->StopOptimization(); - m_StopOptimization = false; - } - return; - } - - itk::OnePlusOneEvolutionaryOptimizer *opluso = dynamic_cast(optimizer); - if (opluso != nullptr) - { - m_OptimizerValue = opluso->GetValue(); - m_Params = opluso->GetCurrentPosition(); - iteration = opluso->GetCurrentIteration(); - - MITK_INFO << "(" << iteration << ") " << m_OptimizerValue << " :: " << m_Params << std::endl; - - if (this->m_StopOptimization) - { - powbase->StopOptimization(); - m_StopOptimization = false; - } - return; - } -} - -void mitk::RigidRegistrationObserver::Execute(itk::Object *caller, const itk::EventObject &event) -{ - if (typeid(event) == typeid(itk::IterationEvent)) - { - OptimizerPointer optimizer = dynamic_cast(caller); - - if (optimizer != nullptr) - { - this->HandleOptimizationIterationEvent(optimizer); - - InvokeEvent(itk::ModifiedEvent()); - } - } - else if (typeid(event) == typeid(itk::FunctionEvaluationIterationEvent)) - { - OptimizerPointer optimizer = dynamic_cast(caller); - itk::AmoebaOptimizer *AmoebaOptimizer = dynamic_cast(optimizer); - if (AmoebaOptimizer != nullptr) - { - m_OptimizerValue = AmoebaOptimizer->GetCachedValue(); - MITK_INFO << AmoebaOptimizer->GetCachedValue() << " " << AmoebaOptimizer->GetCachedCurrentPosition() - << std::endl; - m_Params = AmoebaOptimizer->GetCachedCurrentPosition(); - if (m_StopOptimization) - { - // AmoebaOptimizer->StopOptimization(); - m_StopOptimization = false; - } - InvokeEvent(itk::ModifiedEvent()); - } - } - mitk::ProgressBar::GetInstance()->AddStepsToDo(1); - mitk::ProgressBar::GetInstance()->Progress(); -} - -void mitk::RigidRegistrationObserver::Execute(const itk::Object * /*caller*/, const itk::EventObject & /*event*/) -{ -} - -void mitk::RigidRegistrationObserver::AddStepsToDo(int steps) -{ - mitk::ProgressBar::GetInstance()->AddStepsToDo(steps); -} - -void mitk::RigidRegistrationObserver::SetRemainingProgress(int steps) -{ - mitk::ProgressBar::GetInstance()->Progress(steps); -} - -double mitk::RigidRegistrationObserver::GetCurrentOptimizerValue() -{ - return m_OptimizerValue; -} - -itk::Array mitk::RigidRegistrationObserver::GetCurrentTranslation() -{ - return m_Params; -} - -// Sets the stop optimization flag, which is used to call the StopOptimization() method of the optimizer. -// Unfortunately it is not implemented for ExhaustiveOptimizer, LBFGSBOptimizer, AmoebaOptimizer, -// ConjugateGradientOptimizer and LBFGSOptimizer in ITK. -void mitk::RigidRegistrationObserver::SetStopOptimization(bool stopOptimization) -{ - m_StopOptimization = stopOptimization; -} diff --git a/Modules/RigidRegistration/mitkRigidRegistrationObserver.h b/Modules/RigidRegistration/mitkRigidRegistrationObserver.h deleted file mode 100644 index e46b1da051..0000000000 --- a/Modules/RigidRegistration/mitkRigidRegistrationObserver.h +++ /dev/null @@ -1,191 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKRIGIDREGISTRATIONOBSERVER_H -#define MITKRIGIDREGISTRATIONOBSERVER_H - -#include "MitkRigidRegistrationExports.h" -#include "itkCommand.h" -#include "itkSingleValuedNonLinearOptimizer.h" -#include "mitkCommon.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace mitk -{ - /** - * \brief Observer to react on rigid registration optimizer events. - * - * \sa ProgressBar - * - * \ingroup RigidRegistration - * - * This class reacts on events sent by ITK optimizers. These events will be sent for every iteration the optimizer - * performs. - * This class also takes care for the progress bar for every iteration step. - * - * The current optimizer values will be stored and a modified event will be sent to listeners registered to this - * observer. - * These listeners have the possibility to get the current optimizer parameters. - * - * The optimization process can be stopped by setting stopOptimization to true. The optimization will be stopped after - * the next - * iteration step of the optimizer. Unfortunately this is not implemented for ExhaustiveOptimizer, LBFGSBOptimizer, - * AmoebaOptimizer, - * ConjugateGradientOptimizer and LBFGSOptimizer in ITK. - * - * \author Daniel Stein - */ - class MITKRIGIDREGISTRATION_EXPORT RigidRegistrationObserver : public itk::Command - { - public: - typedef RigidRegistrationObserver Self; - typedef itk::Command Superclass; - typedef itk::SmartPointer Pointer; - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - typedef itk::SingleValuedNonLinearOptimizer OptimizerType; - typedef OptimizerType *OptimizerPointer; - - /** - * \brief Reacts on events from ITK optimizers. - * - * Stores the optimizer values, adds progress to the progress bar and sends a stop flag to stop the optimization - * process if it is - * set in this class. Also emits a signal to inform listeners about new optimizer values. - */ - void Execute(itk::Object *caller, const itk::EventObject &event) override; - - /** - * \brief Not implemented... - * - */ - void Execute(const itk::Object *object, const itk::EventObject &event) override; - - /** - * \brief Add new steps to the progress bar. - * - */ - void AddStepsToDo(int steps); - - /** - * \brief Sets the remaining progress to the progress bar when the optimization process is done. - * - */ - void SetRemainingProgress(int steps); - - /** - * \brief Returns the current optimizer value. This value is calculated by the used metric and shows, how good the - * images are aligned. - * - * - */ - double GetCurrentOptimizerValue(); - - /** - * \brief Returns the current transformation parameters for the moving image to this iteration step. - * - * These can include parameters for translation, scaling, rotation and shearing. - */ - itk::Array GetCurrentTranslation(); - - /** - * \brief Sets the stop optimization flag, which is used to call the StopOptimization() method of the optimizer. - * - * Unfortunately it is not implemented for ExhaustiveOptimizer, LBFGSBOptimizer, AmoebaOptimizer, - * ConjugateGradientOptimizer and LBFGSOptimizer in ITK. - */ - void SetStopOptimization(bool stopOptimization); - - protected: - RigidRegistrationObserver(); - - void HandleOptimizationIterationEvent(OptimizerType *optimizer); - - private: - double m_OptimizerValue; - itk::Array m_Params; - bool m_StopOptimization; - }; - - template - class MITKRIGIDREGISTRATION_EXPORT RigidRegistrationPyramidObserver : public itk::Command - { - public: - typedef itk::RegularStepGradientDescentBaseOptimizer OptimizerType; - - mitkClassMacroItkParent(RigidRegistrationPyramidObserver, itk::Command) - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - void Execute(itk::Object *caller, const itk::EventObject & /*event*/) override - { - RegistrationType *registration = dynamic_cast(caller); - - if (registration == NULL) - return; - - OptimizerType *optimizer = dynamic_cast(registration->GetOptimizer()); - - if (optimizer == NULL) - { - MITK_WARN("Pyramid.Registration.Command") << "No step adaptation possible with given optimizer, cast failed! "; - return; - } - - MITK_DEBUG << "\t - Pyramid level " << registration->GetCurrentLevel(); - - if (registration->GetCurrentLevel() == 0) - { - MITK_INFO("Pyramid.Registration.Command") << "First pyramid resolution level: "; - MITK_INFO("Pyramid.Registration.Command") << " Current settings: \n" - << " Step length: (" << optimizer->GetMinimumStepLength() << "," - << optimizer->GetMaximumStepLength() - << "), Tolerance: " << optimizer->GetGradientMagnitudeTolerance() - << " Iterations: " << optimizer->GetNumberOfIterations(); - return; - } - - optimizer->SetMaximumStepLength(optimizer->GetMaximumStepLength() * 0.25f); - optimizer->SetMinimumStepLength(optimizer->GetMinimumStepLength() * 0.1f); - optimizer->SetGradientMagnitudeTolerance(optimizer->GetGradientMagnitudeTolerance() * 0.1f); - optimizer->SetNumberOfIterations(optimizer->GetNumberOfIterations() * 1.5f); - - MITK_INFO("Pyramid.Registration.Command") << " Current settings: \n" - << " Step length: (" << optimizer->GetMinimumStepLength() << "," - << optimizer->GetMaximumStepLength() - << "), Tolerance: " << optimizer->GetGradientMagnitudeTolerance() - << " Iterations: " << optimizer->GetNumberOfIterations(); - } - - void Execute(const itk::Object * /*object*/, const itk::EventObject & /*event*/) override {} - }; - -} // namespace mitk - -#endif // MITKRIGIDREGISTRATIONOBSERVER_H diff --git a/Modules/RigidRegistration/mitkRigidRegistrationPreset.cpp b/Modules/RigidRegistration/mitkRigidRegistrationPreset.cpp deleted file mode 100644 index a779167c20..0000000000 --- a/Modules/RigidRegistration/mitkRigidRegistrationPreset.cpp +++ /dev/null @@ -1,794 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkRigidRegistrationPreset.h" -#include "mitkMetricParameters.h" -#include "mitkOptimizerParameters.h" -#include "mitkTransformParameters.h" - -#include "usGetModuleContext.h" -#include "usModule.h" -#include "usModuleContext.h" -#include "usModuleResource.h" -#include "usModuleResourceStream.h" - -namespace mitk -{ - RigidRegistrationPreset::RigidRegistrationPreset() - { - m_Name = ""; - m_XmlFileName = "mitkRigidRegistrationPresets.xml"; - } - - RigidRegistrationPreset::~RigidRegistrationPreset() {} - bool RigidRegistrationPreset::LoadPreset() { return LoadPreset("mitkRigidRegistrationPresets.xml"); } - bool RigidRegistrationPreset::LoadPreset(std::string fileName) - { - if (fileName.empty()) - return false; - - us::ModuleResource presetResource = us::GetModuleContext()->GetModule()->GetResource(fileName); - if (!presetResource) - return false; - - us::ModuleResourceStream presetStream(presetResource); - - vtkXMLParser::SetStream(&presetStream); - - if (!vtkXMLParser::Parse()) - { -#ifdef INTERDEBUG - MITK_INFO << "RigidRegistrationPreset::LoadPreset xml file cannot parse!" << std::endl; -#endif - } - - return true; - } - - bool RigidRegistrationPreset::newPresets(std::map> newTransformValues, - std::map> newMetricValues, - std::map> newOptimizerValues, - std::map> newInterpolatorValues, - std::string fileName) - { - if (!fileName.empty()) - { - m_XmlFileName = fileName; - } - m_TransformValues = newTransformValues; - m_MetricValues = newMetricValues; - m_OptimizerValues = newOptimizerValues; - m_InterpolatorValues = newInterpolatorValues; - return save(); - } - - void RigidRegistrationPreset::StartElement(const char *elementName, const char **atts) - { - std::string elementNameString = elementName; - if (elementNameString == "preset") - { - m_Name = ReadXMLStringAttribut("NAME", atts); - } - else if (elementNameString == "transform") - { - itk::Array transformValues; - transformValues.SetSize(25); - transformValues.fill(0); - std::string transform = ReadXMLStringAttribut("TRANSFORM", atts); - double trans = atof(transform.c_str()); - transformValues[0] = trans; - MITK_DEBUG("RigidRegistration.Preset.StartElement ") << "Name tag: " << m_Name; - transformValues = this->loadTransformValues(transformValues, trans, atts); - m_TransformValues[m_Name] = transformValues; - } - else if (elementNameString == "metric") - { - itk::Array metricValues; - metricValues.SetSize(25); - metricValues.fill(0); - std::string metric = ReadXMLStringAttribut("METRIC", atts); - double met = atof(metric.c_str()); - metricValues[0] = met; - metricValues = this->loadMetricValues(metricValues, met, atts); - m_MetricValues[m_Name] = metricValues; - } - else if (elementNameString == "optimizer") - { - itk::Array optimizerValues; - optimizerValues.SetSize(25); - optimizerValues.fill(0); - std::string optimizer = ReadXMLStringAttribut("OPTIMIZER", atts); - double opt = atof(optimizer.c_str()); - optimizerValues[0] = opt; - optimizerValues = this->loadOptimizerValues(optimizerValues, opt, atts); - m_OptimizerValues[m_Name] = optimizerValues; - } - else if (elementNameString == "interpolator") - { - itk::Array interpolatorValues; - interpolatorValues.SetSize(25); - interpolatorValues.fill(0); - std::string interpolator = ReadXMLStringAttribut("INTERPOLATOR", atts); - double inter = atof(interpolator.c_str()); - interpolatorValues[0] = inter; - interpolatorValues = this->loadInterpolatorValues(interpolatorValues /*, inter, atts*/); - m_InterpolatorValues[m_Name] = interpolatorValues; - } - } - - std::string RigidRegistrationPreset::ReadXMLStringAttribut(std::string name, const char **atts) - { - if (atts) - { - const char **attsIter = atts; - - while (*attsIter) - { - if (name == *attsIter) - { - attsIter++; - return *attsIter; - } - attsIter++; - attsIter++; - } - } - - return std::string(); - } - - itk::Array RigidRegistrationPreset::getTransformValues(std::string name) { return m_TransformValues[name]; } - itk::Array RigidRegistrationPreset::getMetricValues(std::string name) { return m_MetricValues[name]; } - itk::Array RigidRegistrationPreset::getOptimizerValues(std::string name) { return m_OptimizerValues[name]; } - itk::Array RigidRegistrationPreset::getInterpolatorValues(std::string name) - { - return m_InterpolatorValues[name]; - } - - std::list &RigidRegistrationPreset::getAvailablePresets() - { - // use the loaded transoform values to access the names - - for (auto preset : m_TransformValues) - { - m_LoadedPresets.push_back(preset.first); - } - - return m_LoadedPresets; - } - - std::map> &RigidRegistrationPreset::getTransformValuesPresets() - { - return m_TransformValues; - } - - std::map> &RigidRegistrationPreset::getMetricValuesPresets() - { - return m_MetricValues; - } - - std::map> &RigidRegistrationPreset::getOptimizerValuesPresets() - { - return m_OptimizerValues; - } - - std::map> &RigidRegistrationPreset::getInterpolatorValuesPresets() - { - return m_InterpolatorValues; - } - - bool RigidRegistrationPreset::save() - { - // falsely removed return value, the previous implementation was also empty (and only returning false) - return false; - } - - itk::Array RigidRegistrationPreset::loadTransformValues(itk::Array transformValues, - double transform, - const char **atts) - { - if (transform == mitk::TransformParameters::TRANSLATIONTRANSFORM || - transform == mitk::TransformParameters::SCALETRANSFORM || - transform == mitk::TransformParameters::SCALELOGARITHMICTRANSFORM || - transform == mitk::TransformParameters::VERSORTRANSFORM || - transform == mitk::TransformParameters::RIGID2DTRANSFORM || - transform == mitk::TransformParameters::EULER2DTRANSFORM) - { - std::string useScales = ReadXMLStringAttribut("USESCALES", atts); - double useSca = atof(useScales.c_str()); - transformValues[1] = useSca; - std::string scale1 = ReadXMLStringAttribut("SCALE1", atts); - double sca1 = atof(scale1.c_str()); - transformValues[2] = sca1; - std::string scale2 = ReadXMLStringAttribut("SCALE2", atts); - double sca2 = atof(scale2.c_str()); - transformValues[3] = sca2; - std::string scale3 = ReadXMLStringAttribut("SCALE3", atts); - double sca3 = atof(scale3.c_str()); - transformValues[4] = sca3; - } - else if (transform == mitk::TransformParameters::AFFINETRANSFORM || - transform == mitk::TransformParameters::FIXEDCENTEROFROTATIONAFFINETRANSFORM) - { - std::string useScales = ReadXMLStringAttribut("USESCALES", atts); - double useSca = atof(useScales.c_str()); - transformValues[1] = useSca; - std::string scale1 = ReadXMLStringAttribut("SCALE1", atts); - double sca1 = atof(scale1.c_str()); - transformValues[2] = sca1; - std::string scale2 = ReadXMLStringAttribut("SCALE2", atts); - double sca2 = atof(scale2.c_str()); - transformValues[3] = sca2; - std::string scale3 = ReadXMLStringAttribut("SCALE3", atts); - double sca3 = atof(scale3.c_str()); - transformValues[4] = sca3; - std::string scale4 = ReadXMLStringAttribut("SCALE4", atts); - double sca4 = atof(scale4.c_str()); - transformValues[5] = sca4; - std::string scale5 = ReadXMLStringAttribut("SCALE5", atts); - double sca5 = atof(scale5.c_str()); - transformValues[6] = sca5; - std::string scale6 = ReadXMLStringAttribut("SCALE6", atts); - double sca6 = atof(scale6.c_str()); - transformValues[7] = sca6; - std::string scale7 = ReadXMLStringAttribut("SCALE7", atts); - double sca7 = atof(scale7.c_str()); - transformValues[8] = sca7; - std::string scale8 = ReadXMLStringAttribut("SCALE8", atts); - double sca8 = atof(scale8.c_str()); - transformValues[9] = sca8; - std::string scale9 = ReadXMLStringAttribut("SCALE9", atts); - double sca9 = atof(scale9.c_str()); - transformValues[10] = sca9; - std::string scale10 = ReadXMLStringAttribut("SCALE10", atts); - double sca10 = atof(scale10.c_str()); - transformValues[11] = sca10; - std::string scale11 = ReadXMLStringAttribut("SCALE11", atts); - double sca11 = atof(scale11.c_str()); - transformValues[12] = sca11; - std::string scale12 = ReadXMLStringAttribut("SCALE12", atts); - double sca12 = atof(scale12.c_str()); - transformValues[13] = sca12; - - std::string useInitializer = ReadXMLStringAttribut("USEINITIALIZER", atts); - double useIni = atof(useInitializer.c_str()); - transformValues[14] = useIni; - std::string useMoments = ReadXMLStringAttribut("USEMOMENTS", atts); - double useMo = atof(useMoments.c_str()); - transformValues[15] = useMo; - } - - else if (transform == mitk::TransformParameters::EULER3DTRANSFORM || - transform == mitk::TransformParameters::CENTEREDEULER3DTRANSFORM || - transform == mitk::TransformParameters::VERSORRIGID3DTRANSFORM) - { - std::string useScales = ReadXMLStringAttribut("USESCALES", atts); - double useSca = atof(useScales.c_str()); - transformValues[1] = useSca; - std::string scale1 = ReadXMLStringAttribut("SCALE1", atts); - double sca1 = atof(scale1.c_str()); - transformValues[2] = sca1; - std::string scale2 = ReadXMLStringAttribut("SCALE2", atts); - double sca2 = atof(scale2.c_str()); - transformValues[3] = sca2; - std::string scale3 = ReadXMLStringAttribut("SCALE3", atts); - double sca3 = atof(scale3.c_str()); - transformValues[4] = sca3; - std::string scale4 = ReadXMLStringAttribut("SCALE4", atts); - double sca4 = atof(scale4.c_str()); - transformValues[5] = sca4; - std::string scale5 = ReadXMLStringAttribut("SCALE5", atts); - double sca5 = atof(scale5.c_str()); - transformValues[6] = sca5; - std::string scale6 = ReadXMLStringAttribut("SCALE6", atts); - double sca6 = atof(scale6.c_str()); - transformValues[7] = sca6; - std::string useInitializer = ReadXMLStringAttribut("USEINITIALIZER", atts); - double useIni = atof(useInitializer.c_str()); - transformValues[8] = useIni; - std::string useMoments = ReadXMLStringAttribut("USEMOMENTS", atts); - double useMo = atof(useMoments.c_str()); - transformValues[9] = useMo; - } - else if (transform == mitk::TransformParameters::QUATERNIONRIGIDTRANSFORM || - transform == mitk::TransformParameters::SIMILARITY3DTRANSFORM) - { - std::string useScales = ReadXMLStringAttribut("USESCALES", atts); - double useSca = atof(useScales.c_str()); - transformValues[1] = useSca; - std::string scale1 = ReadXMLStringAttribut("SCALE1", atts); - double sca1 = atof(scale1.c_str()); - transformValues[2] = sca1; - std::string scale2 = ReadXMLStringAttribut("SCALE2", atts); - double sca2 = atof(scale2.c_str()); - transformValues[3] = sca2; - std::string scale3 = ReadXMLStringAttribut("SCALE3", atts); - double sca3 = atof(scale3.c_str()); - transformValues[4] = sca3; - std::string scale4 = ReadXMLStringAttribut("SCALE4", atts); - double sca4 = atof(scale4.c_str()); - transformValues[5] = sca4; - std::string scale5 = ReadXMLStringAttribut("SCALE5", atts); - double sca5 = atof(scale5.c_str()); - transformValues[6] = sca5; - std::string scale6 = ReadXMLStringAttribut("SCALE6", atts); - double sca6 = atof(scale6.c_str()); - transformValues[7] = sca6; - std::string scale7 = ReadXMLStringAttribut("SCALE7", atts); - double sca7 = atof(scale7.c_str()); - transformValues[8] = sca7; - std::string useInitializer = ReadXMLStringAttribut("USEINITIALIZER", atts); - double useIni = atof(useInitializer.c_str()); - transformValues[9] = useIni; - std::string useMoments = ReadXMLStringAttribut("USEMOMENTS", atts); - double useMo = atof(useMoments.c_str()); - transformValues[10] = useMo; - } - else if (transform == mitk::TransformParameters::SCALESKEWVERSOR3DTRANSFORM) - { - std::string useScales = ReadXMLStringAttribut("USESCALES", atts); - double useSca = atof(useScales.c_str()); - transformValues[1] = useSca; - std::string scale1 = ReadXMLStringAttribut("SCALE1", atts); - double sca1 = atof(scale1.c_str()); - transformValues[2] = sca1; - std::string scale2 = ReadXMLStringAttribut("SCALE2", atts); - double sca2 = atof(scale2.c_str()); - transformValues[3] = sca2; - std::string scale3 = ReadXMLStringAttribut("SCALE3", atts); - double sca3 = atof(scale3.c_str()); - transformValues[4] = sca3; - std::string scale4 = ReadXMLStringAttribut("SCALE4", atts); - double sca4 = atof(scale4.c_str()); - transformValues[5] = sca4; - std::string scale5 = ReadXMLStringAttribut("SCALE5", atts); - double sca5 = atof(scale5.c_str()); - transformValues[6] = sca5; - std::string scale6 = ReadXMLStringAttribut("SCALE6", atts); - double sca6 = atof(scale6.c_str()); - transformValues[7] = sca6; - std::string scale7 = ReadXMLStringAttribut("SCALE7", atts); - double sca7 = atof(scale7.c_str()); - transformValues[8] = sca7; - std::string scale8 = ReadXMLStringAttribut("SCALE8", atts); - double sca8 = atof(scale8.c_str()); - transformValues[9] = sca8; - std::string scale9 = ReadXMLStringAttribut("SCALE9", atts); - double sca9 = atof(scale9.c_str()); - transformValues[10] = sca9; - std::string scale10 = ReadXMLStringAttribut("SCALE10", atts); - double sca10 = atof(scale10.c_str()); - transformValues[11] = sca10; - std::string scale11 = ReadXMLStringAttribut("SCALE11", atts); - double sca11 = atof(scale11.c_str()); - transformValues[12] = sca11; - std::string scale12 = ReadXMLStringAttribut("SCALE12", atts); - double sca12 = atof(scale12.c_str()); - transformValues[13] = sca12; - std::string scale13 = ReadXMLStringAttribut("SCALE13", atts); - double sca13 = atof(scale13.c_str()); - transformValues[14] = sca13; - std::string scale14 = ReadXMLStringAttribut("SCALE14", atts); - double sca14 = atof(scale14.c_str()); - transformValues[15] = sca14; - std::string scale15 = ReadXMLStringAttribut("SCALE15", atts); - double sca15 = atof(scale15.c_str()); - transformValues[16] = sca15; - std::string useInitializer = ReadXMLStringAttribut("USEINITIALIZER", atts); - double useIni = atof(useInitializer.c_str()); - transformValues[17] = useIni; - std::string useMoments = ReadXMLStringAttribut("USEMOMENTS", atts); - double useMo = atof(useMoments.c_str()); - transformValues[18] = useMo; - } - else if (transform == mitk::TransformParameters::CENTEREDRIGID2DTRANSFORM) - { - std::string useScales = ReadXMLStringAttribut("USESCALES", atts); - double useSca = atof(useScales.c_str()); - transformValues[1] = useSca; - std::string scale1 = ReadXMLStringAttribut("SCALE1", atts); - double sca1 = atof(scale1.c_str()); - transformValues[2] = sca1; - std::string scale2 = ReadXMLStringAttribut("SCALE2", atts); - double sca2 = atof(scale2.c_str()); - transformValues[3] = sca2; - std::string scale3 = ReadXMLStringAttribut("SCALE3", atts); - double sca3 = atof(scale3.c_str()); - transformValues[4] = sca3; - std::string scale4 = ReadXMLStringAttribut("SCALE4", atts); - double sca4 = atof(scale4.c_str()); - transformValues[5] = sca4; - std::string scale5 = ReadXMLStringAttribut("SCALE5", atts); - double sca5 = atof(scale5.c_str()); - transformValues[6] = sca5; - std::string angle = ReadXMLStringAttribut("ANGLE", atts); - double ang = atof(angle.c_str()); - transformValues[7] = ang; - std::string useInitializer = ReadXMLStringAttribut("USEINITIALIZER", atts); - double useIni = atof(useInitializer.c_str()); - transformValues[8] = useIni; - std::string useMoments = ReadXMLStringAttribut("USEMOMENTS", atts); - double useMo = atof(useMoments.c_str()); - transformValues[9] = useMo; - } - else if (transform == mitk::TransformParameters::SIMILARITY2DTRANSFORM) - { - std::string useScales = ReadXMLStringAttribut("USESCALES", atts); - double useSca = atof(useScales.c_str()); - transformValues[1] = useSca; - std::string scale1 = ReadXMLStringAttribut("SCALE1", atts); - double sca1 = atof(scale1.c_str()); - transformValues[2] = sca1; - std::string scale2 = ReadXMLStringAttribut("SCALE2", atts); - double sca2 = atof(scale2.c_str()); - transformValues[3] = sca2; - std::string scale3 = ReadXMLStringAttribut("SCALE3", atts); - double sca3 = atof(scale3.c_str()); - transformValues[4] = sca3; - std::string scale4 = ReadXMLStringAttribut("SCALE4", atts); - double sca4 = atof(scale4.c_str()); - transformValues[5] = sca4; - std::string scale = ReadXMLStringAttribut("SCALE", atts); - double sca = atof(scale.c_str()); - transformValues[6] = sca; - std::string angle = ReadXMLStringAttribut("ANGLE", atts); - double ang = atof(angle.c_str()); - transformValues[7] = ang; - std::string useInitializer = ReadXMLStringAttribut("USEINITIALIZER", atts); - double useIni = atof(useInitializer.c_str()); - transformValues[8] = useIni; - std::string useMoments = ReadXMLStringAttribut("USEMOMENTS", atts); - double useMo = atof(useMoments.c_str()); - transformValues[9] = useMo; - } - else if (transform == mitk::TransformParameters::CENTEREDSIMILARITY2DTRANSFORM) - { - std::string useScales = ReadXMLStringAttribut("USESCALES", atts); - double useSca = atof(useScales.c_str()); - transformValues[1] = useSca; - std::string scale1 = ReadXMLStringAttribut("SCALE1", atts); - double sca1 = atof(scale1.c_str()); - transformValues[2] = sca1; - std::string scale2 = ReadXMLStringAttribut("SCALE2", atts); - double sca2 = atof(scale2.c_str()); - transformValues[3] = sca2; - std::string scale3 = ReadXMLStringAttribut("SCALE3", atts); - double sca3 = atof(scale3.c_str()); - transformValues[4] = sca3; - std::string scale4 = ReadXMLStringAttribut("SCALE4", atts); - double sca4 = atof(scale4.c_str()); - transformValues[5] = sca4; - std::string scale5 = ReadXMLStringAttribut("SCALE5", atts); - double sca5 = atof(scale5.c_str()); - transformValues[6] = sca5; - std::string scale6 = ReadXMLStringAttribut("SCALE6", atts); - double sca6 = atof(scale6.c_str()); - transformValues[7] = sca6; - std::string scale = ReadXMLStringAttribut("SCALE", atts); - double sca = atof(scale.c_str()); - transformValues[8] = sca; - std::string angle = ReadXMLStringAttribut("ANGLE", atts); - double ang = atof(angle.c_str()); - transformValues[9] = ang; - std::string useInitializer = ReadXMLStringAttribut("USEINITIALIZER", atts); - double useIni = atof(useInitializer.c_str()); - transformValues[10] = useIni; - std::string useMoments = ReadXMLStringAttribut("USEMOMENTS", atts); - double useMo = atof(useMoments.c_str()); - transformValues[11] = useMo; - } - - MITK_DEBUG("RigidRegistration.Preset.LoadValue ") << transformValues; - return transformValues; - } - - itk::Array RigidRegistrationPreset::loadMetricValues(itk::Array metricValues, - double metric, - const char **atts) - { - std::string computeGradient = ReadXMLStringAttribut("COMPUTEGRADIENT", atts); - double compGra = atof(computeGradient.c_str()); - metricValues[1] = compGra; - if (metric == mitk::MetricParameters::MEANSQUARESIMAGETOIMAGEMETRIC || - metric == mitk::MetricParameters::NORMALIZEDCORRELATIONIMAGETOIMAGEMETRIC || - metric == mitk::MetricParameters::GRADIENTDIFFERENCEIMAGETOIMAGEMETRIC || - metric == mitk::MetricParameters::MATCHCARDINALITYIMAGETOIMAGEMETRIC || - metric == mitk::MetricParameters::KAPPASTATISTICIMAGETOIMAGEMETRIC) - { - } - else if (metric == mitk::MetricParameters::KULLBACKLEIBLERCOMPAREHISTOGRAMIMAGETOIMAGEMETRIC || - metric == mitk::MetricParameters::CORRELATIONCOEFFICIENTHISTOGRAMIMAGETOIMAGEMETRIC || - metric == mitk::MetricParameters::MEANSQUARESHISTOGRAMIMAGETOIMAGEMETRIC || - metric == mitk::MetricParameters::MUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC || - metric == mitk::MetricParameters::NORMALIZEDMUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC) - { - std::string histogramBins = ReadXMLStringAttribut("HISTOGRAMBINS", atts); - double histBins = atof(histogramBins.c_str()); - metricValues[2] = histBins; - } - else if (metric == mitk::MetricParameters::MATTESMUTUALINFORMATIONIMAGETOIMAGEMETRIC) - { - std::string useSampling = ReadXMLStringAttribut("USESAMPLING", atts); - double useSamp = atof(useSampling.c_str()); - metricValues[2] = useSamp; - std::string spatialSamples = ReadXMLStringAttribut("SPATIALSAMPLES", atts); - double spatSamp = atof(spatialSamples.c_str()); - metricValues[3] = spatSamp; - std::string histogramBins = ReadXMLStringAttribut("HISTOGRAMBINS", atts); - double histBins = atof(histogramBins.c_str()); - metricValues[4] = histBins; - } - else if (metric == mitk::MetricParameters::MEANRECIPROCALSQUAREDIFFERENCEIMAGETOIMAGEMETRIC) - { - std::string lambda = ReadXMLStringAttribut("LAMBDA", atts); - double lamb = atof(lambda.c_str()); - metricValues[2] = lamb; - } - else if (metric == mitk::MetricParameters::MUTUALINFORMATIONIMAGETOIMAGEMETRIC) - { - std::string spatialSamples = ReadXMLStringAttribut("SPATIALSAMPLES", atts); - double spatSamp = atof(spatialSamples.c_str()); - metricValues[2] = spatSamp; - std::string fixedStandardDeviation = ReadXMLStringAttribut("FIXEDSTANDARDDEVIATION", atts); - double fiStaDev = atof(fixedStandardDeviation.c_str()); - metricValues[3] = fiStaDev; - std::string movingStandardDeviation = ReadXMLStringAttribut("MOVINGSTANDARDDEVIATION", atts); - double moStaDev = atof(movingStandardDeviation.c_str()); - metricValues[4] = moStaDev; - std::string useNormalizer = ReadXMLStringAttribut("USENORMALIZERANDSMOOTHER", atts); - double useNormal = atof(useNormalizer.c_str()); - metricValues[5] = useNormal; - std::string fixedSmootherVariance = ReadXMLStringAttribut("FIXEDSMOOTHERVARIANCE", atts); - double fiSmoVa = atof(fixedSmootherVariance.c_str()); - metricValues[6] = fiSmoVa; - std::string movingSmootherVariance = ReadXMLStringAttribut("MOVINGSMOOTHERVARIANCE", atts); - double moSmoVa = atof(movingSmootherVariance.c_str()); - metricValues[7] = moSmoVa; - } - return metricValues; - } - - itk::Array RigidRegistrationPreset::loadOptimizerValues(itk::Array optimizerValues, - double optimizer, - const char **atts) - { - std::string maximize = ReadXMLStringAttribut("MAXIMIZE", atts); - double max = atof(maximize.c_str()); - optimizerValues[1] = max; - if (optimizer == mitk::OptimizerParameters::EXHAUSTIVEOPTIMIZER) - { - std::string stepLength = ReadXMLStringAttribut("STEPLENGTH", atts); - double stepLe = atof(stepLength.c_str()); - optimizerValues[2] = stepLe; - std::string numberOfSteps = ReadXMLStringAttribut("NUMBEROFSTEPS", atts); - double numSteps = atof(numberOfSteps.c_str()); - optimizerValues[3] = numSteps; - } - else if (optimizer == mitk::OptimizerParameters::GRADIENTDESCENTOPTIMIZER || - optimizer == mitk::OptimizerParameters::QUATERNIONRIGIDTRANSFORMGRADIENTDESCENTOPTIMIZER) - { - std::string learningRate = ReadXMLStringAttribut("LEARNINGRATE", atts); - double learn = atof(learningRate.c_str()); - optimizerValues[2] = learn; - std::string numberIterations = ReadXMLStringAttribut("NUMBERITERATIONS", atts); - double numIt = atof(numberIterations.c_str()); - optimizerValues[3] = numIt; - } - else if (optimizer == mitk::OptimizerParameters::LBFGSBOPTIMIZER) - { - } - else if (optimizer == mitk::OptimizerParameters::ONEPLUSONEEVOLUTIONARYOPTIMIZER) - { - std::string shrinkFactor = ReadXMLStringAttribut("SHRINKFACTOR", atts); - double shrink = atof(shrinkFactor.c_str()); - optimizerValues[2] = shrink; - std::string growthFactor = ReadXMLStringAttribut("GROWTHFACTOR", atts); - double growth = atof(growthFactor.c_str()); - optimizerValues[3] = growth; - std::string epsilon = ReadXMLStringAttribut("EPSILON", atts); - double eps = atof(epsilon.c_str()); - optimizerValues[4] = eps; - std::string initialRadius = ReadXMLStringAttribut("INITIALRADIUS", atts); - double initRad = atof(initialRadius.c_str()); - optimizerValues[5] = initRad; - std::string numberIterations = ReadXMLStringAttribut("NUMBERITERATIONS", atts); - double numIt = atof(numberIterations.c_str()); - optimizerValues[6] = numIt; - } - else if (optimizer == mitk::OptimizerParameters::POWELLOPTIMIZER) - { - std::string stepLength = ReadXMLStringAttribut("STEPLENGTH", atts); - double stepLe = atof(stepLength.c_str()); - optimizerValues[2] = stepLe; - std::string stepTolerance = ReadXMLStringAttribut("STEPTOLERANCE", atts); - double stepTo = atof(stepTolerance.c_str()); - optimizerValues[3] = stepTo; - std::string valueTolerance = ReadXMLStringAttribut("VALUETOLERANCE", atts); - double valTo = atof(valueTolerance.c_str()); - optimizerValues[4] = valTo; - std::string numberIterations = ReadXMLStringAttribut("NUMBERITERATIONS", atts); - double numIt = atof(numberIterations.c_str()); - optimizerValues[5] = numIt; - } - else if (optimizer == mitk::OptimizerParameters::FRPROPTIMIZER) - { - std::string useFletchReeves = ReadXMLStringAttribut("USEFLETCHREEVES", atts); - double useFleRe = atof(useFletchReeves.c_str()); - optimizerValues[2] = useFleRe; - std::string stepLength = ReadXMLStringAttribut("STEPLENGTH", atts); - double stepLe = atof(stepLength.c_str()); - optimizerValues[3] = stepLe; - std::string numberIterations = ReadXMLStringAttribut("NUMBERITERATIONS", atts); - double numIt = atof(numberIterations.c_str()); - optimizerValues[4] = numIt; - } - else if (optimizer == mitk::OptimizerParameters::REGULARSTEPGRADIENTDESCENTOPTIMIZER) - { - std::string gradientMagnitudeTolerance = ReadXMLStringAttribut("GRADIENTMAGNITUDETOLERANCE", atts); - double graMagTo = atof(gradientMagnitudeTolerance.c_str()); - optimizerValues[2] = graMagTo; - std::string minStepLength = ReadXMLStringAttribut("MINSTEPLENGTH", atts); - double minStep = atof(minStepLength.c_str()); - optimizerValues[3] = minStep; - std::string maxStepLength = ReadXMLStringAttribut("MAXSTEPLENGTH", atts); - double maxStep = atof(maxStepLength.c_str()); - optimizerValues[4] = maxStep; - std::string relaxationFactor = ReadXMLStringAttribut("RELAXATIONFACTOR", atts); - double relFac = atof(relaxationFactor.c_str()); - optimizerValues[5] = relFac; - std::string numberIterations = ReadXMLStringAttribut("NUMBERITERATIONS", atts); - double numIt = atof(numberIterations.c_str()); - optimizerValues[6] = numIt; - } - else if (optimizer == mitk::OptimizerParameters::VERSORTRANSFORMOPTIMIZER || - optimizer == mitk::OptimizerParameters::VERSORRIGID3DTRANSFORMOPTIMIZER) - { - std::string gradientMagnitudeTolerance = ReadXMLStringAttribut("GRADIENTMAGNITUDETOLERANCE", atts); - double graMagTo = atof(gradientMagnitudeTolerance.c_str()); - optimizerValues[2] = graMagTo; - std::string minStepLength = ReadXMLStringAttribut("MINSTEPLENGTH", atts); - double minStep = atof(minStepLength.c_str()); - optimizerValues[3] = minStep; - std::string maxStepLength = ReadXMLStringAttribut("MAXSTEPLENGTH", atts); - double maxStep = atof(maxStepLength.c_str()); - optimizerValues[4] = maxStep; - std::string numberIterations = ReadXMLStringAttribut("NUMBERITERATIONS", atts); - double numIt = atof(numberIterations.c_str()); - optimizerValues[5] = numIt; - } - else if (optimizer == mitk::OptimizerParameters::AMOEBAOPTIMIZER) - { - std::string simplexDelta1 = ReadXMLStringAttribut("SIMPLEXDELTA1", atts); - double simpDel1 = atof(simplexDelta1.c_str()); - optimizerValues[2] = simpDel1; - std::string simplexDelta2 = ReadXMLStringAttribut("SIMPLEXDELTA2", atts); - double simpDel2 = atof(simplexDelta2.c_str()); - optimizerValues[3] = simpDel2; - std::string simplexDelta3 = ReadXMLStringAttribut("SIMPLEXDELTA3", atts); - double simpDel3 = atof(simplexDelta3.c_str()); - optimizerValues[4] = simpDel3; - std::string simplexDelta4 = ReadXMLStringAttribut("SIMPLEXDELTA4", atts); - double simpDel4 = atof(simplexDelta4.c_str()); - optimizerValues[5] = simpDel4; - std::string simplexDelta5 = ReadXMLStringAttribut("SIMPLEXDELTA5", atts); - double simpDel5 = atof(simplexDelta5.c_str()); - optimizerValues[6] = simpDel5; - std::string simplexDelta6 = ReadXMLStringAttribut("SIMPLEXDELTA6", atts); - double simpDel6 = atof(simplexDelta6.c_str()); - optimizerValues[7] = simpDel6; - std::string simplexDelta7 = ReadXMLStringAttribut("SIMPLEXDELTA7", atts); - double simpDel7 = atof(simplexDelta7.c_str()); - optimizerValues[8] = simpDel7; - std::string simplexDelta8 = ReadXMLStringAttribut("SIMPLEXDELTA8", atts); - double simpDel8 = atof(simplexDelta8.c_str()); - optimizerValues[9] = simpDel8; - std::string simplexDelta9 = ReadXMLStringAttribut("SIMPLEXDELTA9", atts); - double simpDel9 = atof(simplexDelta9.c_str()); - optimizerValues[10] = simpDel9; - std::string simplexDelta10 = ReadXMLStringAttribut("SIMPLEXDELTA10", atts); - double simpDel10 = atof(simplexDelta10.c_str()); - optimizerValues[11] = simpDel10; - std::string simplexDelta11 = ReadXMLStringAttribut("SIMPLEXDELTA11", atts); - double simpDel11 = atof(simplexDelta11.c_str()); - optimizerValues[12] = simpDel11; - std::string simplexDelta12 = ReadXMLStringAttribut("SIMPLEXDELTA12", atts); - double simpDel12 = atof(simplexDelta12.c_str()); - optimizerValues[13] = simpDel12; - std::string simplexDelta13 = ReadXMLStringAttribut("SIMPLEXDELTA13", atts); - double simpDel13 = atof(simplexDelta13.c_str()); - optimizerValues[14] = simpDel13; - std::string simplexDelta14 = ReadXMLStringAttribut("SIMPLEXDELTA14", atts); - double simpDel14 = atof(simplexDelta14.c_str()); - optimizerValues[15] = simpDel14; - std::string simplexDelta15 = ReadXMLStringAttribut("SIMPLEXDELTA15", atts); - double simpDel15 = atof(simplexDelta15.c_str()); - optimizerValues[16] = simpDel15; - std::string simplexDelta16 = ReadXMLStringAttribut("SIMPLEXDELTA16", atts); - double simpDel16 = atof(simplexDelta16.c_str()); - optimizerValues[17] = simpDel16; - std::string parametersConvergenceTolerance = ReadXMLStringAttribut("PARAMETERSCONVERGENCETOLERANCE", atts); - double paramConv = atof(parametersConvergenceTolerance.c_str()); - optimizerValues[18] = paramConv; - std::string functionConvergenceTolerance = ReadXMLStringAttribut("FUNCTIONCONVERGENCETOLERANCE", atts); - double funcConv = atof(functionConvergenceTolerance.c_str()); - optimizerValues[19] = funcConv; - std::string numberIterations = ReadXMLStringAttribut("NUMBERITERATIONS", atts); - double numIt = atof(numberIterations.c_str()); - optimizerValues[20] = numIt; - } - else if (optimizer == mitk::OptimizerParameters::CONJUGATEGRADIENTOPTIMIZER) - { - } - else if (optimizer == mitk::OptimizerParameters::LBFGSOPTIMIZER) - { - std::string GradientConvergenceTolerance = ReadXMLStringAttribut("GRADIENTCONVERGENCETOLERANCE", atts); - double graConTo = atof(GradientConvergenceTolerance.c_str()); - optimizerValues[2] = graConTo; - std::string lineSearchAccuracy = ReadXMLStringAttribut("LINESEARCHACCURACY", atts); - double lineSearch = atof(lineSearchAccuracy.c_str()); - optimizerValues[3] = lineSearch; - std::string defaultStepLength = ReadXMLStringAttribut("DEFAULTSTEPLENGTH", atts); - double defStep = atof(defaultStepLength.c_str()); - optimizerValues[4] = defStep; - std::string numberIterations = ReadXMLStringAttribut("NUMBERITERATIONS", atts); - double numIt = atof(numberIterations.c_str()); - optimizerValues[5] = numIt; - std::string useTrace = ReadXMLStringAttribut("USETRACE", atts); - double useTr = atof(useTrace.c_str()); - optimizerValues[6] = useTr; - } - else if (optimizer == mitk::OptimizerParameters::SPSAOPTIMIZER) - { - std::string a = ReadXMLStringAttribut("a", atts); - double a1 = atof(a.c_str()); - optimizerValues[2] = a1; - std::string a2 = ReadXMLStringAttribut("A", atts); - double a3 = atof(a2.c_str()); - optimizerValues[3] = a3; - std::string alpha = ReadXMLStringAttribut("ALPHA", atts); - double alp = atof(alpha.c_str()); - optimizerValues[4] = alp; - std::string c = ReadXMLStringAttribut("c", atts); - double c1 = atof(c.c_str()); - optimizerValues[5] = c1; - std::string gamma = ReadXMLStringAttribut("GAMMA", atts); - double gam = atof(gamma.c_str()); - optimizerValues[6] = gam; - std::string tolerance = ReadXMLStringAttribut("TOLERANCE", atts); - double tol = atof(tolerance.c_str()); - optimizerValues[7] = tol; - std::string stateOfConvergenceDecayRate = ReadXMLStringAttribut("STATEOFCONVERGENCEDECAYRATE", atts); - double stateOfConvergence = atof(stateOfConvergenceDecayRate.c_str()); - optimizerValues[8] = stateOfConvergence; - std::string minNumberIterations = ReadXMLStringAttribut("MINNUMBERITERATIONS", atts); - double minNumIt = atof(minNumberIterations.c_str()); - optimizerValues[9] = minNumIt; - std::string numberPerturbations = ReadXMLStringAttribut("NUMBERPERTURBATIONS", atts); - double numPer = atof(numberPerturbations.c_str()); - optimizerValues[10] = numPer; - std::string numberIterations = ReadXMLStringAttribut("NUMBERITERATIONS", atts); - double numIt = atof(numberIterations.c_str()); - optimizerValues[11] = numIt; - } - return optimizerValues; - } - - itk::Array RigidRegistrationPreset::loadInterpolatorValues( - itk::Array interpolatorValues /*, double interpolator, const char **atts*/) - { - return interpolatorValues; - } -} diff --git a/Modules/RigidRegistration/mitkRigidRegistrationPreset.h b/Modules/RigidRegistration/mitkRigidRegistrationPreset.h deleted file mode 100644 index 42dbde7c16..0000000000 --- a/Modules/RigidRegistration/mitkRigidRegistrationPreset.h +++ /dev/null @@ -1,172 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKRIGIDREGISTRATIONPRESET_H_HEADER -#define MITKRIGIDREGISTRATIONPRESET_H_HEADER - -#include "MitkRigidRegistrationExports.h" -#include - -#include -#include -#include - -#include "mitkCommon.h" -#include - -namespace mitk -{ - /** - * \brief Class to load and save parameter presets for rigid registration. - * - * \ingroup RigidRegistration - * - * This class stores parameter presets for rigid registration applications. To that belong parameters for - * transformations, metrics, - * optimizer and interpolators. The presets will be stored in a xml file. Existing presets can be opened with - * LoadPreset() and saved with - * newPresets(...). - * - * - * \author Daniel Stein - */ - class MITKRIGIDREGISTRATION_EXPORT RigidRegistrationPreset : public vtkXMLParser - { - public: - RigidRegistrationPreset(); - ~RigidRegistrationPreset(); - - /** - * \brief Tries to find mitkRigidRegistrationPresets.xml in /mitk/Config and loads all presets stored in this file. - */ - bool LoadPreset(); - /** - * \brief Tries to open preset xml file \e fileName and loads all presets stored in this file. - */ - bool LoadPreset(std::string fileName); - /** - * \brief Returns an array including all all transform values belonging to preset \e name. - */ - itk::Array getTransformValues(std::string name); - /** - * \brief Returns an array including all all metric values belonging to preset \e name. - */ - itk::Array getMetricValues(std::string name); - /** - * \brief Returns an array including all all optimizer values belonging to preset \e name. - */ - itk::Array getOptimizerValues(std::string name); - /** - * \brief Returns an array including all interpolator values belonging to preset \e name. - */ - itk::Array getInterpolatorValues(std::string name); - - std::list &getAvailablePresets(); - - /** - * \brief Returns a map with all preset names and their according transform values as an array. - */ - std::map> &getTransformValuesPresets(); - /** - * \brief Returns a map with all preset names and their according metric values as an array. - */ - std::map> &getMetricValuesPresets(); - /** - * \brief Returns a map with all preset names and their according optimizer values as an array. - */ - std::map> &getOptimizerValuesPresets(); - /** - * \brief Returns a map with all preset names and their according interpolator values as an array. - */ - std::map> &getInterpolatorValuesPresets(); - /** - * \brief Saves new presets in the previous opened xml file or in the new fileName location. - * - * Every old entry will be removed from the xml file and replaced by the ones stored in the parameter maps. Make sure - * you have the - * old presets as well as the new ones within the maps. - */ - bool newPresets(std::map> newTransformValues, - std::map> newMetricValues, - std::map> newOptimizerValues, - std::map> newInterpolatorValues, - std::string fileName = ""); - - private: - /** - * \brief method used in XLM-Reading; gets called when a start-tag is read - */ - void StartElement(const char *elementName, const char **atts) override; - - /** - * \brief Saves all preset attributes to xml file. - */ - // bool saveXML(mitk::XMLWriter& xmlWriter); - /** - * \brief Saves all preset attributes to xml file. - */ - bool save(); - /** - * \brief Saves the transform values for one preset to the xml file. - */ - // void saveTransformValues(mitk::XMLWriter& xmlWriter, std::string item); - /** - * \brief Saves the metric values for one preset to the xml file. - */ - // void saveMetricValues(mitk::XMLWriter& xmlWriter, std::string item); - /** - * \brief Saves the optimizer values for one preset to the xml file. - */ - // void saveOptimizerValues(mitk::XMLWriter& xmlWriter, std::string item); - /** - * \brief Saves the interpolator values for one preset to the xml file. - */ - // void saveInterpolatorValues(mitk::XMLWriter& xmlWriter, std::string item); - - /** - * \brief Loads the transform values for one preset from the xml file. - */ - itk::Array loadTransformValues(itk::Array transformValues, double transform, const char **atts); - /** - * \brief Loads the metric values for one preset from the xml file. - */ - itk::Array loadMetricValues(itk::Array metricValues, double metric, const char **atts); - /** - * \brief Loads the optimizer values for one preset from the xml file. - */ - itk::Array loadOptimizerValues(itk::Array optimizerValues, double optimizer, const char **atts); - /** - * \brief Loads the interpolator values for one preset from the xml file. - */ - itk::Array loadInterpolatorValues( - itk::Array interpolatorValues /*, double interpolator, const char **atts*/); - - /** - * \brief Reads an XML-String-Attribute - */ - std::string ReadXMLStringAttribut(std::string name, const char **atts); - - std::string m_Name; - std::map> m_TransformValues; - std::map> m_MetricValues; - std::map> m_OptimizerValues; - std::map> m_InterpolatorValues; - std::list m_LoadedPresets; - - std::string m_XmlFileName; - }; -} -#endif diff --git a/Modules/RigidRegistration/mitkTransformFactory.h b/Modules/RigidRegistration/mitkTransformFactory.h deleted file mode 100644 index e40af398af..0000000000 --- a/Modules/RigidRegistration/mitkTransformFactory.h +++ /dev/null @@ -1,110 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKTRANSFORMFACTORY_H -#define MITKTRANSFORMFACTORY_H - -#include "MitkRigidRegistrationExports.h" -#include "itkImage.h" -#include "itkTransform.h" -#include "mitkTransformParameters.h" - -namespace mitk -{ - /*! - \brief This class creates a transform for a rigid registration process. - - This class will e.g. be instantiated by mitkImageRegistrationMethod and a - transform corresponding to the integer value stored in mitkTransformParameters - will be created. Therefore SetTransformParameters() has to be called with an instance - of mitkTransformParameters, which holds all parameter informations for the new - transformation. - - GetTransform() returns the transform which then can be used in combination with a - metric, an optimizer and an interpolator within a registration pipeline. - - - \ingroup RigidRegistration - - \author Daniel Stein - */ - - template - class MITKRIGIDREGISTRATION_EXPORT TransformFactory : public itk::Object - { - public: - mitkClassMacroItkParent(TransformFactory, itk::Object); - - /** Method for creation through the object factory. */ - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typedef typename itk::Image FixedImage2DType; - typedef typename itk::Image MovingImage2DType; - typedef typename itk::Image FixedImage3DType; - typedef typename itk::Image MovingImage3DType; - - typedef typename itk::Transform TransformType; - - typedef typename TransformType::Pointer TransformPointer; - - /** - \brief Returns the transform which then can be used in combination with a metric, an optimizer - and an interpolator within a registration pipeline. - */ - TransformPointer GetTransform(); - - /** - \brief Sets the fixed image which is needed by transform initializer. - */ - void SetFixedImage(FixedImageType *fixed); - - /** - \brief Sets the moving image which is needed by transform initializer. - */ - void SetMovingImage(MovingImageType *moving); - - /** - \brief Sets the instance to the transform parameters class which holds all parameters for the new transform. - */ - void SetTransformParameters(TransformParameters::Pointer transformParameters) - { - m_TransformParameters = transformParameters; - } - - /** - \brief Returns the instance to the transform parameters class which holds all parameters for the new transform. - */ - TransformParameters::Pointer GetTransformParameters() { return m_TransformParameters; } - protected: - TransformFactory(); - ~TransformFactory(){}; - - TransformParameters::Pointer m_TransformParameters; - typename FixedImageType::Pointer m_FixedImage; - typename MovingImageType::Pointer m_MovingImage; - typename FixedImage2DType::Pointer m_FixedImage2D; - typename MovingImage2DType::Pointer m_MovingImage2D; - typename FixedImage3DType::Pointer m_FixedImage3D; - typename MovingImage3DType::Pointer m_MovingImage3D; - }; - -} // namespace mitk - -#include "mitkTransformFactory.txx" - -#endif // MITKTRANSFORMFACTORY_H diff --git a/Modules/RigidRegistration/mitkTransformFactory.txx b/Modules/RigidRegistration/mitkTransformFactory.txx deleted file mode 100644 index a5f9e618ea..0000000000 --- a/Modules/RigidRegistration/mitkTransformFactory.txx +++ /dev/null @@ -1,492 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkTransformFactory.h" -#include "mitkTransformParameters.h" - -#include "itkAffineTransform.h" -#include "itkAzimuthElevationToCartesianTransform.h" -#include "itkCenteredAffineTransform.h" -#include "itkCenteredTransformInitializer.h" -#include "itkFixedCenterOfRotationAffineTransform.h" -#include "itkScaleLogarithmicTransform.h" -#include "itkScaleTransform.h" -#include "itkTranslationTransform.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace mitk -{ - template - TransformFactory::TransformFactory() - : m_TransformParameters(NULL), - m_FixedImage(NULL), - m_MovingImage(NULL), - m_FixedImage2D(NULL), - m_MovingImage2D(NULL), - m_FixedImage3D(NULL), - m_MovingImage3D(NULL) - { - } - - template - void TransformFactory::SetFixedImage(FixedImageType *fixed) - { - if (VImageDimension == 2) - { - m_FixedImage2D = reinterpret_cast(fixed); - m_FixedImage = fixed; - } - else - { - m_FixedImage3D = reinterpret_cast(fixed); - ; - m_FixedImage = fixed; - } - } - - template - void TransformFactory::SetMovingImage(MovingImageType *moving) - { - if (VImageDimension == 2) - { - m_MovingImage2D = reinterpret_cast(moving); - m_MovingImage = moving; - } - else - { - m_MovingImage3D = reinterpret_cast(moving); - m_MovingImage = moving; - } - } - - /*template < class TPixelType, unsigned int VImageDimension > - typename ::itk::Transform< double, VImageDimension, VImageDimension >::Pointer - MakeRigidTransform(); - - template - typename ::itk::Transform< double, 3, 3 >::Pointer - MakeRigidTransform() - { - itk::Rigid3DTransform< double >::Pointer transform = itk::Rigid3DTransform< double >::New(); - transform->SetIdentity(); - return transform.GetPointer(); - } - - template - typename ::itk::Transform< double, 2, 2 >::Pointer - MakeRigidTransform() - { - return NULL; - }*/ - - /*template < unsigned int VImageDimension > - typename ::itk::Transform< double, VImageDimension, VImageDimension >::Pointer - MakeRigidTransform(); - - template <> - typename ::itk::Transform< double, 3, 3 >::Pointer - MakeRigidTransform<3>() - { - itk::Rigid3DTransform< double >::Pointer transform = itk::Rigid3DTransform< double >::New(); - transform->SetIdentity(); - return transform.GetPointer(); - } - - template <> - typename ::itk::Transform< double, 2, 2 >::Pointer - MakeRigidTransform<2>() - { - return NULL; - }*/ - // - // template class X - // { void f() { cout << "Primary template" << endl; } }; - // template class X - // { void f() { cout << "Partial specialization 3" << endl; - // } }; - // - // - // template < class TPixelType > class TransformFactory - //{ - // typedef typename itk::Transform< double, 3, 3 > TransformType; - // typedef typename TransformType::Pointer TransformPointer; - // - // typename TransformPointer MakeRigidTransform() - // { - // } - //}; - - // template <> - // typename TransformFactory< double, 3 >::TransformPointer - // TransformFactory< double, 3 >::MakeRigidTransform() - //{ - // itk::Rigid3DTransform< double >::Pointer transform = itk::Rigid3DTransform< double >::New(); - // transform->SetIdentity(); - // return transform.GetPointer(); - //} - - // template <> - // typename TransformFactory< double, 2 >::TransformPointer - // TransformFactory< double, 2 >::MakeRigidTransform() - //{ - // return NULL; - //} - - template - typename TransformFactory::TransformPointer - TransformFactory::GetTransform() - { - int transform = m_TransformParameters->GetTransform(); - if (transform == TransformParameters::TRANSLATIONTRANSFORM) - { - typename itk::TranslationTransform::Pointer transformPointer = - itk::TranslationTransform::New(); - transformPointer->SetIdentity(); - return transformPointer.GetPointer(); - } - else if (transform == TransformParameters::SCALETRANSFORM) - { - typename itk::ScaleTransform::Pointer transformPointer = - itk::ScaleTransform::New(); - transformPointer->SetIdentity(); - return transformPointer.GetPointer(); - } - else if (transform == TransformParameters::SCALELOGARITHMICTRANSFORM) - { - typename itk::ScaleLogarithmicTransform::Pointer transformPointer = - itk::ScaleLogarithmicTransform::New(); - transformPointer->SetIdentity(); - return transformPointer.GetPointer(); - } - else if (transform == TransformParameters::AFFINETRANSFORM) - { - typename itk::AffineTransform::Pointer transformPointer = - itk::AffineTransform::New(); - transformPointer->SetIdentity(); - if (m_TransformParameters->GetTransformInitializerOn()) - { - typedef typename itk::AffineTransform AffineTransformType; - typedef typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(m_FixedImage); - transformInitializer->SetMovingImage(m_MovingImage); - transformInitializer->SetTransform(transformPointer); - if (m_TransformParameters->GetMomentsOn()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - m_TransformParameters->SetTransformCenterZ(transformPointer->GetCenter()[2]); - return transformPointer.GetPointer(); - } - else if (transform == TransformParameters::FIXEDCENTEROFROTATIONAFFINETRANSFORM) - { - typedef typename itk::FixedCenterOfRotationAffineTransform CenteredAffineTransformType; - typename itk::FixedCenterOfRotationAffineTransform::Pointer transformPointer = - itk::FixedCenterOfRotationAffineTransform::New(); - transformPointer->SetIdentity(); - if (m_TransformParameters->GetTransformInitializerOn()) - { - typedef typename itk::FixedCenterOfRotationAffineTransform - FixedCenterOfRotationAffineTransformType; - typedef typename itk:: - CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(m_FixedImage); - transformInitializer->SetMovingImage(m_MovingImage); - transformInitializer->SetTransform(transformPointer); - if (m_TransformParameters->GetMomentsOn()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - m_TransformParameters->SetTransformCenterZ(transformPointer->GetCenter()[2]); - transformInitializer->InitializeTransform(); - } - return transformPointer.GetPointer(); - } - // TODO remove rigid3dTransform - // else if (transform == TransformParameters::RIGID3DTRANSFORM) - // { - // //return MakeRigidTransform(); - // if (VImageDimension == 3) - // { - // typename itk::Rigid3DTransform< double >::Pointer transformPointer = itk::Rigid3DTransform< double - // >::New(); - // transformPointer->SetIdentity(); - // m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - // m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - // m_TransformParameters->SetTransformCenterZ(transformPointer->GetCenter()[2]); - // return reinterpret_cast(transformPointer.GetPointer()); - // } - // } - else if (transform == TransformParameters::EULER3DTRANSFORM) - { - if (VImageDimension == 3) - { - typename itk::Euler3DTransform::Pointer transformPointer = itk::Euler3DTransform::New(); - transformPointer->SetIdentity(); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - m_TransformParameters->SetTransformCenterZ(transformPointer->GetCenter()[2]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::CENTEREDEULER3DTRANSFORM) - { - if (VImageDimension == 3) - { - typename itk::CenteredEuler3DTransform::Pointer transformPointer = - itk::CenteredEuler3DTransform::New(); - transformPointer->SetIdentity(); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - m_TransformParameters->SetTransformCenterZ(transformPointer->GetCenter()[2]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::QUATERNIONRIGIDTRANSFORM) - { - if (VImageDimension == 3) - { - typename itk::QuaternionRigidTransform::Pointer transformPointer = - itk::QuaternionRigidTransform::New(); - transformPointer->SetIdentity(); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - m_TransformParameters->SetTransformCenterZ(transformPointer->GetCenter()[2]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::VERSORTRANSFORM) - { - if (VImageDimension == 3) - { - typename itk::VersorTransform::Pointer transformPointer = itk::VersorTransform::New(); - transformPointer->SetIdentity(); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - m_TransformParameters->SetTransformCenterZ(transformPointer->GetCenter()[2]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::VERSORRIGID3DTRANSFORM) - { - if (VImageDimension == 3) - { - typename itk::VersorRigid3DTransform::Pointer transformPointer = - itk::VersorRigid3DTransform::New(); - transformPointer->SetIdentity(); - typedef typename itk::VersorRigid3DTransform VersorRigid3DTransformType; - if (m_TransformParameters->GetTransformInitializerOn()) - { - typedef - typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(m_FixedImage3D); - transformInitializer->SetMovingImage(m_MovingImage3D); - transformInitializer->SetTransform(transformPointer); - if (m_TransformParameters->GetMomentsOn()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - typedef VersorRigid3DTransformType::VersorType VersorType; - typedef VersorType::VectorType VectorType; - - VersorType rotation; - VectorType axis; - - axis[0] = 0.0; - axis[1] = 0.0; - axis[2] = 1.0; - - const double angle = 0; - - rotation.Set(axis, angle); - - transformPointer->SetRotation(rotation); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - m_TransformParameters->SetTransformCenterZ(transformPointer->GetCenter()[2]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::SCALESKEWVERSOR3DTRANSFORM) - { - if (VImageDimension == 3) - { - typename itk::ScaleSkewVersor3DTransform::Pointer transformPointer = - itk::ScaleSkewVersor3DTransform::New(); - transformPointer->SetIdentity(); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - m_TransformParameters->SetTransformCenterZ(transformPointer->GetCenter()[2]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::SIMILARITY3DTRANSFORM) - { - if (VImageDimension == 3) - { - typename itk::Similarity3DTransform::Pointer transformPointer = - itk::Similarity3DTransform::New(); - transformPointer->SetIdentity(); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - m_TransformParameters->SetTransformCenterZ(transformPointer->GetCenter()[2]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::RIGID2DTRANSFORM) - { - if (VImageDimension == 2) - { - typename itk::Rigid2DTransform::Pointer transformPointer = itk::Rigid2DTransform::New(); - transformPointer->SetIdentity(); - transformPointer->SetAngle(m_TransformParameters->GetAngle()); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::CENTEREDRIGID2DTRANSFORM) - { - if (VImageDimension == 2) - { - typename itk::CenteredRigid2DTransform::Pointer transformPointer = - itk::CenteredRigid2DTransform::New(); - transformPointer->SetIdentity(); - if (m_TransformParameters->GetTransformInitializerOn()) - { - typedef typename itk::CenteredRigid2DTransform CenteredRigid2DTransformType; - typedef typename itk:: - CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(m_FixedImage2D); - transformInitializer->SetMovingImage(m_MovingImage2D); - transformInitializer->SetTransform(transformPointer); - if (m_TransformParameters->GetMomentsOn()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - transformPointer->SetAngle(m_TransformParameters->GetAngle()); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::EULER2DTRANSFORM) - { - if (VImageDimension == 2) - { - typename itk::Euler2DTransform::Pointer transformPointer = itk::Euler2DTransform::New(); - transformPointer->SetIdentity(); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::SIMILARITY2DTRANSFORM) - { - if (VImageDimension == 2) - { - typename itk::Similarity2DTransform::Pointer transformPointer = - itk::Similarity2DTransform::New(); - transformPointer->SetIdentity(); - transformPointer->SetScale(m_TransformParameters->GetScale()); - transformPointer->SetAngle(m_TransformParameters->GetAngle()); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - else if (transform == TransformParameters::CENTEREDSIMILARITY2DTRANSFORM) - { - if (VImageDimension == 2) - { - typename itk::CenteredSimilarity2DTransform::Pointer transformPointer = - itk::CenteredSimilarity2DTransform::New(); - transformPointer->SetIdentity(); - if (m_TransformParameters->GetTransformInitializerOn()) - { - typedef typename itk::CenteredSimilarity2DTransform CenteredSimilarity2DTransformType; - typedef typename itk:: - CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(m_FixedImage2D); - transformInitializer->SetMovingImage(m_MovingImage2D); - transformInitializer->SetTransform(transformPointer); - if (m_TransformParameters->GetMomentsOn()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - transformPointer->SetScale(m_TransformParameters->GetScale()); - transformPointer->SetAngle(m_TransformParameters->GetAngle()); - m_TransformParameters->SetTransformCenterX(transformPointer->GetCenter()[0]); - m_TransformParameters->SetTransformCenterY(transformPointer->GetCenter()[1]); - return reinterpret_cast(transformPointer.GetPointer()); - } - } - return NULL; - } -} // end namespace diff --git a/Modules/RigidRegistration/mitkTransformParameters.cpp b/Modules/RigidRegistration/mitkTransformParameters.cpp deleted file mode 100644 index ec6920c6c9..0000000000 --- a/Modules/RigidRegistration/mitkTransformParameters.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkTransformParameters.h" - -namespace mitk -{ - TransformParameters::TransformParameters() - : m_Transform(TRANSLATIONTRANSFORM), - m_Angle(0.0), - m_Scale(1.0), - m_TransformInitializerOn(true), - m_MomentsOn(true), - m_UseOptimizerScales(true), - m_TransformCenterX(0.0), - m_TransformCenterY(0.0), - m_TransformCenterZ(0.0) - { - m_InitialParameters.set_size(0); - m_Scales.SetSize(16); - m_Scales.Fill(1.0); - } - - void TransformParameters::SetScales(itk::Array scales) { m_Scales = scales; } - itk::Array TransformParameters::GetScales() { return m_Scales; } - void TransformParameters::SetInitialParameters(itk::Array initialParameters) - { - m_InitialParameters = initialParameters; - } - - itk::Array TransformParameters::GetInitialParameters() { return m_InitialParameters; } -} // namespace mitk diff --git a/Modules/RigidRegistration/mitkTransformParameters.h b/Modules/RigidRegistration/mitkTransformParameters.h deleted file mode 100644 index a1726a7157..0000000000 --- a/Modules/RigidRegistration/mitkTransformParameters.h +++ /dev/null @@ -1,209 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKTRANSFORMPARAMETERS_H -#define MITKTRANSFORMPARAMETERS_H - -#include "MitkRigidRegistrationExports.h" -#include "mitkCommon.h" -#include -#include - -namespace mitk -{ - /*! - \brief This class is used to hold all transform parameters needed for a rigid registration process. - - To use the rigid registration framework you have to create an instance of this class and fill it with the parameters - belonging to the selected transformation. To let the rigid registration work properly, this instance has to be given - to mitkImageRegistrationMethod before calling the update() method in mitkImageRegistrationMethod. - - Also instances of the classes mitkMetricParameters and mitkOptimizerParameters have to be set in - mitkImageRegistrationMethod - before calling the update() method. - - - \ingroup RigidRegistration - - \author Daniel Stein - */ - - class MITKRIGIDREGISTRATION_EXPORT TransformParameters : public itk::Object - { - public: - mitkClassMacroItkParent(TransformParameters, ::itk::Object); - itkFactorylessNewMacro(Self) itkCloneMacro(Self) - - /** - \brief Unique integer value for every transform. - */ - enum TransformType { - TRANSLATIONTRANSFORM = 0, - SCALETRANSFORM, - SCALELOGARITHMICTRANSFORM, - AFFINETRANSFORM, - FIXEDCENTEROFROTATIONAFFINETRANSFORM, - EULER3DTRANSFORM, - CENTEREDEULER3DTRANSFORM, - QUATERNIONRIGIDTRANSFORM, - VERSORTRANSFORM, - VERSORRIGID3DTRANSFORM, - SCALESKEWVERSOR3DTRANSFORM, - SIMILARITY3DTRANSFORM, - RIGID2DTRANSFORM, - CENTEREDRIGID2DTRANSFORM, - EULER2DTRANSFORM, - SIMILARITY2DTRANSFORM, - CENTEREDSIMILARITY2DTRANSFORM - }; - - /** - \brief Sets the transform used for registration by its unique integer value. - */ - itkSetMacro(Transform, int); - /** - \brief Returns the transform used for registration by its unique integer value. - */ - itkGetMacro(Transform, int); - - /** - \brief Sets an array that holds the magnitudes of changes for the transforms degrees of freedom. - - The optimizer changes the transforms values corresponding to this array values. - */ - void SetScales(itk::Array scales); - /** - \brief Returns an array that holds the magnitudes of changes for the transforms degrees of freedom. - - The optimizer changes the transforms values corresponding to this array values. - */ - itk::Array GetScales(); - - /** - \brief Sets an array that holds the initial transform parameters. - */ - void SetInitialParameters(itk::Array initialParameters); - /** - \brief Returns an array that holds the initial transform parameters. - */ - itk::Array GetInitialParameters(); - - /** - \brief Sets whether a transform initializer will be used. - - True = initializer is used, initializer is not used. - */ - itkSetMacro(TransformInitializerOn, bool); - /** - \brief Returns whether a transform initializer will be used. - - True = initializer is used, false = initializer is not used. - */ - itkGetMacro(TransformInitializerOn, bool); - - /** - \brief Sets whether the transform initializer will be used to align the images moments or their centers. - - True = image moments will be aligned, false = image centers will be aligned. - */ - itkSetMacro(MomentsOn, bool); - /** - \brief Returns whether the transform initializer will be used to align the images moments or their centers. - - True = image moments will be aligned, false = image centers will be aligned. - */ - itkGetMacro(MomentsOn, bool); - - /** - \brief Sets whether the optimizer scales will be used to let the optimizer know about different magnitudes for - the transforms degrees of freedom. - - True = optimizer scales will be used, false = optimizer scales will not be used. - */ - itkSetMacro(UseOptimizerScales, bool); - /** - \brief Returns whether the optimizer scales will be used to let the optimizer know about different magnitudes for - the transforms degrees of freedom. - - True = optimizer scales will be used, false = optimizer scales will not be used. - */ - itkGetMacro(UseOptimizerScales, bool); - - /** - \brief Sets the initial angle for transforms. - */ - itkSetMacro(Angle, float); - /** - \brief Returns the initial angle for transforms. - */ - itkGetMacro(Angle, float); - - /** - \brief Sets the transforms initial scale. - */ - itkSetMacro(Scale, float); - /** - \brief Returns the transforms initial scale. - */ - itkGetMacro(Scale, float); - - /** - \brief This setter is used by the mitkTransformFactory to set the transforms initial center in X direction. - */ - itkSetMacro(TransformCenterX, double); - /** - \brief Returns the transforms initial center in X direction. - */ - itkGetMacro(TransformCenterX, double); - - /** - \brief This setter is used by the mitkTransformFactory to set the transforms initial center in Y direction. - */ - itkSetMacro(TransformCenterY, double); - /** - \brief Returns the transforms initial center in Y direction. - */ - itkGetMacro(TransformCenterY, double); - - /** - \brief This setter is used by the mitkTransformFactory to set the transforms initial center in Z direction. - */ - itkSetMacro(TransformCenterZ, double); - /** - \brief Returns the transforms initial center in Z direction. - */ - itkGetMacro(TransformCenterZ, double); - - protected: - TransformParameters(); - ~TransformParameters(){}; - - int m_Transform; - float m_Angle; - float m_Scale; - bool m_TransformInitializerOn; - bool m_MomentsOn; - bool m_UseOptimizerScales; - double m_TransformCenterX; - double m_TransformCenterY; - double m_TransformCenterZ; - itk::Array m_Scales; - itk::Array m_InitialParameters; - }; - -} // namespace mitk - -#endif // MITKTRANSFORMPARAMETERS_H diff --git a/Modules/RigidRegistrationUI/CMakeLists.txt b/Modules/RigidRegistrationUI/CMakeLists.txt deleted file mode 100644 index ba997f332e..0000000000 --- a/Modules/RigidRegistrationUI/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -MITK_CREATE_MODULE( - SUBPROJECTS MITK-Registration - INCLUDE_DIRS RigidRegistrationMetrics RigidRegistrationOptimizer RigidRegistrationTransforms - DEPENDS MitkQtWidgets MitkRigidRegistration -) diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricControls.ui deleted file mode 100644 index 219f93a38a..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricControls.ui +++ /dev/null @@ -1,85 +0,0 @@ - - - QmitkCorrelationCoefficientHistogramMetricControls - - - - 0 - 0 - 201 - 66 - - - - Form - - - - - - - - - 50 - false - - - - Number of Histogram Bins: - - - false - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 256 - - - Qt::AlignRight - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricView.cpp deleted file mode 100644 index d6b09a3610..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricView.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkCorrelationCoefficientHistogramMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -#include "QValidator" - -QmitkCorrelationCoefficientHistogramMetricView::QmitkCorrelationCoefficientHistogramMetricView(QWidget *parent, - Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkCorrelationCoefficientHistogramMetricView::~QmitkCorrelationCoefficientHistogramMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkCorrelationCoefficientHistogramMetricView::GetMetricType() -{ - return mitk::MetricParameters::CORRELATIONCOEFFICIENTHISTOGRAMIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkCorrelationCoefficientHistogramMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkCorrelationCoefficientHistogramMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::CorrelationCoefficientHistogramImageToImageMetric::Pointer - MetricPointer = itk::CorrelationCoefficientHistogramImageToImageMetric::New(); - unsigned int nBins = m_Controls.m_NumberOfHistogramBinsCorrelationCoefficientHistogram->text().toInt(); - typename itk::CorrelationCoefficientHistogramImageToImageMetric::HistogramType::SizeType - histogramSize; - histogramSize[0] = nBins; - histogramSize[1] = nBins; - MetricPointer->SetHistogramSize(histogramSize); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkCorrelationCoefficientHistogramMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(2); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - metricValues[1] = m_Controls.m_NumberOfHistogramBinsCorrelationCoefficientHistogram->text().toInt(); - return metricValues; -} - -void QmitkCorrelationCoefficientHistogramMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); - m_Controls.m_NumberOfHistogramBinsCorrelationCoefficientHistogram->setText(QString::number(metricValues[1])); -} - -QString QmitkCorrelationCoefficientHistogramMetricView::GetName() -{ - return "CorrelationCoefficientHistogram"; -} - -void QmitkCorrelationCoefficientHistogramMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_NumberOfHistogramBinsCorrelationCoefficientHistogram->setValidator(validatorLineEditInput); -} - -bool QmitkCorrelationCoefficientHistogramMetricView::Maximize() -{ - return true; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricView.h deleted file mode 100644 index 2f10d9ff09..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricView.h +++ /dev/null @@ -1,63 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkCorrelationCoefficientHistogramMetricViewWidgetHIncluded -#define QmitkCorrelationCoefficientHistogramMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkCorrelationCoefficientHistogramMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkCorrelationCoefficientHistogramMetricView - : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkCorrelationCoefficientHistogramMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkCorrelationCoefficientHistogramMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkCorrelationCoefficientHistogramMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkGradientDifferenceMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkGradientDifferenceMetricControls.ui deleted file mode 100644 index cf589914c0..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkGradientDifferenceMetricControls.ui +++ /dev/null @@ -1,43 +0,0 @@ - - - QmitkGradientDifferenceMetricControls - - - - 0 - 0 - 130 - 38 - - - - Form - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkGradientDifferenceMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkGradientDifferenceMetricView.cpp deleted file mode 100644 index 3b6705dd3c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkGradientDifferenceMetricView.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkGradientDifferenceMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -#include "QValidator" - -QmitkGradientDifferenceMetricView::QmitkGradientDifferenceMetricView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkGradientDifferenceMetricView::~QmitkGradientDifferenceMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkGradientDifferenceMetricView::GetMetricType() -{ - return mitk::MetricParameters::GRADIENTDIFFERENCEIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkGradientDifferenceMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkGradientDifferenceMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::GradientDifferenceImageToImageMetric::Pointer MetricPointer = - itk::GradientDifferenceImageToImageMetric::New(); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkGradientDifferenceMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(1); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - return metricValues; -} - -void QmitkGradientDifferenceMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); -} - -QString QmitkGradientDifferenceMetricView::GetName() -{ - return "GradientDifference"; -} - -void QmitkGradientDifferenceMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); -} - -bool QmitkGradientDifferenceMetricView::Maximize() -{ - return false; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkGradientDifferenceMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkGradientDifferenceMetricView.h deleted file mode 100644 index b93b5ad9b5..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkGradientDifferenceMetricView.h +++ /dev/null @@ -1,62 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkGradientDifferenceMetricViewWidgetHIncluded -#define QmitkGradientDifferenceMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkGradientDifferenceMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkGradientDifferenceMetricView : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkGradientDifferenceMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkGradientDifferenceMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkGradientDifferenceMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKappaStatisticMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKappaStatisticMetricControls.ui deleted file mode 100644 index 7a31243686..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKappaStatisticMetricControls.ui +++ /dev/null @@ -1,43 +0,0 @@ - - - QmitkKappaStatisticMetricControls - - - - 0 - 0 - 130 - 38 - - - - Form - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKappaStatisticMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKappaStatisticMetricView.cpp deleted file mode 100644 index 40438be22f..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKappaStatisticMetricView.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkKappaStatisticMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkKappaStatisticMetricView::QmitkKappaStatisticMetricView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkKappaStatisticMetricView::~QmitkKappaStatisticMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkKappaStatisticMetricView::GetMetricType() -{ - return mitk::MetricParameters::KAPPASTATISTICIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkKappaStatisticMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkKappaStatisticMetricView::GetMetric2(itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::KappaStatisticImageToImageMetric::Pointer MetricPointer = - itk::KappaStatisticImageToImageMetric::New(); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkKappaStatisticMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(1); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - return metricValues; -} - -void QmitkKappaStatisticMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); -} - -QString QmitkKappaStatisticMetricView::GetName() -{ - return "KappaStatistic"; -} - -void QmitkKappaStatisticMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); -} - -bool QmitkKappaStatisticMetricView::Maximize() -{ - return true; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKappaStatisticMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKappaStatisticMetricView.h deleted file mode 100644 index 308d92ebf9..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKappaStatisticMetricView.h +++ /dev/null @@ -1,62 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkKappaStatisticMetricViewWidgetHIncluded -#define QmitkKappaStatisticMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkKappaStatisticMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkKappaStatisticMetricView : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkKappaStatisticMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkKappaStatisticMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkKappaStatisticMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricControls.ui deleted file mode 100644 index 28c476d8ec..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricControls.ui +++ /dev/null @@ -1,85 +0,0 @@ - - - QmitkKullbackLeiblerCompareHistogramMetricControls - - - - 0 - 0 - 201 - 66 - - - - Form - - - - - - - - - 50 - false - - - - Number of Histogram Bins: - - - false - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 256 - - - Qt::AlignRight - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricView.cpp deleted file mode 100644 index 2ede24d149..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricView.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkKullbackLeiblerCompareHistogramMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -#include "QValidator" - -QmitkKullbackLeiblerCompareHistogramMetricView::QmitkKullbackLeiblerCompareHistogramMetricView(QWidget *parent, - Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkKullbackLeiblerCompareHistogramMetricView::~QmitkKullbackLeiblerCompareHistogramMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkKullbackLeiblerCompareHistogramMetricView::GetMetricType() -{ - return mitk::MetricParameters::KULLBACKLEIBLERCOMPAREHISTOGRAMIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkKullbackLeiblerCompareHistogramMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkKullbackLeiblerCompareHistogramMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::KullbackLeiblerCompareHistogramImageToImageMetric::Pointer - MetricPointer = itk::KullbackLeiblerCompareHistogramImageToImageMetric::New(); - unsigned int nBins = m_Controls.m_NumberOfHistogramBinsKullbackLeiblerCompareHistogram->text().toInt(); - typename itk::KullbackLeiblerCompareHistogramImageToImageMetric::HistogramType::SizeType - histogramSize; - histogramSize[0] = nBins; - histogramSize[1] = nBins; - MetricPointer->SetHistogramSize(histogramSize); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkKullbackLeiblerCompareHistogramMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(2); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - metricValues[1] = m_Controls.m_NumberOfHistogramBinsKullbackLeiblerCompareHistogram->text().toInt(); - return metricValues; -} - -void QmitkKullbackLeiblerCompareHistogramMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); - m_Controls.m_NumberOfHistogramBinsKullbackLeiblerCompareHistogram->setText(QString::number(metricValues[1])); -} - -QString QmitkKullbackLeiblerCompareHistogramMetricView::GetName() -{ - return "KullbackLeiblerCompareHistogram"; -} - -void QmitkKullbackLeiblerCompareHistogramMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_NumberOfHistogramBinsKullbackLeiblerCompareHistogram->setValidator(validatorLineEditInput); -} - -bool QmitkKullbackLeiblerCompareHistogramMetricView::Maximize() -{ - return false; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricView.h deleted file mode 100644 index 2c59b3a663..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricView.h +++ /dev/null @@ -1,63 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkKullbackLeiblerCompareHistogramMetricViewWidgetHIncluded -#define QmitkKullbackLeiblerCompareHistogramMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkKullbackLeiblerCompareHistogramMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkKullbackLeiblerCompareHistogramMetricView - : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkKullbackLeiblerCompareHistogramMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkKullbackLeiblerCompareHistogramMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkKullbackLeiblerCompareHistogramMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMatchCardinalityMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMatchCardinalityMetricControls.ui deleted file mode 100644 index 23eef5e8a1..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMatchCardinalityMetricControls.ui +++ /dev/null @@ -1,43 +0,0 @@ - - - QmitkMatchCardinalityMetricControls - - - - 0 - 0 - 130 - 38 - - - - Form - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMatchCardinalityMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMatchCardinalityMetricView.cpp deleted file mode 100644 index 375760100d..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMatchCardinalityMetricView.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkMatchCardinalityMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkMatchCardinalityMetricView::QmitkMatchCardinalityMetricView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkMatchCardinalityMetricView::~QmitkMatchCardinalityMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkMatchCardinalityMetricView::GetMetricType() -{ - return mitk::MetricParameters::MATCHCARDINALITYIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkMatchCardinalityMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkMatchCardinalityMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::MatchCardinalityImageToImageMetric::Pointer MetricPointer = - itk::MatchCardinalityImageToImageMetric::New(); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkMatchCardinalityMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(1); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - return metricValues; -} - -void QmitkMatchCardinalityMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); -} - -QString QmitkMatchCardinalityMetricView::GetName() -{ - return "MatchCardinality"; -} - -void QmitkMatchCardinalityMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); -} - -bool QmitkMatchCardinalityMetricView::Maximize() -{ - return false; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMatchCardinalityMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMatchCardinalityMetricView.h deleted file mode 100644 index 51fccc0a16..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMatchCardinalityMetricView.h +++ /dev/null @@ -1,62 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkMatchCardinalityMetricViewWidgetHIncluded -#define QmitkMatchCardinalityMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkMatchCardinalityMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkMatchCardinalityMetricView : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkMatchCardinalityMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkMatchCardinalityMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkMatchCardinalityMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMattesMutualInformationMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMattesMutualInformationMetricControls.ui deleted file mode 100644 index 536649195f..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMattesMutualInformationMetricControls.ui +++ /dev/null @@ -1,145 +0,0 @@ - - - QmitkMattesMutualInformationMetricControls - - - - 0 - 0 - 205 - 108 - - - - Form - - - - - - Use Spatial Samples - - - true - - - true - - - - 0 - - - - - - - - 50 - false - - - - Number of Spatial Samples: - - - false - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 10000 - - - Qt::AlignRight - - - - - - - - - - - - - - - 50 - false - - - - Number of Histogram Bins: - - - false - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 24 - - - Qt::AlignRight - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMattesMutualInformationMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMattesMutualInformationMetricView.cpp deleted file mode 100644 index 77624b16a6..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMattesMutualInformationMetricView.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkMattesMutualInformationMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkMattesMutualInformationMetricView::QmitkMattesMutualInformationMetricView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkMattesMutualInformationMetricView::~QmitkMattesMutualInformationMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkMattesMutualInformationMetricView::GetMetricType() -{ - return mitk::MetricParameters::MATTESMUTUALINFORMATIONIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkMattesMutualInformationMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkMattesMutualInformationMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::MattesMutualInformationImageToImageMetric::Pointer MetricPointer = - itk::MattesMutualInformationImageToImageMetric::New(); - bool useSampling = m_Controls.m_UseSamplingMattesMutualInformation->isChecked(); - if (useSampling) - { - // set the number of samples to use - MetricPointer->SetNumberOfSpatialSamples( - m_Controls.m_NumberOfSpatialSamplesMattesMutualInformation->text().toInt()); - } - else - { - MetricPointer->UseAllPixelsOn(); - } - MetricPointer->SetNumberOfHistogramBins(m_Controls.m_NumberOfHistogramBinsMattesMutualInformation->text().toInt()); - MetricPointer->ReinitializeSeed(76926294); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkMattesMutualInformationMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(4); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - metricValues[1] = m_Controls.m_UseSamplingMattesMutualInformation->isChecked(); - metricValues[2] = m_Controls.m_NumberOfSpatialSamplesMattesMutualInformation->text().toInt(); - metricValues[3] = m_Controls.m_NumberOfHistogramBinsMattesMutualInformation->text().toInt(); - return metricValues; -} - -void QmitkMattesMutualInformationMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); - m_Controls.m_UseSamplingMattesMutualInformation->setChecked(metricValues[1]); - m_Controls.m_NumberOfSpatialSamplesMattesMutualInformation->setText(QString::number(metricValues[2])); - m_Controls.m_NumberOfHistogramBinsMattesMutualInformation->setText(QString::number(metricValues[3])); -} - -QString QmitkMattesMutualInformationMetricView::GetName() -{ - return "MattesMutualInformation"; -} - -void QmitkMattesMutualInformationMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_NumberOfSpatialSamplesMattesMutualInformation->setValidator(validatorLineEditInput); - m_Controls.m_NumberOfHistogramBinsMattesMutualInformation->setValidator(validatorLineEditInput); -} - -bool QmitkMattesMutualInformationMetricView::Maximize() -{ - return true; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMattesMutualInformationMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMattesMutualInformationMetricView.h deleted file mode 100644 index 001e513e65..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMattesMutualInformationMetricView.h +++ /dev/null @@ -1,63 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkMattesMutualInformationMetricViewWidgetHIncluded -#define QmitkMattesMutualInformationMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkMattesMutualInformationMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkMattesMutualInformationMetricView - : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkMattesMutualInformationMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkMattesMutualInformationMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkMattesMutualInformationMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricControls.ui deleted file mode 100644 index a8a95b544f..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricControls.ui +++ /dev/null @@ -1,85 +0,0 @@ - - - QmitkMeanReciprocalSquareDifferenceMetricControls - - - - 0 - 0 - 130 - 66 - - - - Form - - - - - - - - - 50 - false - - - - Lambda: - - - false - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 10 - - - Qt::AlignRight - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricView.cpp deleted file mode 100644 index 2adab4fce7..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricView.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkMeanReciprocalSquareDifferenceMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -#include "QValidator" - -QmitkMeanReciprocalSquareDifferenceMetricView::QmitkMeanReciprocalSquareDifferenceMetricView(QWidget *parent, - Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkMeanReciprocalSquareDifferenceMetricView::~QmitkMeanReciprocalSquareDifferenceMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkMeanReciprocalSquareDifferenceMetricView::GetMetricType() -{ - return mitk::MetricParameters::MEANRECIPROCALSQUAREDIFFERENCEIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkMeanReciprocalSquareDifferenceMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkMeanReciprocalSquareDifferenceMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::MeanReciprocalSquareDifferenceImageToImageMetric::Pointer - MetricPointer = itk::MeanReciprocalSquareDifferenceImageToImageMetric::New(); - //------------------------------------------------------------ - // The lambda value is the intensity difference that should - // make the metric drop by 50% - //------------------------------------------------------------ - MetricPointer->SetLambda(m_Controls.m_LambdaMeanReciprocalSquareDifference->text().toInt()); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkMeanReciprocalSquareDifferenceMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(2); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - metricValues[1] = m_Controls.m_LambdaMeanReciprocalSquareDifference->text().toInt(); - return metricValues; -} - -void QmitkMeanReciprocalSquareDifferenceMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); - m_Controls.m_LambdaMeanReciprocalSquareDifference->setText(QString::number(metricValues[1])); -} - -QString QmitkMeanReciprocalSquareDifferenceMetricView::GetName() -{ - return "MeanReciprocalSquareDifference"; -} - -void QmitkMeanReciprocalSquareDifferenceMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_LambdaMeanReciprocalSquareDifference->setValidator(validatorLineEditInput); -} - -bool QmitkMeanReciprocalSquareDifferenceMetricView::Maximize() -{ - return false; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricView.h deleted file mode 100644 index ac4229eff3..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricView.h +++ /dev/null @@ -1,63 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkMeanReciprocalSquareDifferenceMetricViewWidgetHIncluded -#define QmitkMeanReciprocalSquareDifferenceMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkMeanReciprocalSquareDifferenceMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkMeanReciprocalSquareDifferenceMetricView - : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkMeanReciprocalSquareDifferenceMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkMeanReciprocalSquareDifferenceMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkMeanReciprocalSquareDifferenceMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricControls.ui deleted file mode 100644 index b475312806..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricControls.ui +++ /dev/null @@ -1,85 +0,0 @@ - - - QmitkMeanSquaresHistogramMetricControls - - - - 0 - 0 - 201 - 66 - - - - QmitkMeanSquaresHistogramMetricControls - - - - - - - - - 50 - false - - - - Number of Histogram Bins: - - - false - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 256 - - - Qt::AlignRight - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricView.cpp deleted file mode 100644 index 089a903237..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricView.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkMeanSquaresHistogramMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -#include "QValidator" - -QmitkMeanSquaresHistogramMetricView::QmitkMeanSquaresHistogramMetricView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkMeanSquaresHistogramMetricView::~QmitkMeanSquaresHistogramMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkMeanSquaresHistogramMetricView::GetMetricType() -{ - return mitk::MetricParameters::MEANSQUARESHISTOGRAMIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkMeanSquaresHistogramMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkMeanSquaresHistogramMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::MeanSquaresHistogramImageToImageMetric::Pointer MetricPointer = - itk::MeanSquaresHistogramImageToImageMetric::New(); - unsigned int nBins = m_Controls.m_NumberOfHistogramBinsMeanSquaresHistogram->text().toInt(); - typename itk::MeanSquaresHistogramImageToImageMetric::HistogramType::SizeType - histogramSize; - histogramSize[0] = nBins; - histogramSize[1] = nBins; - MetricPointer->SetHistogramSize(histogramSize); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkMeanSquaresHistogramMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(2); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - metricValues[1] = m_Controls.m_NumberOfHistogramBinsMeanSquaresHistogram->text().toInt(); - return metricValues; -} - -void QmitkMeanSquaresHistogramMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); - m_Controls.m_NumberOfHistogramBinsMeanSquaresHistogram->setText(QString::number(metricValues[1])); -} - -QString QmitkMeanSquaresHistogramMetricView::GetName() -{ - return "MeanSquaresHistogram"; -} - -void QmitkMeanSquaresHistogramMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_NumberOfHistogramBinsMeanSquaresHistogram->setValidator(validatorLineEditInput); -} - -bool QmitkMeanSquaresHistogramMetricView::Maximize() -{ - return false; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricView.h deleted file mode 100644 index 7d63d6236d..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricView.h +++ /dev/null @@ -1,62 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkMeanSquaresHistogramMetricViewWidgetHIncluded -#define QmitkMeanSquaresHistogramMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkMeanSquaresHistogramMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkMeanSquaresHistogramMetricView : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkMeanSquaresHistogramMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkMeanSquaresHistogramMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkMeanSquaresHistogramMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresMetricControls.ui deleted file mode 100644 index 413372fe6c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresMetricControls.ui +++ /dev/null @@ -1,43 +0,0 @@ - - - QmitkMeanSquaresMetricControls - - - - 0 - 0 - 130 - 38 - - - - QmitkMeanSquaresMetricControls - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresMetricView.cpp deleted file mode 100644 index 8a8817aa04..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresMetricView.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkMeanSquaresMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkMeanSquaresMetricView::QmitkMeanSquaresMetricView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkMeanSquaresMetricView::~QmitkMeanSquaresMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkMeanSquaresMetricView::GetMetricType() -{ - return mitk::MetricParameters::MEANSQUARESIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkMeanSquaresMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkMeanSquaresMetricView::GetMetric2(itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::MeanSquaresImageToImageMetric::Pointer MetricPointer = - itk::MeanSquaresImageToImageMetric::New(); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkMeanSquaresMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(1); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - return metricValues; -} - -void QmitkMeanSquaresMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); -} - -QString QmitkMeanSquaresMetricView::GetName() -{ - return "MeanSquares"; -} - -void QmitkMeanSquaresMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); -} - -bool QmitkMeanSquaresMetricView::Maximize() -{ - return false; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresMetricView.h deleted file mode 100644 index abc6ad4e6b..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMeanSquaresMetricView.h +++ /dev/null @@ -1,62 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkMeanSquaresMetricViewWidgetHIncluded -#define QmitkMeanSquaresMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkMeanSquaresMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkMeanSquaresMetricView : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkMeanSquaresMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkMeanSquaresMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkMeanSquaresMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricControls.ui deleted file mode 100644 index 3c6559abf0..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricControls.ui +++ /dev/null @@ -1,85 +0,0 @@ - - - QmitkMutualInformationHistogramMetricControls - - - - 0 - 0 - 201 - 66 - - - - Form - - - - - - - - - 50 - false - - - - Number of Histogram Bins: - - - false - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 256 - - - Qt::AlignRight - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricView.cpp deleted file mode 100644 index e3cc0e2767..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricView.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkMutualInformationHistogramMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -#include "QValidator" - -QmitkMutualInformationHistogramMetricView::QmitkMutualInformationHistogramMetricView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkMutualInformationHistogramMetricView::~QmitkMutualInformationHistogramMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkMutualInformationHistogramMetricView::GetMetricType() -{ - return mitk::MetricParameters::MUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkMutualInformationHistogramMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkMutualInformationHistogramMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::MutualInformationHistogramImageToImageMetric::Pointer MetricPointer = - itk::MutualInformationHistogramImageToImageMetric::New(); - unsigned int nBins = m_Controls.m_NumberOfHistogramBinsMutualInformationHistogram->text().toInt(); - typename itk::MutualInformationHistogramImageToImageMetric::HistogramType::SizeType - histogramSize; - histogramSize[0] = nBins; - histogramSize[1] = nBins; - MetricPointer->SetHistogramSize(histogramSize); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkMutualInformationHistogramMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(2); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - metricValues[1] = m_Controls.m_NumberOfHistogramBinsMutualInformationHistogram->text().toInt(); - return metricValues; -} - -void QmitkMutualInformationHistogramMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); - m_Controls.m_NumberOfHistogramBinsMutualInformationHistogram->setText(QString::number(metricValues[1])); -} - -QString QmitkMutualInformationHistogramMetricView::GetName() -{ - return "MutualInformationHistogram"; -} - -void QmitkMutualInformationHistogramMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_NumberOfHistogramBinsMutualInformationHistogram->setValidator(validatorLineEditInput); -} - -bool QmitkMutualInformationHistogramMetricView::Maximize() -{ - return false; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricView.h deleted file mode 100644 index 322f7852dd..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricView.h +++ /dev/null @@ -1,63 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkMutualInformationHistogramMetricViewWidgetHIncluded -#define QmitkMutualInformationHistogramMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkMutualInformationHistogramMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkMutualInformationHistogramMetricView - : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkMutualInformationHistogramMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkMutualInformationHistogramMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkMutualInformationHistogramMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationMetricControls.ui deleted file mode 100644 index a1fe2701f8..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationMetricControls.ui +++ /dev/null @@ -1,169 +0,0 @@ - - - QmitkMutualInformationMetricControls - - - - 0 - 0 - 244 - 120 - - - - Form - - - - - - - - - - - 50 - false - - - - Number of Spatial Samples in %: - - - false - - - - - - - - 50 - false - - - - Moving Image Standard Deviation: - - - false - - - - - - - - 50 - false - - - - Fixed Image Standard Deviation: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.4 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.4 - - - Qt::AlignRight - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationMetricView.cpp deleted file mode 100644 index dd2e43f637..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationMetricView.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkMutualInformationMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkMutualInformationMetricView::QmitkMutualInformationMetricView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkMutualInformationMetricView::~QmitkMutualInformationMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkMutualInformationMetricView::GetMetricType() -{ - return mitk::MetricParameters::MUTUALINFORMATIONIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkMutualInformationMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkMutualInformationMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::MutualInformationImageToImageMetric::Pointer MetricPointer = - itk::MutualInformationImageToImageMetric::New(); - MetricPointer->SetNumberOfSpatialSamples(m_Controls.m_NumberOfSpatialSamplesMutualInformation->text().toInt()); - MetricPointer->SetFixedImageStandardDeviation( - m_Controls.m_FixedImageStandardDeviationMutualInformation->text().toFloat()); - MetricPointer->SetMovingImageStandardDeviation( - m_Controls.m_MovingImageStandardDeviationMutualInformation->text().toFloat()); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkMutualInformationMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(4); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - metricValues[1] = m_Controls.m_NumberOfSpatialSamplesMutualInformation->text().toInt(); - metricValues[2] = m_Controls.m_FixedImageStandardDeviationMutualInformation->text().toFloat(); - metricValues[3] = m_Controls.m_MovingImageStandardDeviationMutualInformation->text().toFloat(); - return metricValues; -} - -void QmitkMutualInformationMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); - m_Controls.m_NumberOfSpatialSamplesMutualInformation->setText(QString::number(metricValues[1])); - m_Controls.m_FixedImageStandardDeviationMutualInformation->setText(QString::number(metricValues[2])); - m_Controls.m_MovingImageStandardDeviationMutualInformation->setText(QString::number(metricValues[3])); -} - -QString QmitkMutualInformationMetricView::GetName() -{ - return "MutualInformation"; -} - -void QmitkMutualInformationMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_NumberOfSpatialSamplesMutualInformation->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_FixedImageStandardDeviationMutualInformation->setValidator(validatorLineEditInputFloat); - m_Controls.m_MovingImageStandardDeviationMutualInformation->setValidator(validatorLineEditInputFloat); -} - -bool QmitkMutualInformationMetricView::Maximize() -{ - return true; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationMetricView.h deleted file mode 100644 index 62cd3bb9e9..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkMutualInformationMetricView.h +++ /dev/null @@ -1,62 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkMutualInformationMetricViewWidgetHIncluded -#define QmitkMutualInformationMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkMutualInformationMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkMutualInformationMetricView : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkMutualInformationMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkMutualInformationMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkMutualInformationMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricControls.ui deleted file mode 100644 index 563968fbaf..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricControls.ui +++ /dev/null @@ -1,43 +0,0 @@ - - - QmitkNormalizedCorrelationMetricControls - - - - 0 - 0 - 130 - 38 - - - - Form - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricView.cpp deleted file mode 100644 index 5d9109276e..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricView.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkNormalizedCorrelationMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -#include "QValidator" - -QmitkNormalizedCorrelationMetricView::QmitkNormalizedCorrelationMetricView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkNormalizedCorrelationMetricView::~QmitkNormalizedCorrelationMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkNormalizedCorrelationMetricView::GetMetricType() -{ - return mitk::MetricParameters::NORMALIZEDCORRELATIONIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkNormalizedCorrelationMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkNormalizedCorrelationMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::NormalizedCorrelationImageToImageMetric::Pointer MetricPointer = - itk::NormalizedCorrelationImageToImageMetric::New(); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkNormalizedCorrelationMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(1); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - return metricValues; -} - -void QmitkNormalizedCorrelationMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); -} - -QString QmitkNormalizedCorrelationMetricView::GetName() -{ - return "NormalizedCorrelation"; -} - -void QmitkNormalizedCorrelationMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); -} - -bool QmitkNormalizedCorrelationMetricView::Maximize() -{ - return true; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricView.h deleted file mode 100644 index 5ac9a3f32c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricView.h +++ /dev/null @@ -1,62 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkNormalizedCorrelationMetricViewWidgetHIncluded -#define QmitkNormalizedCorrelationMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkNormalizedCorrelationMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkNormalizedCorrelationMetricView : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkNormalizedCorrelationMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkNormalizedCorrelationMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkNormalizedCorrelationMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricControls.ui deleted file mode 100644 index b3865f8f88..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricControls.ui +++ /dev/null @@ -1,85 +0,0 @@ - - - QmitkNormalizedMutualInformationHistogramMetricControls - - - - 0 - 0 - 201 - 66 - - - - Form - - - - - - - - - 50 - false - - - - Number of Histogram Bins: - - - false - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 256 - - - Qt::AlignRight - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - Compute Gradient - - - true - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricView.cpp deleted file mode 100644 index 2afbc57dcf..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricView.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkNormalizedMutualInformationHistogramMetricView.h" -#include "mitkImageAccessByItk.h" -#include - -#include "QValidator" - -QmitkNormalizedMutualInformationHistogramMetricView::QmitkNormalizedMutualInformationHistogramMetricView( - QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationMetricsGUIBase(parent, f) -{ -} - -QmitkNormalizedMutualInformationHistogramMetricView::~QmitkNormalizedMutualInformationHistogramMetricView() -{ -} - -mitk::MetricParameters::MetricType QmitkNormalizedMutualInformationHistogramMetricView::GetMetricType() -{ - return mitk::MetricParameters::NORMALIZEDMUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC; -} - -itk::Object::Pointer QmitkNormalizedMutualInformationHistogramMetricView::GetMetric() -{ - if (m_MovingImage.IsNotNull()) - { - AccessByItk(m_MovingImage, GetMetric2); - return m_MetricObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkNormalizedMutualInformationHistogramMetricView::GetMetric2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::NormalizedMutualInformationHistogramImageToImageMetric::Pointer - MetricPointer = itk::NormalizedMutualInformationHistogramImageToImageMetric::New(); - unsigned int nBins = m_Controls.m_NumberOfHistogramBinsNormalizedMutualInformationHistogram->text().toInt(); - typename itk::NormalizedMutualInformationHistogramImageToImageMetric::HistogramType::SizeType - histogramSize; - histogramSize[0] = nBins; - histogramSize[1] = nBins; - MetricPointer->SetHistogramSize(histogramSize); - MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); - m_MetricObject = MetricPointer.GetPointer(); - return MetricPointer.GetPointer(); -} - -itk::Array QmitkNormalizedMutualInformationHistogramMetricView::GetMetricParameters() -{ - itk::Array metricValues; - metricValues.SetSize(2); - metricValues.fill(0); - metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); - metricValues[1] = m_Controls.m_NumberOfHistogramBinsNormalizedMutualInformationHistogram->text().toInt(); - return metricValues; -} - -void QmitkNormalizedMutualInformationHistogramMetricView::SetMetricParameters(itk::Array metricValues) -{ - m_Controls.m_ComputeGradient->setChecked(metricValues[0]); - m_Controls.m_NumberOfHistogramBinsNormalizedMutualInformationHistogram->setText(QString::number(metricValues[1])); -} - -QString QmitkNormalizedMutualInformationHistogramMetricView::GetName() -{ - return "NormalizedMutualInformationHistogram"; -} - -void QmitkNormalizedMutualInformationHistogramMetricView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_NumberOfHistogramBinsNormalizedMutualInformationHistogram->setValidator(validatorLineEditInput); -} - -bool QmitkNormalizedMutualInformationHistogramMetricView::Maximize() -{ - return true; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricView.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricView.h deleted file mode 100644 index 47b23e8751..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricView.h +++ /dev/null @@ -1,63 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkNormalizedMutualInformationHistogramMetricViewWidgetHIncluded -#define QmitkNormalizedMutualInformationHistogramMetricViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "ui_QmitkNormalizedMutualInformationHistogramMetricControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkNormalizedMutualInformationHistogramMetricView - : public QmitkRigidRegistrationMetricsGUIBase -{ -public: - QmitkNormalizedMutualInformationHistogramMetricView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkNormalizedMutualInformationHistogramMetricView(); - - virtual mitk::MetricParameters::MetricType GetMetricType() override; - - virtual itk::Object::Pointer GetMetric() override; - - virtual itk::Array GetMetricParameters() override; - - virtual void SetMetricParameters(itk::Array metricValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual bool Maximize() override; - -private: - template - itk::Object::Pointer GetMetric2(itk::Image *itkImage1); - -protected: - Ui::QmitkNormalizedMutualInformationHistogramMetricControls m_Controls; - - itk::Object::Pointer m_MetricObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkRigidRegistrationMetricsGUIBase.cpp b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkRigidRegistrationMetricsGUIBase.cpp deleted file mode 100644 index 477579e71d..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkRigidRegistrationMetricsGUIBase.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkRigidRegistrationMetricsGUIBase.h" - -QmitkRigidRegistrationMetricsGUIBase::QmitkRigidRegistrationMetricsGUIBase(QWidget *parent, Qt::WindowFlags f) - : QWidget(parent, f), m_MovingImage(nullptr) -{ -} - -QmitkRigidRegistrationMetricsGUIBase::~QmitkRigidRegistrationMetricsGUIBase() -{ -} - -void QmitkRigidRegistrationMetricsGUIBase::SetMovingImage(mitk::Image::Pointer movingImage) -{ - m_MovingImage = movingImage; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkRigidRegistrationMetricsGUIBase.h b/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkRigidRegistrationMetricsGUIBase.h deleted file mode 100644 index 7f3bc88905..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationMetrics/QmitkRigidRegistrationMetricsGUIBase.h +++ /dev/null @@ -1,59 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkRigidRegistrationMetricsGUIBaseH -#define QmitkRigidRegistrationMetricsGUIBaseH - -#include "MitkRigidRegistrationUIExports.h" -#include "mitkImage.h" -#include "mitkMetricParameters.h" -#include -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkRigidRegistrationMetricsGUIBase : public QWidget -{ -public: - QmitkRigidRegistrationMetricsGUIBase(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkRigidRegistrationMetricsGUIBase(); - - virtual mitk::MetricParameters::MetricType GetMetricType() = 0; - - virtual itk::Object::Pointer GetMetric() = 0; - - virtual itk::Array GetMetricParameters() = 0; - - virtual void SetMetricParameters(itk::Array metricValues) = 0; - - void SetMovingImage(mitk::Image::Pointer movingImage); - - virtual QString GetName() = 0; - - virtual void SetupUI(QWidget *parent) = 0; - - virtual bool Maximize() = 0; - -protected: - mitk::Image::Pointer m_MovingImage; -}; - -#endif // QmitkRigidRegistrationMetricsGUIBaseH diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkAmoebaOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkAmoebaOptimizerControls.ui deleted file mode 100644 index cf402d4750..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkAmoebaOptimizerControls.ui +++ /dev/null @@ -1,745 +0,0 @@ - - - QmitkAmoebaOptimizerControls - - - - 0 - 0 - 253 - 510 - - - - Form - - - - - - - - - - - 50 - false - - - - Simplex Delta 1: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 2: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 3: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 4: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 5: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 6: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 7: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 8: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 9: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 10: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 11: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 12: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 13: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 14: - - - false - - - - - - - - 50 - false - - - - Simplex Delta 15: - - - false - - - - - - - - 50 - false - - - - Parameters Convergence Tolerance: - - - false - - - - - - - - 50 - false - - - - Function Convergence Tolerance: - - - false - - - - - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - - 6 - - - QLayout::SetFixedSize - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 5.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.01 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 200 - - - Qt::AlignRight - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkAmoebaOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkAmoebaOptimizerView.cpp deleted file mode 100644 index 678cb4f017..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkAmoebaOptimizerView.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkAmoebaOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkAmoebaOptimizerView::QmitkAmoebaOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(15) -{ -} - -QmitkAmoebaOptimizerView::~QmitkAmoebaOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkAmoebaOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::AMOEBAOPTIMIZER; -} - -itk::Object::Pointer QmitkAmoebaOptimizerView::GetOptimizer() -{ - itk::AmoebaOptimizer::Pointer OptimizerPointer = itk::AmoebaOptimizer::New(); - OptimizerPointer->SetMaximize(m_Controls.m_Maximize->isChecked()); - OptimizerPointer->SetParametersConvergenceTolerance( - m_Controls.m_ParametersConvergenceToleranceAmoeba->text().toFloat()); - OptimizerPointer->SetFunctionConvergenceTolerance(m_Controls.m_FunctionConvergenceToleranceAmoeba->text().toFloat()); - typedef itk::SingleValuedNonLinearOptimizer OptimizerType; - OptimizerType::ParametersType simplexDelta(m_NumberTransformParameters); - itk::Array simplexDeltaAmoeba = this->GetOptimizerParameters(); - for (int i = 0; i < m_NumberTransformParameters; i++) - { - simplexDelta[i] = simplexDeltaAmoeba[i + 1]; - } - OptimizerPointer->AutomaticInitialSimplexOff(); - OptimizerPointer->SetInitialSimplexDelta(simplexDelta); - OptimizerPointer->SetMaximumNumberOfIterations(m_Controls.m_IterationsAmoeba->text().toInt()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkAmoebaOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(19); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_SimplexDeltaAmoeba1->text().toDouble(); - optimizerValues[2] = m_Controls.m_SimplexDeltaAmoeba2->text().toDouble(); - optimizerValues[3] = m_Controls.m_SimplexDeltaAmoeba3->text().toDouble(); - optimizerValues[4] = m_Controls.m_SimplexDeltaAmoeba4->text().toDouble(); - optimizerValues[5] = m_Controls.m_SimplexDeltaAmoeba5->text().toDouble(); - optimizerValues[6] = m_Controls.m_SimplexDeltaAmoeba6->text().toDouble(); - optimizerValues[7] = m_Controls.m_SimplexDeltaAmoeba7->text().toDouble(); - optimizerValues[8] = m_Controls.m_SimplexDeltaAmoeba8->text().toDouble(); - optimizerValues[9] = m_Controls.m_SimplexDeltaAmoeba9->text().toDouble(); - optimizerValues[10] = m_Controls.m_SimplexDeltaAmoeba10->text().toDouble(); - optimizerValues[11] = m_Controls.m_SimplexDeltaAmoeba11->text().toDouble(); - optimizerValues[12] = m_Controls.m_SimplexDeltaAmoeba12->text().toDouble(); - optimizerValues[13] = m_Controls.m_SimplexDeltaAmoeba13->text().toDouble(); - optimizerValues[14] = m_Controls.m_SimplexDeltaAmoeba14->text().toDouble(); - optimizerValues[15] = m_Controls.m_SimplexDeltaAmoeba15->text().toDouble(); - optimizerValues[16] = m_Controls.m_ParametersConvergenceToleranceAmoeba->text().toFloat(); - optimizerValues[17] = m_Controls.m_FunctionConvergenceToleranceAmoeba->text().toFloat(); - optimizerValues[18] = m_Controls.m_IterationsAmoeba->text().toInt(); - return optimizerValues; -} - -void QmitkAmoebaOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_SimplexDeltaAmoeba1->setText(QString::number(optimizerValues[1])); - m_Controls.m_SimplexDeltaAmoeba2->setText(QString::number(optimizerValues[2])); - m_Controls.m_SimplexDeltaAmoeba3->setText(QString::number(optimizerValues[3])); - m_Controls.m_SimplexDeltaAmoeba4->setText(QString::number(optimizerValues[4])); - m_Controls.m_SimplexDeltaAmoeba5->setText(QString::number(optimizerValues[5])); - m_Controls.m_SimplexDeltaAmoeba6->setText(QString::number(optimizerValues[6])); - m_Controls.m_SimplexDeltaAmoeba7->setText(QString::number(optimizerValues[7])); - m_Controls.m_SimplexDeltaAmoeba8->setText(QString::number(optimizerValues[8])); - m_Controls.m_SimplexDeltaAmoeba9->setText(QString::number(optimizerValues[9])); - m_Controls.m_SimplexDeltaAmoeba10->setText(QString::number(optimizerValues[10])); - m_Controls.m_SimplexDeltaAmoeba11->setText(QString::number(optimizerValues[11])); - m_Controls.m_SimplexDeltaAmoeba12->setText(QString::number(optimizerValues[12])); - m_Controls.m_SimplexDeltaAmoeba13->setText(QString::number(optimizerValues[13])); - m_Controls.m_SimplexDeltaAmoeba14->setText(QString::number(optimizerValues[14])); - m_Controls.m_SimplexDeltaAmoeba15->setText(QString::number(optimizerValues[15])); - m_Controls.m_ParametersConvergenceToleranceAmoeba->setText(QString::number(optimizerValues[16])); - m_Controls.m_FunctionConvergenceToleranceAmoeba->setText(QString::number(optimizerValues[17])); - m_Controls.m_IterationsAmoeba->setText(QString::number(optimizerValues[18])); -} - -void QmitkAmoebaOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; - this->ShowSimplexDelta(); -} - -QString QmitkAmoebaOptimizerView::GetName() -{ - return "Amoeba"; -} - -void QmitkAmoebaOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_IterationsAmoeba->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_SimplexDeltaAmoeba1->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba2->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba3->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba4->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba5->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba6->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba7->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba8->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba9->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba10->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba11->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba12->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba13->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba14->setValidator(validatorLineEditInputFloat); - m_Controls.m_SimplexDeltaAmoeba15->setValidator(validatorLineEditInputFloat); - m_Controls.m_ParametersConvergenceToleranceAmoeba->setValidator(validatorLineEditInputFloat); - m_Controls.m_FunctionConvergenceToleranceAmoeba->setValidator(validatorLineEditInputFloat); - simplexDeltaLineEdits.clear(); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba1); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba2); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba3); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba4); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba5); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba6); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba7); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba8); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba9); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba10); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba11); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba12); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba13); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba14); - simplexDeltaLineEdits.push_back(m_Controls.m_SimplexDeltaAmoeba15); - simplexDeltaLabels.clear(); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel1); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel2); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel3); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel4); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel5); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel6); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel7); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel8); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel9); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel10); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel11); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel12); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel13); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel14); - simplexDeltaLabels.push_back(m_Controls.m_SimplexDeltaAmoebaLabel15); -} - -void QmitkAmoebaOptimizerView::ShowSimplexDelta() -{ - auto it_edit = simplexDeltaLineEdits.begin(); - for (it_edit = simplexDeltaLineEdits.begin(); it_edit != simplexDeltaLineEdits.end(); it_edit++) - { - (*it_edit)->hide(); - } - it_edit = simplexDeltaLineEdits.begin(); - for (int i = 0; i < m_NumberTransformParameters; i++) - { - (*it_edit)->show(); - it_edit++; - } - auto it_label = simplexDeltaLabels.begin(); - for (it_label = simplexDeltaLabels.begin(); it_label != simplexDeltaLabels.end(); it_label++) - { - (*it_label)->hide(); - } - it_label = simplexDeltaLabels.begin(); - for (int i = 0; i < m_NumberTransformParameters; i++) - { - (*it_label)->show(); - it_label++; - } - this->updateGeometry(); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkAmoebaOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkAmoebaOptimizerView.h deleted file mode 100644 index ca2f4bb8ff..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkAmoebaOptimizerView.h +++ /dev/null @@ -1,66 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkAmoebaOptimizerViewWidgetHIncluded -#define QmitkAmoebaOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkAmoebaOptimizerControls.h" -#include -#include -#include - -class QLineEdit; - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkAmoebaOptimizerView : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkAmoebaOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkAmoebaOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -private: - void ShowSimplexDelta(); - -protected: - Ui::QmitkAmoebaOptimizerControls m_Controls; - - int m_NumberTransformParameters; - - std::list simplexDeltaLineEdits; - std::list simplexDeltaLabels; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerControls.ui deleted file mode 100644 index fa255d990c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerControls.ui +++ /dev/null @@ -1,43 +0,0 @@ - - - QmitkConjugateGradientOptimizerControls - - - - 0 - 0 - 162 - 38 - - - - Form - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerView.cpp deleted file mode 100644 index 1cb2107869..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerView.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkConjugateGradientOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkConjugateGradientOptimizerView::QmitkConjugateGradientOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkConjugateGradientOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::CONJUGATEGRADIENTOPTIMIZER; -} - -QmitkConjugateGradientOptimizerView::~QmitkConjugateGradientOptimizerView() -{ -} - -itk::Object::Pointer QmitkConjugateGradientOptimizerView::GetOptimizer() -{ - itk::ConjugateGradientOptimizer::Pointer OptimizerPointer = itk::ConjugateGradientOptimizer::New(); - OptimizerPointer->SetMaximize(m_Controls.m_Maximize->isChecked()); - /*typedef itk::ConjugateGradientOptimizer::InternalOptimizerType vnlOptimizerType; - vnlOptimizerType * vnlOptimizer = OptimizerPointer->GetOptimizer(); - vnlOptimizer->set_f_tolerance( 1e-3 ); - vnlOptimizer->set_g_tolerance( 1e-4 ); - vnlOptimizer->set_x_tolerance( 1e-8 ); - vnlOptimizer->set_epsilon_function( 1e-10 ); - vnlOptimizer->set_max_function_evals( m_Iterations ); - vnlOptimizer->set_check_derivatives( 3 );*/ - - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkConjugateGradientOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(1); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - return optimizerValues; -} - -void QmitkConjugateGradientOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); -} - -void QmitkConjugateGradientOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkConjugateGradientOptimizerView::GetName() -{ - return "ConjugateGradient"; -} - -void QmitkConjugateGradientOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerView.h deleted file mode 100644 index dc6f1ffa2c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerView.h +++ /dev/null @@ -1,58 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkConjugateGradientOptimizerViewWidgetHIncluded -#define QmitkConjugateGradientOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkConjugateGradientOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkConjugateGradientOptimizerView : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkConjugateGradientOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkConjugateGradientOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkConjugateGradientOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkExhaustiveOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkExhaustiveOptimizerControls.ui deleted file mode 100644 index dcf10ebab0..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkExhaustiveOptimizerControls.ui +++ /dev/null @@ -1,112 +0,0 @@ - - - QmitkExhaustiveOptimizerControls - - - - 0 - 0 - 162 - 68 - - - - Form - - - - - - - - - - - 50 - false - - - - Step Length: - - - false - - - - - - - - 50 - false - - - - Number of Steps: - - - false - - - - - - - - - 6 - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 10 - - - Qt::AlignRight - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkExhaustiveOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkExhaustiveOptimizerView.cpp deleted file mode 100644 index 282772365d..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkExhaustiveOptimizerView.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkExhaustiveOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkExhaustiveOptimizerView::QmitkExhaustiveOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkExhaustiveOptimizerView::~QmitkExhaustiveOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkExhaustiveOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::EXHAUSTIVEOPTIMIZER; -} - -itk::Object::Pointer QmitkExhaustiveOptimizerView::GetOptimizer() -{ - itk::ExhaustiveOptimizer::Pointer OptimizerPointer = itk::ExhaustiveOptimizer::New(); - OptimizerPointer->SetStepLength(m_Controls.m_StepLengthExhaustive->text().toFloat()); - itk::ExhaustiveOptimizer::StepsType steps(m_NumberTransformParameters); - for (int i = 0; i < m_NumberTransformParameters; i++) - { - steps[i] = m_Controls.m_NumberOfStepsExhaustive->text().toInt(); - } - OptimizerPointer->SetNumberOfSteps(steps); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkExhaustiveOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(1); - optimizerValues.fill(0); - optimizerValues[0] = 1; - optimizerValues[1] = m_Controls.m_StepLengthExhaustive->text().toFloat(); - optimizerValues[2] = m_Controls.m_NumberOfStepsExhaustive->text().toInt(); - return optimizerValues; -} - -void QmitkExhaustiveOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - // m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_StepLengthExhaustive->setText(QString::number(optimizerValues[1])); - m_Controls.m_NumberOfStepsExhaustive->setText(QString::number(optimizerValues[2])); -} - -void QmitkExhaustiveOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkExhaustiveOptimizerView::GetName() -{ - return "Exhaustive"; -} - -void QmitkExhaustiveOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_NumberOfStepsExhaustive->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_StepLengthExhaustive->setValidator(validatorLineEditInputFloat); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkExhaustiveOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkExhaustiveOptimizerView.h deleted file mode 100644 index 9d049c6f61..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkExhaustiveOptimizerView.h +++ /dev/null @@ -1,58 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkExhaustiveOptimizerViewWidgetHIncluded -#define QmitkExhaustiveOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkExhaustiveOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkExhaustiveOptimizerView : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkExhaustiveOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkExhaustiveOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkExhaustiveOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkFRPROptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkFRPROptimizerControls.ui deleted file mode 100644 index 6a92cc2101..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkFRPROptimizerControls.ui +++ /dev/null @@ -1,213 +0,0 @@ - - - QmitkFRPROptimizerControls - - - - 0 - 0 - 219 - 148 - - - - Form - - - - - - - - Type - - - - 0 - - - 0 - - - - - 0 - - - 9 - - - 9 - - - 9 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Fletch Reeves - - - true - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Polak Ribiere - - - - - - - - - - - - - - - - - 50 - false - - - - Step Length: - - - false - - - - - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.01 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 200 - - - Qt::AlignRight - - - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkFRPROptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkFRPROptimizerView.cpp deleted file mode 100644 index aec0d5b2a9..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkFRPROptimizerView.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkFRPROptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkFRPROptimizerView::QmitkFRPROptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkFRPROptimizerView::~QmitkFRPROptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkFRPROptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::FRPROPTIMIZER; -} - -itk::Object::Pointer QmitkFRPROptimizerView::GetOptimizer() -{ - itk::FRPROptimizer::Pointer OptimizerPointer = itk::FRPROptimizer::New(); - OptimizerPointer->SetMaximize(m_Controls.m_Maximize->isChecked()); - OptimizerPointer->SetStepLength(m_Controls.m_StepLengthFRPR->text().toFloat()); - if (m_Controls.m_FletchReevesFRPR->isChecked()) - { - OptimizerPointer->SetToFletchReeves(); - } - else - { - OptimizerPointer->SetToPolakRibiere(); - } - OptimizerPointer->SetMaximumIteration(m_Controls.m_IterationsFRPR->text().toInt()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkFRPROptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(4); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_FletchReevesFRPR->isChecked(); - optimizerValues[2] = m_Controls.m_StepLengthFRPR->text().toFloat(); - optimizerValues[3] = m_Controls.m_IterationsFRPR->text().toInt(); - return optimizerValues; -} - -void QmitkFRPROptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_FletchReevesFRPR->setChecked(optimizerValues[1]); - m_Controls.m_PolakRibiereFRPR->setChecked(!optimizerValues[1]); - m_Controls.m_StepLengthFRPR->setText(QString::number(optimizerValues[2])); - m_Controls.m_IterationsFRPR->setText(QString::number(optimizerValues[3])); -} - -void QmitkFRPROptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkFRPROptimizerView::GetName() -{ - return "FRPR"; -} - -void QmitkFRPROptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_IterationsFRPR->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_StepLengthFRPR->setValidator(validatorLineEditInputFloat); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkFRPROptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkFRPROptimizerView.h deleted file mode 100644 index 601d9ca3eb..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkFRPROptimizerView.h +++ /dev/null @@ -1,58 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkFRPROptimizerViewWidgetHIncluded -#define QmitkFRPROptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkFRPROptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkFRPROptimizerView : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkFRPROptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkFRPROptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkFRPROptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkGradientDescentOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkGradientDescentOptimizerControls.ui deleted file mode 100644 index 8ff2bbf7c5..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkGradientDescentOptimizerControls.ui +++ /dev/null @@ -1,131 +0,0 @@ - - - QmitkGradientDescentOptimizerControls - - - - 0 - 0 - 544 - 325 - - - - Form - - - - - - - - - - - 50 - false - - - - Learning Rate: - - - false - - - - - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.01 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 200 - - - Qt::AlignRight - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkGradientDescentOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkGradientDescentOptimizerView.cpp deleted file mode 100644 index f299baf296..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkGradientDescentOptimizerView.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkGradientDescentOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkGradientDescentOptimizerView::QmitkGradientDescentOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkGradientDescentOptimizerView::~QmitkGradientDescentOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkGradientDescentOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::GRADIENTDESCENTOPTIMIZER; -} - -itk::Object::Pointer QmitkGradientDescentOptimizerView::GetOptimizer() -{ - itk::GradientDescentOptimizer::Pointer OptimizerPointer = itk::GradientDescentOptimizer::New(); - // OptimizerPointer->SetMaximize( m_Controls.m_Maximize->isChecked()); - OptimizerPointer->SetLearningRate(m_Controls.m_LearningRateGradientDescent->text().toFloat()); - OptimizerPointer->SetNumberOfIterations(m_Controls.m_IterationsGradientDescent->text().toInt()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkGradientDescentOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(3); - optimizerValues.fill(0); - // optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_LearningRateGradientDescent->text().toFloat(); - optimizerValues[2] = m_Controls.m_IterationsGradientDescent->text().toInt(); - return optimizerValues; -} - -void QmitkGradientDescentOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - // m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_LearningRateGradientDescent->setText(QString::number(optimizerValues[1])); - m_Controls.m_IterationsGradientDescent->setText(QString::number(optimizerValues[2])); -} - -void QmitkGradientDescentOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkGradientDescentOptimizerView::GetName() -{ - return "GradientDescent"; -} - -void QmitkGradientDescentOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_IterationsGradientDescent->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_LearningRateGradientDescent->setValidator(validatorLineEditInputFloat); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkGradientDescentOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkGradientDescentOptimizerView.h deleted file mode 100644 index 9b5ae365fd..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkGradientDescentOptimizerView.h +++ /dev/null @@ -1,58 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkGradientDescentOptimizerViewWidgetHIncluded -#define QmitkGradientDescentOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkGradientDescentOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkGradientDescentOptimizerView : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkGradientDescentOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkGradientDescentOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkGradientDescentOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSBOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSBOptimizerControls.ui deleted file mode 100644 index 11572fc51a..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSBOptimizerControls.ui +++ /dev/null @@ -1,43 +0,0 @@ - - - QmitkLBFGSBOptimizerControls - - - - 0 - 0 - 162 - 38 - - - - Form - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSBOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSBOptimizerView.cpp deleted file mode 100644 index 48e4e67a93..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSBOptimizerView.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkLBFGSBOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkLBFGSBOptimizerView::QmitkLBFGSBOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkLBFGSBOptimizerView::~QmitkLBFGSBOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkLBFGSBOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::LBFGSBOPTIMIZER; -} - -itk::Object::Pointer QmitkLBFGSBOptimizerView::GetOptimizer() -{ - itk::LBFGSBOptimizer::Pointer OptimizerPointer = itk::LBFGSBOptimizer::New(); - // Set up boundary conditions - itk::LBFGSBOptimizer::BoundValueType lower(12); - itk::LBFGSBOptimizer::BoundValueType upper(12); - itk::LBFGSBOptimizer::BoundSelectionType select(12); - - lower.Fill(-1); - upper.Fill(10); - select.Fill(2); - - OptimizerPointer->SetLowerBound(lower); - OptimizerPointer->SetUpperBound(upper); - OptimizerPointer->SetBoundSelection(select); - OptimizerPointer->SetCostFunctionConvergenceFactor(1e+1); - OptimizerPointer->SetMaximumNumberOfCorrections(5); - OptimizerPointer->SetProjectedGradientTolerance(1e-5); - OptimizerPointer->SetMaximumNumberOfEvaluations(500); - OptimizerPointer->SetMaximumNumberOfIterations(200); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkLBFGSBOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(1); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - return optimizerValues; -} - -void QmitkLBFGSBOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); -} - -void QmitkLBFGSBOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkLBFGSBOptimizerView::GetName() -{ - return "LBFGSB"; -} - -void QmitkLBFGSBOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - /*QValidator* validatorLineEditInput = */ new QIntValidator(0, 20000000, this); - /*QValidator* validatorLineEditInputFloat = */ new QDoubleValidator(0, 20000000, 8, this); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSBOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSBOptimizerView.h deleted file mode 100644 index ff3b056cd5..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSBOptimizerView.h +++ /dev/null @@ -1,58 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkLBFGSBOptimizerViewWidgetHIncluded -#define QmitkLBFGSBOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkLBFGSBOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkLBFGSBOptimizerView : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkLBFGSBOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkLBFGSBOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkLBFGSBOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSOptimizerControls.ui deleted file mode 100644 index 2b96af4b09..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSOptimizerControls.ui +++ /dev/null @@ -1,226 +0,0 @@ - - - QmitkLBFGSOptimizerControls - - - - 0 - 0 - 225 - 152 - - - - Form - - - - - - - - - - - 50 - false - - - - Gradient Magnitude Tolerance: - - - false - - - - - - - - 50 - false - - - - Line Search Accuracy - - - false - - - - - - - - 50 - false - - - - Default Step Length - - - false - - - - - - - - 50 - false - - - - Max # Function Evaluations - - - false - - - - - - - - - 0 - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.0001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.1 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 200 - - - Qt::AlignRight - - - - - - - - - - - - 50 - false - - - - Trace - - - true - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSOptimizerView.cpp deleted file mode 100644 index e24e12bb6c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSOptimizerView.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkLBFGSOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkLBFGSOptimizerView::QmitkLBFGSOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkLBFGSOptimizerView::~QmitkLBFGSOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkLBFGSOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::LBFGSOPTIMIZER; -} - -itk::Object::Pointer QmitkLBFGSOptimizerView::GetOptimizer() -{ - itk::LBFGSOptimizer::Pointer OptimizerPointer = itk::LBFGSOptimizer::New(); - OptimizerPointer->SetMaximize(m_Controls.m_Maximize->isChecked()); - OptimizerPointer->SetGradientConvergenceTolerance(m_Controls.m_GradientMagnitudeToleranceLBFGS->text().toFloat()); - OptimizerPointer->SetLineSearchAccuracy(m_Controls.m_LineSearchAccuracyLBFGS->text().toFloat()); - OptimizerPointer->SetDefaultStepLength(m_Controls.m_DefaultStepLengthLBFGS->text().toFloat()); - OptimizerPointer->SetMaximumNumberOfFunctionEvaluations(m_Controls.m_MaximumEvaluationsLBFGS->text().toInt()); - OptimizerPointer->SetTrace(m_Controls.m_TraceOnLBFGS->isChecked()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkLBFGSOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(6); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_GradientMagnitudeToleranceLBFGS->text().toFloat(); - optimizerValues[2] = m_Controls.m_LineSearchAccuracyLBFGS->text().toFloat(); - optimizerValues[3] = m_Controls.m_DefaultStepLengthLBFGS->text().toFloat(); - optimizerValues[4] = m_Controls.m_MaximumEvaluationsLBFGS->text().toInt(); - optimizerValues[5] = m_Controls.m_TraceOnLBFGS->isChecked(); - return optimizerValues; -} - -void QmitkLBFGSOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_GradientMagnitudeToleranceLBFGS->setText(QString::number(optimizerValues[1])); - m_Controls.m_LineSearchAccuracyLBFGS->setText(QString::number(optimizerValues[2])); - m_Controls.m_DefaultStepLengthLBFGS->setText(QString::number(optimizerValues[3])); - m_Controls.m_MaximumEvaluationsLBFGS->setText(QString::number(optimizerValues[4])); - m_Controls.m_TraceOnLBFGS->setChecked(optimizerValues[5]); -} - -void QmitkLBFGSOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkLBFGSOptimizerView::GetName() -{ - return "LBFGS"; -} - -void QmitkLBFGSOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_MaximumEvaluationsLBFGS->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_GradientMagnitudeToleranceLBFGS->setValidator(validatorLineEditInputFloat); - m_Controls.m_LineSearchAccuracyLBFGS->setValidator(validatorLineEditInputFloat); - m_Controls.m_DefaultStepLengthLBFGS->setValidator(validatorLineEditInputFloat); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSOptimizerView.h deleted file mode 100644 index 4547e47b94..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkLBFGSOptimizerView.h +++ /dev/null @@ -1,58 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkLBFGSOptimizerViewWidgetHIncluded -#define QmitkLBFGSOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkLBFGSOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkLBFGSOptimizerView : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkLBFGSOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkLBFGSOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkLBFGSOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerControls.ui deleted file mode 100644 index a7fda47cb2..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerControls.ui +++ /dev/null @@ -1,245 +0,0 @@ - - - QmitkOnePlusOneEvolutionaryOptimizerControls - - - - 0 - 0 - 184 - 266 - - - - Form - - - - - - - - - - - 50 - false - - - - Shrink Factor: - - - false - - - - - - - - 50 - false - - - - Growth Factor: - - - false - - - - - - - - 50 - false - - - - Epsilon: - - - false - - - - - - - - 50 - false - - - - Initial Radius: - - - false - - - - - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.98787654742307407 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.05 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 10 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 200 - - - Qt::AlignRight - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerView.cpp deleted file mode 100644 index e2f5d5be2a..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerView.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkOnePlusOneEvolutionaryOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include -#include - -QmitkOnePlusOneEvolutionaryOptimizerView::QmitkOnePlusOneEvolutionaryOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkOnePlusOneEvolutionaryOptimizerView::~QmitkOnePlusOneEvolutionaryOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkOnePlusOneEvolutionaryOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::ONEPLUSONEEVOLUTIONARYOPTIMIZER; -} - -itk::Object::Pointer QmitkOnePlusOneEvolutionaryOptimizerView::GetOptimizer() -{ - itk::OnePlusOneEvolutionaryOptimizer::Pointer OptimizerPointer = itk::OnePlusOneEvolutionaryOptimizer::New(); - // OptimizerPointer->SetMaximize( m_Controls.m_Maximize->isChecked() ); - itk::Statistics::NormalVariateGenerator::Pointer generator = itk::Statistics::NormalVariateGenerator::New(); - generator->Initialize(12345); - OptimizerPointer->SetNormalVariateGenerator(generator); - OptimizerPointer->SetShrinkFactor(m_Controls.m_ShrinkFactorOnePlusOneEvolutionary->text().toFloat()); - OptimizerPointer->SetGrowthFactor(m_Controls.m_GrowthFactorOnePlusOneEvolutionary->text().toFloat()); - OptimizerPointer->SetEpsilon(m_Controls.m_EpsilonOnePlusOneEvolutionary->text().toFloat()); - OptimizerPointer->SetInitialRadius(m_Controls.m_InitialRadiusOnePlusOneEvolutionary->text().toFloat()); - OptimizerPointer->SetMaximumIteration(m_Controls.m_IterationsOnePlusOneEvolutionary->text().toInt()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkOnePlusOneEvolutionaryOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(6); - optimizerValues.fill(0); - // optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_ShrinkFactorOnePlusOneEvolutionary->text().toFloat(); - optimizerValues[2] = m_Controls.m_GrowthFactorOnePlusOneEvolutionary->text().toFloat(); - optimizerValues[3] = m_Controls.m_EpsilonOnePlusOneEvolutionary->text().toFloat(); - optimizerValues[4] = m_Controls.m_InitialRadiusOnePlusOneEvolutionary->text().toFloat(); - optimizerValues[5] = m_Controls.m_IterationsOnePlusOneEvolutionary->text().toInt(); - return optimizerValues; -} - -void QmitkOnePlusOneEvolutionaryOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - // m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_ShrinkFactorOnePlusOneEvolutionary->setText(QString::number(optimizerValues[1])); - m_Controls.m_GrowthFactorOnePlusOneEvolutionary->setText(QString::number(optimizerValues[2])); - m_Controls.m_EpsilonOnePlusOneEvolutionary->setText(QString::number(optimizerValues[3])); - m_Controls.m_InitialRadiusOnePlusOneEvolutionary->setText(QString::number(optimizerValues[4])); - m_Controls.m_IterationsOnePlusOneEvolutionary->setText(QString::number(optimizerValues[5])); -} - -void QmitkOnePlusOneEvolutionaryOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkOnePlusOneEvolutionaryOptimizerView::GetName() -{ - return "OnePlusOneEvolutionary"; -} - -void QmitkOnePlusOneEvolutionaryOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_EpsilonOnePlusOneEvolutionary->setValidator(validatorLineEditInput); - m_Controls.m_InitialRadiusOnePlusOneEvolutionary->setValidator(validatorLineEditInput); - m_Controls.m_IterationsOnePlusOneEvolutionary->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ShrinkFactorOnePlusOneEvolutionary->setValidator(validatorLineEditInputFloat); - m_Controls.m_GrowthFactorOnePlusOneEvolutionary->setValidator(validatorLineEditInputFloat); - m_Controls.m_EpsilonOnePlusOneEvolutionary->setValidator(validatorLineEditInputFloat); - m_Controls.m_InitialRadiusOnePlusOneEvolutionary->setValidator(validatorLineEditInputFloat); - m_Controls.m_IterationsOnePlusOneEvolutionary->setValidator(validatorLineEditInputFloat); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerView.h deleted file mode 100644 index 5c0be832c2..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerView.h +++ /dev/null @@ -1,59 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkOnePlusOneEvolutionaryOptimizerViewWidgetHIncluded -#define QmitkOnePlusOneEvolutionaryOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkOnePlusOneEvolutionaryOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkOnePlusOneEvolutionaryOptimizerView - : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkOnePlusOneEvolutionaryOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkOnePlusOneEvolutionaryOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkOnePlusOneEvolutionaryOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkPowellOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkPowellOptimizerControls.ui deleted file mode 100644 index 991501b212..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkPowellOptimizerControls.ui +++ /dev/null @@ -1,207 +0,0 @@ - - - QmitkPowellOptimizerControls - - - - 0 - 0 - 182 - 146 - - - - Form - - - - - - - - - - - 50 - false - - - - Step Length: - - - false - - - - - - - - 50 - false - - - - Step Tolerance: - - - false - - - - - - - - 50 - false - - - - Value Tolerance: - - - false - - - - - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.01 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 200 - - - Qt::AlignRight - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkPowellOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkPowellOptimizerView.cpp deleted file mode 100644 index a363dbccf9..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkPowellOptimizerView.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkPowellOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkPowellOptimizerView::QmitkPowellOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkPowellOptimizerView::~QmitkPowellOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkPowellOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::POWELLOPTIMIZER; -} - -itk::Object::Pointer QmitkPowellOptimizerView::GetOptimizer() -{ - itk::PowellOptimizer::Pointer OptimizerPointer = itk::PowellOptimizer::New(); - OptimizerPointer->SetMaximize(m_Controls.m_Maximize->isChecked()); - OptimizerPointer->SetStepLength(m_Controls.m_StepLengthPowell->text().toFloat()); - OptimizerPointer->SetStepTolerance(m_Controls.m_StepTolerancePowell->text().toFloat()); - OptimizerPointer->SetValueTolerance(m_Controls.m_ValueTolerancePowell->text().toFloat()); - OptimizerPointer->SetMaximumIteration(m_Controls.m_IterationsPowell->text().toInt()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkPowellOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(5); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_StepLengthPowell->text().toFloat(); - optimizerValues[2] = m_Controls.m_StepTolerancePowell->text().toFloat(); - optimizerValues[3] = m_Controls.m_ValueTolerancePowell->text().toFloat(); - optimizerValues[4] = m_Controls.m_IterationsPowell->text().toInt(); - return optimizerValues; -} - -void QmitkPowellOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_StepLengthPowell->setText(QString::number(optimizerValues[1])); - m_Controls.m_StepTolerancePowell->setText(QString::number(optimizerValues[2])); - m_Controls.m_ValueTolerancePowell->setText(QString::number(optimizerValues[3])); - m_Controls.m_IterationsPowell->setText(QString::number(optimizerValues[4])); -} - -void QmitkPowellOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkPowellOptimizerView::GetName() -{ - return "Powell"; -} - -void QmitkPowellOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_IterationsPowell->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_StepLengthPowell->setValidator(validatorLineEditInputFloat); - m_Controls.m_StepTolerancePowell->setValidator(validatorLineEditInputFloat); - m_Controls.m_ValueTolerancePowell->setValidator(validatorLineEditInputFloat); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkPowellOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkPowellOptimizerView.h deleted file mode 100644 index ce7149cce7..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkPowellOptimizerView.h +++ /dev/null @@ -1,58 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkPowellOptimizerViewWidgetHIncluded -#define QmitkPowellOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkPowellOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkPowellOptimizerView : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkPowellOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkPowellOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkPowellOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerControls.ui deleted file mode 100644 index 7b2bff5f05..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerControls.ui +++ /dev/null @@ -1,125 +0,0 @@ - - - QmitkQuaternionRigidTransformGradientDescentOptimizerControls - - - - 0 - 0 - 182 - 94 - - - - Form - - - - - - - - - - - 50 - false - - - - Learning Rate: - - - false - - - - - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.01 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - 200 - - - Qt::AlignRight - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerView.cpp deleted file mode 100644 index 8b143dbf6c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerView.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkQuaternionRigidTransformGradientDescentOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkQuaternionRigidTransformGradientDescentOptimizerView::QmitkQuaternionRigidTransformGradientDescentOptimizerView( - QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkQuaternionRigidTransformGradientDescentOptimizerView::~QmitkQuaternionRigidTransformGradientDescentOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkQuaternionRigidTransformGradientDescentOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::QUATERNIONRIGIDTRANSFORMGRADIENTDESCENTOPTIMIZER; -} - -itk::Object::Pointer QmitkQuaternionRigidTransformGradientDescentOptimizerView::GetOptimizer() -{ - itk::QuaternionRigidTransformGradientDescentOptimizer::Pointer OptimizerPointer = - itk::QuaternionRigidTransformGradientDescentOptimizer::New(); - OptimizerPointer->SetMaximize(m_Controls.m_Maximize->isChecked()); - OptimizerPointer->SetLearningRate(m_Controls.m_LearningRateQuaternionRigidTransformGradientDescent->text().toFloat()); - OptimizerPointer->SetNumberOfIterations( - m_Controls.m_IterationsQuaternionRigidTransformGradientDescent->text().toInt()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkQuaternionRigidTransformGradientDescentOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(3); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_LearningRateQuaternionRigidTransformGradientDescent->text().toFloat(); - optimizerValues[2] = m_Controls.m_IterationsQuaternionRigidTransformGradientDescent->text().toInt(); - return optimizerValues; -} - -void QmitkQuaternionRigidTransformGradientDescentOptimizerView::SetOptimizerParameters( - itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_LearningRateQuaternionRigidTransformGradientDescent->setText(QString::number(optimizerValues[1])); - m_Controls.m_IterationsQuaternionRigidTransformGradientDescent->setText(QString::number(optimizerValues[2])); -} - -void QmitkQuaternionRigidTransformGradientDescentOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkQuaternionRigidTransformGradientDescentOptimizerView::GetName() -{ - return "QuaternionRigidTransformGradientDescent"; -} - -void QmitkQuaternionRigidTransformGradientDescentOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_IterationsQuaternionRigidTransformGradientDescent->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_LearningRateQuaternionRigidTransformGradientDescent->setValidator(validatorLineEditInputFloat); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerView.h deleted file mode 100644 index ce6805cbaa..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerView.h +++ /dev/null @@ -1,59 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkQuaternionRigidTransformGradientDescentOptimizerViewWidgetHIncluded -#define QmitkQuaternionRigidTransformGradientDescentOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkQuaternionRigidTransformGradientDescentOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkQuaternionRigidTransformGradientDescentOptimizerView - : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkQuaternionRigidTransformGradientDescentOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkQuaternionRigidTransformGradientDescentOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkQuaternionRigidTransformGradientDescentOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerControls.ui deleted file mode 100644 index aa99c202b1..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerControls.ui +++ /dev/null @@ -1,245 +0,0 @@ - - - QmitkRegularStepGradientDescentOptimizerControls - - - - 0 - 0 - 225 - 172 - - - - Form - - - - - - - - - - - 50 - false - - - - Gradient Magnitude Tolerance: - - - false - - - - - - - - 50 - false - - - - Minimum Step Length: - - - false - - - - - - - - 50 - false - - - - Maximum Step Length: - - - false - - - - - - - - 50 - false - - - - Relaxation Factor: - - - false - - - - - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.0001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.5 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 100 - - - Qt::AlignRight - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerView.cpp deleted file mode 100644 index 7895b2aeaa..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerView.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkRegularStepGradientDescentOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkRegularStepGradientDescentOptimizerView::QmitkRegularStepGradientDescentOptimizerView(QWidget *parent, - Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkRegularStepGradientDescentOptimizerView::~QmitkRegularStepGradientDescentOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkRegularStepGradientDescentOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::REGULARSTEPGRADIENTDESCENTOPTIMIZER; -} - -itk::Object::Pointer QmitkRegularStepGradientDescentOptimizerView::GetOptimizer() -{ - itk::RegularStepGradientDescentOptimizer::Pointer OptimizerPointer = itk::RegularStepGradientDescentOptimizer::New(); - OptimizerPointer->SetMaximize(m_Controls.m_Maximize->isChecked()); - OptimizerPointer->SetGradientMagnitudeTolerance( - m_Controls.m_GradientMagnitudeToleranceRegularStepGradientDescent->text().toFloat()); - OptimizerPointer->SetMinimumStepLength(m_Controls.m_MinimumStepLengthRegularStepGradientDescent->text().toFloat()); - OptimizerPointer->SetMaximumStepLength(m_Controls.m_MaximumStepLengthRegularStepGradientDescent->text().toFloat()); - OptimizerPointer->SetRelaxationFactor(m_Controls.m_RelaxationFactorRegularStepGradientDescent->text().toFloat()); - OptimizerPointer->SetNumberOfIterations(m_Controls.m_IterationsRegularStepGradientDescent->text().toInt()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkRegularStepGradientDescentOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(6); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_GradientMagnitudeToleranceRegularStepGradientDescent->text().toFloat(); - optimizerValues[2] = m_Controls.m_MinimumStepLengthRegularStepGradientDescent->text().toFloat(); - optimizerValues[3] = m_Controls.m_MaximumStepLengthRegularStepGradientDescent->text().toFloat(); - optimizerValues[4] = m_Controls.m_RelaxationFactorRegularStepGradientDescent->text().toFloat(); - optimizerValues[5] = m_Controls.m_IterationsRegularStepGradientDescent->text().toInt(); - return optimizerValues; -} - -void QmitkRegularStepGradientDescentOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_GradientMagnitudeToleranceRegularStepGradientDescent->setText(QString::number(optimizerValues[1])); - m_Controls.m_MinimumStepLengthRegularStepGradientDescent->setText(QString::number(optimizerValues[2])); - m_Controls.m_MaximumStepLengthRegularStepGradientDescent->setText(QString::number(optimizerValues[3])); - m_Controls.m_RelaxationFactorRegularStepGradientDescent->setText(QString::number(optimizerValues[4])); - m_Controls.m_IterationsRegularStepGradientDescent->setText(QString::number(optimizerValues[5])); -} - -void QmitkRegularStepGradientDescentOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkRegularStepGradientDescentOptimizerView::GetName() -{ - return "RegularStepGradientDescent"; -} - -void QmitkRegularStepGradientDescentOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_IterationsRegularStepGradientDescent->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_GradientMagnitudeToleranceRegularStepGradientDescent->setValidator(validatorLineEditInputFloat); - m_Controls.m_MinimumStepLengthRegularStepGradientDescent->setValidator(validatorLineEditInputFloat); - m_Controls.m_MaximumStepLengthRegularStepGradientDescent->setValidator(validatorLineEditInputFloat); - QValidator *validatorLineEditInputFloat0to1 = new QDoubleValidator(0.000001, 0.999999, 8, this); - m_Controls.m_RelaxationFactorRegularStepGradientDescent->setValidator(validatorLineEditInputFloat0to1); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerView.h deleted file mode 100644 index 79f15dbea0..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerView.h +++ /dev/null @@ -1,59 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkRegularStepGradientDescentOptimizerViewWidgetHIncluded -#define QmitkRegularStepGradientDescentOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkRegularStepGradientDescentOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkRegularStepGradientDescentOptimizerView - : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkRegularStepGradientDescentOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkRegularStepGradientDescentOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkRegularStepGradientDescentOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRigidRegistrationOptimizerGUIBase.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRigidRegistrationOptimizerGUIBase.cpp deleted file mode 100644 index 83708f591c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRigidRegistrationOptimizerGUIBase.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkRigidRegistrationOptimizerGUIBase.h" - -QmitkRigidRegistrationOptimizerGUIBase::QmitkRigidRegistrationOptimizerGUIBase(QWidget *parent, Qt::WindowFlags f) - : QWidget(parent, f) -{ -} - -QmitkRigidRegistrationOptimizerGUIBase::~QmitkRigidRegistrationOptimizerGUIBase() -{ -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRigidRegistrationOptimizerGUIBase.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRigidRegistrationOptimizerGUIBase.h deleted file mode 100644 index d0868460e2..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkRigidRegistrationOptimizerGUIBase.h +++ /dev/null @@ -1,56 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkRigidRegistrationOptimizerGUIBaseH -#define QmitkRigidRegistrationOptimizerGUIBaseH - -#include "MitkRigidRegistrationUIExports.h" -#include "mitkImage.h" -#include "mitkOptimizerParameters.h" -#include -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkRigidRegistrationOptimizerGUIBase : public QWidget -{ -public: - QmitkRigidRegistrationOptimizerGUIBase(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkRigidRegistrationOptimizerGUIBase(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() = 0; - - virtual itk::Object::Pointer GetOptimizer() = 0; - - virtual itk::Array GetOptimizerParameters() = 0; - - virtual void SetOptimizerParameters(itk::Array optimizerValues) = 0; - - virtual void SetNumberOfTransformParameters(int transformParameters) = 0; - - virtual QString GetName() = 0; - - virtual void SetupUI(QWidget *parent) = 0; - -protected: -}; - -#endif // QmitkRigidRegistrationOptimizerGUIBaseH diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkSPSAOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkSPSAOptimizerControls.ui deleted file mode 100644 index d36d46e476..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkSPSAOptimizerControls.ui +++ /dev/null @@ -1,501 +0,0 @@ - - - QmitkSPSAOptimizerControls - - - - 0 - 0 - 249 - 302 - - - - Form - - - - - - 6 - - - 0 - - - - - - - true - - - - 50 - false - - - - a: - - - false - - - - - - - true - - - - 50 - false - - - - A: - - - false - - - - - - - true - - - - 50 - false - - - - Alpha: - - - false - - - - - - - true - - - - 50 - false - - - - Gamma: - - - false - - - - - - - true - - - - 50 - false - - - - c: - - - false - - - - - - - true - - - - 50 - false - - - - Tolerance: - - - false - - - - - - - true - - - - 50 - false - - - - State Of Convergence Decay Rate: - - - false - - - - - - - true - - - - 50 - false - - - - Minimum Number of Iterations: - - - false - - - - - - - true - - - - 50 - false - - - - Number Of Perturbations: - - - false - - - - - - - true - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - 10.0 - - - Qt::AlignRight - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - 0.602 - - - Qt::AlignRight - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - 0.0001 - - - Qt::AlignRight - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - 0.101 - - - Qt::AlignRight - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - 1e-5 - - - Qt::AlignRight - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - 0.5 - - - Qt::AlignRight - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - 10 - - - Qt::AlignRight - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - 1 - - - Qt::AlignRight - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - 200 - - - Qt::AlignRight - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkSPSAOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkSPSAOptimizerView.cpp deleted file mode 100644 index 14a0f0dc9e..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkSPSAOptimizerView.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkSPSAOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkSPSAOptimizerView::QmitkSPSAOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkSPSAOptimizerView::~QmitkSPSAOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkSPSAOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::SPSAOPTIMIZER; -} - -itk::Object::Pointer QmitkSPSAOptimizerView::GetOptimizer() -{ - itk::SPSAOptimizer::Pointer OptimizerPointer = itk::SPSAOptimizer::New(); - OptimizerPointer->SetMaximize(m_Controls.m_Maximize->isChecked()); - OptimizerPointer->Seta(m_Controls.m_aSPSA->text().toFloat()); - OptimizerPointer->SetA(m_Controls.m_ASPSA->text().toFloat()); - OptimizerPointer->SetAlpha(m_Controls.m_AlphaSPSA->text().toFloat()); - OptimizerPointer->Setc(m_Controls.m_cSPSA->text().toFloat()); - OptimizerPointer->SetGamma(m_Controls.m_GammaSPSA->text().toFloat()); - OptimizerPointer->SetTolerance(m_Controls.m_ToleranceSPSA->text().toFloat()); - OptimizerPointer->SetStateOfConvergenceDecayRate(m_Controls.m_StateOfConvergenceDecayRateSPSA->text().toFloat()); - OptimizerPointer->SetMinimumNumberOfIterations(m_Controls.m_MinimumNumberOfIterationsSPSA->text().toInt()); - OptimizerPointer->SetNumberOfPerturbations(m_Controls.m_NumberOfPerturbationsSPSA->text().toInt()); - OptimizerPointer->SetMaximumNumberOfIterations(m_Controls.m_IterationsSPSA->text().toInt()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkSPSAOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(3); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_aSPSA->text().toFloat(); - optimizerValues[2] = m_Controls.m_ASPSA->text().toFloat(); - optimizerValues[3] = m_Controls.m_AlphaSPSA->text().toFloat(); - optimizerValues[4] = m_Controls.m_cSPSA->text().toFloat(); - optimizerValues[5] = m_Controls.m_GammaSPSA->text().toFloat(); - optimizerValues[6] = m_Controls.m_ToleranceSPSA->text().toFloat(); - optimizerValues[7] = m_Controls.m_StateOfConvergenceDecayRateSPSA->text().toFloat(); - optimizerValues[8] = m_Controls.m_MinimumNumberOfIterationsSPSA->text().toInt(); - optimizerValues[9] = m_Controls.m_NumberOfPerturbationsSPSA->text().toInt(); - optimizerValues[10] = m_Controls.m_IterationsSPSA->text().toInt(); - return optimizerValues; -} - -void QmitkSPSAOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_aSPSA->setText(QString::number(optimizerValues[1])); - m_Controls.m_ASPSA->setText(QString::number(optimizerValues[2])); - m_Controls.m_AlphaSPSA->setText(QString::number(optimizerValues[3])); - m_Controls.m_cSPSA->setText(QString::number(optimizerValues[4])); - m_Controls.m_GammaSPSA->setText(QString::number(optimizerValues[5])); - m_Controls.m_ToleranceSPSA->setText(QString::number(optimizerValues[6])); - m_Controls.m_StateOfConvergenceDecayRateSPSA->setText(QString::number(optimizerValues[7])); - m_Controls.m_MinimumNumberOfIterationsSPSA->setText(QString::number(optimizerValues[8])); - m_Controls.m_NumberOfPerturbationsSPSA->setText(QString::number(optimizerValues[9])); - m_Controls.m_IterationsSPSA->setText(QString::number(optimizerValues[10])); -} - -void QmitkSPSAOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkSPSAOptimizerView::GetName() -{ - return "SPSA"; -} - -void QmitkSPSAOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_MinimumNumberOfIterationsSPSA->setValidator(validatorLineEditInput); - m_Controls.m_NumberOfPerturbationsSPSA->setValidator(validatorLineEditInput); - m_Controls.m_IterationsSPSA->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_aSPSA->setValidator(validatorLineEditInputFloat); - m_Controls.m_ASPSA->setValidator(validatorLineEditInputFloat); - m_Controls.m_AlphaSPSA->setValidator(validatorLineEditInputFloat); - m_Controls.m_cSPSA->setValidator(validatorLineEditInputFloat); - m_Controls.m_GammaSPSA->setValidator(validatorLineEditInputFloat); - m_Controls.m_ToleranceSPSA->setValidator(validatorLineEditInputFloat); - m_Controls.m_StateOfConvergenceDecayRateSPSA->setValidator(validatorLineEditInputFloat); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkSPSAOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkSPSAOptimizerView.h deleted file mode 100644 index 536fd51c57..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkSPSAOptimizerView.h +++ /dev/null @@ -1,58 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkSPSAOptimizerViewWidgetHIncluded -#define QmitkSPSAOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkSPSAOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkSPSAOptimizerView : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkSPSAOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkSPSAOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkSPSAOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerControls.ui deleted file mode 100644 index e6d2a1952a..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerControls.ui +++ /dev/null @@ -1,207 +0,0 @@ - - - QmitkVersorRigid3DTransformOptimizerControls - - - - 0 - 0 - 225 - 146 - - - - Form - - - - - - - - - - - 50 - false - - - - Gradient Magnitude Tolerance: - - - false - - - - - - - - 50 - false - - - - Minimum Step Length: - - - false - - - - - - - - 50 - false - - - - Maximum Step Length: - - - false - - - - - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.0001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.0001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 4.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 200 - - - Qt::AlignRight - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerView.cpp deleted file mode 100644 index 304af9adb4..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerView.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkVersorRigid3DTransformOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkVersorRigid3DTransformOptimizerView::QmitkVersorRigid3DTransformOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkVersorRigid3DTransformOptimizerView::~QmitkVersorRigid3DTransformOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkVersorRigid3DTransformOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::VERSORRIGID3DTRANSFORMOPTIMIZER; -} - -itk::Object::Pointer QmitkVersorRigid3DTransformOptimizerView::GetOptimizer() -{ - itk::VersorRigid3DTransformOptimizer::Pointer OptimizerPointer = itk::VersorRigid3DTransformOptimizer::New(); - OptimizerPointer->SetMaximize(m_Controls.m_Maximize->isChecked()); - OptimizerPointer->SetGradientMagnitudeTolerance( - m_Controls.m_GradientMagnitudeToleranceVersorRigid3DTransform->text().toFloat()); - OptimizerPointer->SetMinimumStepLength(m_Controls.m_MinimumStepLengthVersorRigid3DTransform->text().toFloat()); - OptimizerPointer->SetMaximumStepLength(m_Controls.m_MaximumStepLengthVersorRigid3DTransform->text().toFloat()); - OptimizerPointer->SetNumberOfIterations(m_Controls.m_IterationsVersorRigid3DTransform->text().toInt()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkVersorRigid3DTransformOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(5); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_GradientMagnitudeToleranceVersorRigid3DTransform->text().toFloat(); - optimizerValues[2] = m_Controls.m_MinimumStepLengthVersorRigid3DTransform->text().toFloat(); - optimizerValues[3] = m_Controls.m_MaximumStepLengthVersorRigid3DTransform->text().toFloat(); - optimizerValues[4] = m_Controls.m_IterationsVersorRigid3DTransform->text().toInt(); - return optimizerValues; -} - -void QmitkVersorRigid3DTransformOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_GradientMagnitudeToleranceVersorRigid3DTransform->setText(QString::number(optimizerValues[1])); - m_Controls.m_MinimumStepLengthVersorRigid3DTransform->setText(QString::number(optimizerValues[2])); - m_Controls.m_MaximumStepLengthVersorRigid3DTransform->setText(QString::number(optimizerValues[3])); - m_Controls.m_IterationsVersorRigid3DTransform->setText(QString::number(optimizerValues[4])); -} - -void QmitkVersorRigid3DTransformOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkVersorRigid3DTransformOptimizerView::GetName() -{ - return "VersorRigid3DTransform"; -} - -void QmitkVersorRigid3DTransformOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_IterationsVersorRigid3DTransform->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_GradientMagnitudeToleranceVersorRigid3DTransform->setValidator(validatorLineEditInputFloat); - m_Controls.m_MinimumStepLengthVersorRigid3DTransform->setValidator(validatorLineEditInputFloat); - m_Controls.m_MaximumStepLengthVersorRigid3DTransform->setValidator(validatorLineEditInputFloat); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerView.h deleted file mode 100644 index 90bbfc4aec..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerView.h +++ /dev/null @@ -1,59 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkVersorRigid3DOptimizerViewWidgetHIncluded -#define QmitkVersorRigid3DOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkVersorRigid3DTransformOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkVersorRigid3DTransformOptimizerView - : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkVersorRigid3DTransformOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkVersorRigid3DTransformOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkVersorRigid3DTransformOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorTransformOptimizerControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorTransformOptimizerControls.ui deleted file mode 100644 index b11debeb81..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorTransformOptimizerControls.ui +++ /dev/null @@ -1,207 +0,0 @@ - - - QmitkVersorTransformOptimizerControls - - - - 0 - 0 - 225 - 146 - - - - Form - - - - - - - - - - - 50 - false - - - - Gradient Magnitude Tolerance: - - - false - - - - - - - - 50 - false - - - - Minimum Step Length: - - - false - - - - - - - - 50 - false - - - - Maximum Step Length: - - - false - - - - - - - - 50 - false - - - - Number of Iterations: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.0001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.0001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 4.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 200 - - - Qt::AlignRight - - - - - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Maximize Optimizer Value - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorTransformOptimizerView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorTransformOptimizerView.cpp deleted file mode 100644 index b486a4df29..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorTransformOptimizerView.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkVersorTransformOptimizerView.h" -#include "mitkImageAccessByItk.h" -#include - -QmitkVersorTransformOptimizerView::QmitkVersorTransformOptimizerView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationOptimizerGUIBase(parent, f), m_NumberTransformParameters(16) -{ -} - -QmitkVersorTransformOptimizerView::~QmitkVersorTransformOptimizerView() -{ -} - -mitk::OptimizerParameters::OptimizerType QmitkVersorTransformOptimizerView::GetOptimizerType() -{ - return mitk::OptimizerParameters::VERSORTRANSFORMOPTIMIZER; -} - -itk::Object::Pointer QmitkVersorTransformOptimizerView::GetOptimizer() -{ - itk::VersorTransformOptimizer::Pointer OptimizerPointer = itk::VersorTransformOptimizer::New(); - OptimizerPointer->SetMaximize(m_Controls.m_Maximize->isChecked()); - OptimizerPointer->SetGradientMagnitudeTolerance( - m_Controls.m_GradientMagnitudeToleranceVersorTransform->text().toFloat()); - OptimizerPointer->SetMinimumStepLength(m_Controls.m_MinimumStepLengthVersorTransform->text().toFloat()); - OptimizerPointer->SetMaximumStepLength(m_Controls.m_MaximumStepLengthVersorTransform->text().toFloat()); - OptimizerPointer->SetNumberOfIterations(m_Controls.m_IterationsVersorTransform->text().toInt()); - return OptimizerPointer.GetPointer(); -} - -itk::Array QmitkVersorTransformOptimizerView::GetOptimizerParameters() -{ - itk::Array optimizerValues; - optimizerValues.SetSize(5); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_Maximize->isChecked(); - optimizerValues[1] = m_Controls.m_GradientMagnitudeToleranceVersorTransform->text().toFloat(); - optimizerValues[2] = m_Controls.m_MinimumStepLengthVersorTransform->text().toFloat(); - optimizerValues[3] = m_Controls.m_MaximumStepLengthVersorTransform->text().toFloat(); - optimizerValues[4] = m_Controls.m_IterationsVersorTransform->text().toInt(); - return optimizerValues; -} - -void QmitkVersorTransformOptimizerView::SetOptimizerParameters(itk::Array optimizerValues) -{ - m_Controls.m_Maximize->setChecked(optimizerValues[0]); - m_Controls.m_GradientMagnitudeToleranceVersorTransform->setText(QString::number(optimizerValues[1])); - m_Controls.m_MinimumStepLengthVersorTransform->setText(QString::number(optimizerValues[2])); - m_Controls.m_MaximumStepLengthVersorTransform->setText(QString::number(optimizerValues[3])); - m_Controls.m_IterationsVersorTransform->setText(QString::number(optimizerValues[4])); -} - -void QmitkVersorTransformOptimizerView::SetNumberOfTransformParameters(int transformParameters) -{ - m_NumberTransformParameters = transformParameters; -} - -QString QmitkVersorTransformOptimizerView::GetName() -{ - return "VersorTransform"; -} - -void QmitkVersorTransformOptimizerView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInput = new QIntValidator(0, 20000000, this); - m_Controls.m_IterationsVersorTransform->setValidator(validatorLineEditInput); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_GradientMagnitudeToleranceVersorTransform->setValidator(validatorLineEditInputFloat); - m_Controls.m_MinimumStepLengthVersorTransform->setValidator(validatorLineEditInputFloat); - m_Controls.m_MaximumStepLengthVersorTransform->setValidator(validatorLineEditInputFloat); -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorTransformOptimizerView.h b/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorTransformOptimizerView.h deleted file mode 100644 index 760e2ebbe1..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationOptimizer/QmitkVersorTransformOptimizerView.h +++ /dev/null @@ -1,58 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkVersorTransformOptimizerViewWidgetHIncluded -#define QmitkVersorTransformOptimizerViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" -#include "ui_QmitkVersorTransformOptimizerControls.h" -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkVersorTransformOptimizerView : public QmitkRigidRegistrationOptimizerGUIBase -{ -public: - QmitkVersorTransformOptimizerView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkVersorTransformOptimizerView(); - - virtual mitk::OptimizerParameters::OptimizerType GetOptimizerType() override; - - virtual itk::Object::Pointer GetOptimizer() override; - - virtual itk::Array GetOptimizerParameters() override; - - virtual void SetOptimizerParameters(itk::Array metricValues) override; - - virtual void SetNumberOfTransformParameters(int transformParameters) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - -protected: - Ui::QmitkVersorTransformOptimizerControls m_Controls; - - int m_NumberTransformParameters; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkAffineTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkAffineTransformControls.ui deleted file mode 100644 index fb0273984a..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkAffineTransformControls.ui +++ /dev/null @@ -1,596 +0,0 @@ - - - QmitkAffineTransformControls - - - - 0 - 0 - 173 - 378 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale 1: - - - false - - - - - - - - 50 - false - - - - Scale 2: - - - false - - - - - - - - 50 - false - - - - Scale 3: - - - false - - - - - - - - 50 - false - - - - Scale 4: - - - false - - - - - - - - 50 - false - - - - Scale 5: - - - false - - - - - - - - 50 - false - - - - Scale 6: - - - false - - - - - - - - 50 - false - - - - Scale 7: - - - false - - - - - - - - 50 - false - - - - Scale 8: - - - false - - - - - - - - 50 - false - - - - Scale 9: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkAffineTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkAffineTransformView.cpp deleted file mode 100644 index cd3736fd69..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkAffineTransformView.cpp +++ /dev/null @@ -1,269 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkAffineTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkAffineTransformView::QmitkAffineTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkAffineTransformView::~QmitkAffineTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkAffineTransformView::GetTransformType() -{ - return mitk::TransformParameters::AFFINETRANSFORM; -} - -itk::Object::Pointer QmitkAffineTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessTwoImagesFixedDimensionByItk(m_FixedImage, m_MovingImage, GetTransform2, 3); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkAffineTransformView::GetTransform2(itk::Image *itkImage1, - itk::Image *itkImage2) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImageType::Pointer fixedImage = itkImage1; - - // // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - // typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - // movingImageToItk->SetInput(m_MovingImage); - // movingImageToItk->Update(); - typename MovingImageType::Pointer movingImage = itkImage2; - - typename itk::AffineTransform::Pointer transformPointer = - itk::AffineTransform::New(); - transformPointer->SetIdentity(); - if (m_Controls.m_CenterForInitializerAffine->isChecked()) - { - typedef typename itk::AffineTransform AffineTransformType; - typedef typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage); - transformInitializer->SetMovingImage(movingImage); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsAffine->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_CenterZ = transformPointer->GetCenter()[2]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); -} - -itk::Array QmitkAffineTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(15); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesAffine->isChecked(); - transformValues[1] = m_Controls.m_ScalesAffineTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesAffineTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesAffineTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_ScalesAffineTransformScale4->text().toDouble(); - transformValues[5] = m_Controls.m_ScalesAffineTransformScale5->text().toDouble(); - transformValues[6] = m_Controls.m_ScalesAffineTransformScale6->text().toDouble(); - transformValues[7] = m_Controls.m_ScalesAffineTransformScale7->text().toDouble(); - transformValues[8] = m_Controls.m_ScalesAffineTransformScale8->text().toDouble(); - transformValues[9] = m_Controls.m_ScalesAffineTransformScale9->text().toDouble(); - transformValues[10] = m_Controls.m_ScalesAffineTransformScaleTranslationX->text().toDouble(); - transformValues[11] = m_Controls.m_ScalesAffineTransformScaleTranslationY->text().toDouble(); - transformValues[12] = m_Controls.m_ScalesAffineTransformScaleTranslationZ->text().toDouble(); - transformValues[13] = m_Controls.m_CenterForInitializerAffine->isChecked(); - transformValues[14] = m_Controls.m_MomentsAffine->isChecked(); - return transformValues; -} - -void QmitkAffineTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesAffine->setChecked(transformValues[0]); - m_Controls.m_ScalesAffineTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesAffineTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesAffineTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_ScalesAffineTransformScale4->setText(QString::number(transformValues[4])); - m_Controls.m_ScalesAffineTransformScale5->setText(QString::number(transformValues[5])); - m_Controls.m_ScalesAffineTransformScale6->setText(QString::number(transformValues[6])); - m_Controls.m_ScalesAffineTransformScale7->setText(QString::number(transformValues[7])); - m_Controls.m_ScalesAffineTransformScale8->setText(QString::number(transformValues[8])); - m_Controls.m_ScalesAffineTransformScale9->setText(QString::number(transformValues[9])); - m_Controls.m_ScalesAffineTransformScaleTranslationX->setText(QString::number(transformValues[10])); - m_Controls.m_ScalesAffineTransformScaleTranslationY->setText(QString::number(transformValues[11])); - m_Controls.m_ScalesAffineTransformScaleTranslationZ->setText(QString::number(transformValues[12])); - m_Controls.m_CenterForInitializerAffine->setChecked(transformValues[13]); - m_Controls.m_MomentsAffine->setChecked(transformValues[14]); - m_Controls.m_GeometryAffine->setChecked(!transformValues[14]); -} - -QString QmitkAffineTransformView::GetName() -{ - return "Affine"; -} - -void QmitkAffineTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesAffineTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScale3->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScale4->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScale5->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScale6->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScale7->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScale8->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScale9->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesAffineTransformScaleTranslationZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkAffineTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(12); - scales.Fill(1.0); - scales[0] = m_Controls.m_ScalesAffineTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesAffineTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesAffineTransformScale3->text().toDouble(); - scales[3] = m_Controls.m_ScalesAffineTransformScale4->text().toDouble(); - scales[4] = m_Controls.m_ScalesAffineTransformScale5->text().toDouble(); - scales[5] = m_Controls.m_ScalesAffineTransformScale6->text().toDouble(); - scales[6] = m_Controls.m_ScalesAffineTransformScale7->text().toDouble(); - scales[7] = m_Controls.m_ScalesAffineTransformScale8->text().toDouble(); - scales[8] = m_Controls.m_ScalesAffineTransformScale9->text().toDouble(); - scales[9] = m_Controls.m_ScalesAffineTransformScaleTranslationX->text().toDouble(); - scales[10] = m_Controls.m_ScalesAffineTransformScaleTranslationY->text().toDouble(); - scales[11] = m_Controls.m_ScalesAffineTransformScaleTranslationZ->text().toDouble(); - return scales; -} - -vtkTransform *QmitkAffineTransformView::Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - // - the 9 rotation-coefficients are copied - // directly to the top left part of the matrix - int m = 0; - for (unsigned int i = 0; i < m_FixedImage->GetDimension(); i++) - { - for (unsigned int j = 0; j < m_FixedImage->GetDimension(); j++) - { - vtkmatrix->SetElement(i, j, transformParams[m]); - m++; - } - } - - // - the 3 translation-coefficients are corrected to take - // into account the center of the transformation - float center[4]; - center[0] = m_CenterX; - center[1] = m_CenterY; - center[2] = m_CenterZ; - center[3] = 1; - std::cout << "rotation center: " << center[0] << " " << center[1] << " " << center[2] << std::endl; - - float translation[4]; - vtkmatrix->MultiplyPoint(center, translation); - if (m_FixedImage->GetDimension() == 2) - { - vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[4]); - vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[5]); - } - else if (m_FixedImage->GetDimension() == 3) - { - vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[9]); - vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[10]); - vtkmatrix->SetElement(2, 3, -translation[2] + center[2] + transformParams[11]); - } - - // set the transform matrix to init the transform - vtktransform->SetMatrix(vtkmatrix); - } - return vtktransform; -} - -int QmitkAffineTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - { - m_Controls.m_ScalesAffineTransformScale7->hide(); - m_Controls.m_ScalesAffineTransformScale8->hide(); - m_Controls.m_ScalesAffineTransformScale9->hide(); - m_Controls.m_ScalesAffineTransformScaleTranslationX->hide(); - m_Controls.m_ScalesAffineTransformScaleTranslationY->hide(); - m_Controls.m_ScalesAffineTransformScaleTranslationZ->hide(); - m_Controls.textLabel2_7->setText("Translation Scale X:"); - m_Controls.textLabel3_6->setText("Translation Scale Y:"); - m_Controls.textLabel4_4->hide(); - m_Controls.textLabel5_4->hide(); - m_Controls.textLabel6_4->hide(); - m_Controls.textLabel11_3->hide(); - m_Controls.textLabel12_3->hide(); - m_Controls.textLabel13_2->hide(); - return 6; - } - else - { - m_Controls.m_ScalesAffineTransformScale7->show(); - m_Controls.m_ScalesAffineTransformScale8->show(); - m_Controls.m_ScalesAffineTransformScale9->show(); - m_Controls.m_ScalesAffineTransformScaleTranslationX->show(); - m_Controls.m_ScalesAffineTransformScaleTranslationY->show(); - m_Controls.m_ScalesAffineTransformScaleTranslationZ->show(); - m_Controls.textLabel2_7->setText("Scale 5:"); - m_Controls.textLabel3_6->setText("Scale 6:"); - m_Controls.textLabel4_4->show(); - m_Controls.textLabel5_4->show(); - m_Controls.textLabel6_4->show(); - m_Controls.textLabel11_3->show(); - m_Controls.textLabel12_3->show(); - m_Controls.textLabel13_2->show(); - return 12; - } - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkAffineTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkAffineTransformView.h deleted file mode 100644 index fa849565af..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkAffineTransformView.h +++ /dev/null @@ -1,71 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkAffineTransformViewWidgetHIncluded -#define QmitkAffineTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkAffineTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkAffineTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkAffineTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkAffineTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1, - itk::Image *itkImage2); - -protected: - Ui::QmitkAffineTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredEuler3DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredEuler3DTransformControls.ui deleted file mode 100644 index 5e4f683b9b..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredEuler3DTransformControls.ui +++ /dev/null @@ -1,368 +0,0 @@ - - - QmitkCenteredEuler3DTransformControls - - - - 0 - 0 - 173 - 222 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Rotation X: - - - false - - - - - - - - 50 - false - - - - Scale Rotation Y: - - - false - - - - - - - - 50 - false - - - - Scale Rotation Z: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredEuler3DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredEuler3DTransformView.cpp deleted file mode 100644 index 1cde15257e..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredEuler3DTransformView.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkCenteredEuler3DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include - -QmitkCenteredEuler3DTransformView::QmitkCenteredEuler3DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkCenteredEuler3DTransformView::~QmitkCenteredEuler3DTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkCenteredEuler3DTransformView::GetTransformType() -{ - return mitk::TransformParameters::CENTEREDEULER3DTRANSFORM; -} - -itk::Object::Pointer QmitkCenteredEuler3DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessByItk(m_FixedImage, GetTransform2); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkCenteredEuler3DTransformView::GetTransform2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - if (VImageDimension == 3) - { - typename itk::CenteredEuler3DTransform::Pointer transformPointer = - itk::CenteredEuler3DTransform::New(); - transformPointer->SetIdentity(); - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_CenterZ = transformPointer->GetCenter()[2]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkCenteredEuler3DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(9); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesCenteredEuler3D->isChecked(); - transformValues[1] = m_Controls.m_ScalesCenteredEuler3DTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesCenteredEuler3DTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesCenteredEuler3DTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationX->text().toDouble(); - transformValues[5] = m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationY->text().toDouble(); - transformValues[6] = m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationZ->text().toDouble(); - transformValues[7] = m_Controls.m_CenterForInitializerCenteredEuler3D->isChecked(); - transformValues[8] = m_Controls.m_MomentsCenteredEuler3D->isChecked(); - return transformValues; -} - -void QmitkCenteredEuler3DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesCenteredEuler3D->setChecked(transformValues[0]); - m_Controls.m_ScalesCenteredEuler3DTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesCenteredEuler3DTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesCenteredEuler3DTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationX->setText(QString::number(transformValues[4])); - m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationY->setText(QString::number(transformValues[5])); - m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationZ->setText(QString::number(transformValues[6])); - m_Controls.m_CenterForInitializerCenteredEuler3D->setChecked(transformValues[7]); - m_Controls.m_MomentsCenteredEuler3D->setChecked(transformValues[8]); - m_Controls.m_GeometryCenteredEuler3D->setChecked(!transformValues[8]); -} - -QString QmitkCenteredEuler3DTransformView::GetName() -{ - return "CenteredEuler3D"; -} - -void QmitkCenteredEuler3DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesCenteredEuler3DTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesCenteredEuler3DTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesCenteredEuler3DTransformScale3->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkCenteredEuler3DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(6); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesCenteredEuler3D->isChecked()) - { - scales[0] = m_Controls.m_ScalesCenteredEuler3DTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesCenteredEuler3DTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesCenteredEuler3DTransformScale3->text().toDouble(); - scales[3] = m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationX->text().toDouble(); - scales[4] = m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationY->text().toDouble(); - scales[5] = m_Controls.m_ScalesCenteredEuler3DTransformScaleTranslationZ->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkCenteredEuler3DTransformView::Transform(vtkMatrix4x4 * /*vtkmatrix*/, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - mitk::ScalarType angleX = transformParams[0] * 45.0 / atan(1.0); - mitk::ScalarType angleY = transformParams[1] * 45.0 / atan(1.0); - mitk::ScalarType angleZ = transformParams[2] * 45.0 / atan(1.0); - vtktransform->PostMultiply(); - vtktransform->Translate(-m_CenterX, -m_CenterY, -m_CenterZ); - vtktransform->RotateX(angleX); - vtktransform->RotateY(angleY); - vtktransform->RotateZ(angleZ); - vtktransform->Translate(m_CenterX, m_CenterY, m_CenterZ); - vtktransform->Translate(transformParams[3], transformParams[4], transformParams[5]); - vtktransform->PreMultiply(); - } - return vtktransform; -} - -int QmitkCenteredEuler3DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 4; - else - return 6; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredEuler3DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredEuler3DTransformView.h deleted file mode 100644 index b33843629d..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredEuler3DTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkCenteredEuler3DTransformViewWidgetHIncluded -#define QmitkCenteredEuler3DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkCenteredEuler3DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkCenteredEuler3DTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkCenteredEuler3DTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkCenteredEuler3DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkCenteredEuler3DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredRigid2DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredRigid2DTransformControls.ui deleted file mode 100644 index 807255d24c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredRigid2DTransformControls.ui +++ /dev/null @@ -1,372 +0,0 @@ - - - QmitkCenteredRigid2DTransformControls - - - - 0 - 0 - 173 - 218 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - - - - 50 - false - - - - Angle: - - - false - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.0 - - - Qt::AlignRight - - - - - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Rotation: - - - false - - - - - - - - 50 - false - - - - Scale Center X: - - - false - - - - - - - - 50 - false - - - - Scale Center Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredRigid2DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredRigid2DTransformView.cpp deleted file mode 100644 index 95746a9c32..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredRigid2DTransformView.cpp +++ /dev/null @@ -1,191 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkCenteredRigid2DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkCenteredRigid2DTransformView::QmitkCenteredRigid2DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkCenteredRigid2DTransformView::~QmitkCenteredRigid2DTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkCenteredRigid2DTransformView::GetTransformType() -{ - return mitk::TransformParameters::CENTEREDRIGID2DTRANSFORM; -} - -itk::Object::Pointer QmitkCenteredRigid2DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessFixedDimensionByItk(m_FixedImage, GetTransform2, 2); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkCenteredRigid2DTransformView::GetTransform2( - itk::Image *itkImage1) -{ - if (VImageDimension == 2) - { - typedef typename itk::Image FixedImage2DType; - typedef typename itk::Image MovingImage2DType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImage2DType::Pointer fixedImage2D = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImage2DType::Pointer movingImage2D = movingImageToItk->GetOutput(); - - typename itk::CenteredRigid2DTransform::Pointer transformPointer = - itk::CenteredRigid2DTransform::New(); - transformPointer->SetIdentity(); - if (m_Controls.m_CenterForInitializerCenteredRigid2D->isChecked()) - { - typedef typename itk::CenteredRigid2DTransform CenteredRigid2DTransformType; - typedef - typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage2D); - transformInitializer->SetMovingImage(movingImage2D); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsCenteredRigid2D->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - transformPointer->SetAngle(m_Controls.m_AngleCenteredRigid2D->text().toFloat()); - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkCenteredRigid2DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(9); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesCenteredRigid2D->isChecked(); - transformValues[1] = m_Controls.m_RotationScaleCenteredRigid2D->text().toDouble(); - transformValues[2] = m_Controls.m_CenterXScaleCenteredRigid2D->text().toDouble(); - transformValues[3] = m_Controls.m_CenterYScaleCenteredRigid2D->text().toDouble(); - transformValues[4] = m_Controls.m_TranslationXScaleCenteredRigid2D->text().toDouble(); - transformValues[5] = m_Controls.m_TranslationYScaleCenteredRigid2D->text().toDouble(); - transformValues[6] = m_Controls.m_AngleCenteredRigid2D->text().toFloat(); - transformValues[7] = m_Controls.m_CenterForInitializerCenteredRigid2D->isChecked(); - transformValues[8] = m_Controls.m_MomentsCenteredRigid2D->isChecked(); - return transformValues; -} - -void QmitkCenteredRigid2DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesCenteredRigid2D->setChecked(transformValues[0]); - m_Controls.m_RotationScaleCenteredRigid2D->setText(QString::number(transformValues[1])); - m_Controls.m_CenterXScaleCenteredRigid2D->setText(QString::number(transformValues[2])); - m_Controls.m_CenterYScaleCenteredRigid2D->setText(QString::number(transformValues[3])); - m_Controls.m_TranslationXScaleCenteredRigid2D->setText(QString::number(transformValues[4])); - m_Controls.m_TranslationYScaleCenteredRigid2D->setText(QString::number(transformValues[5])); - m_Controls.m_AngleCenteredRigid2D->setText(QString::number(transformValues[6])); - m_Controls.m_CenterForInitializerCenteredRigid2D->setChecked(transformValues[7]); - m_Controls.m_MomentsCenteredRigid2D->setChecked(transformValues[8]); - m_Controls.m_GeometryCenteredRigid2D->setChecked(!transformValues[8]); -} - -QString QmitkCenteredRigid2DTransformView::GetName() -{ - return "CenteredRigid2D"; -} - -void QmitkCenteredRigid2DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_AngleCenteredRigid2D->setValidator(validatorLineEditInputFloat); - m_Controls.m_RotationScaleCenteredRigid2D->setValidator(validatorLineEditInputFloat); - m_Controls.m_CenterXScaleCenteredRigid2D->setValidator(validatorLineEditInputFloat); - m_Controls.m_CenterYScaleCenteredRigid2D->setValidator(validatorLineEditInputFloat); - m_Controls.m_TranslationXScaleCenteredRigid2D->setValidator(validatorLineEditInputFloat); - m_Controls.m_TranslationYScaleCenteredRigid2D->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkCenteredRigid2DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(5); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesCenteredRigid2D->isChecked()) - { - scales[0] = m_Controls.m_RotationScaleCenteredRigid2D->text().toDouble(); - scales[1] = m_Controls.m_CenterXScaleCenteredRigid2D->text().toDouble(); - scales[2] = m_Controls.m_CenterYScaleCenteredRigid2D->text().toDouble(); - scales[3] = m_Controls.m_TranslationXScaleCenteredRigid2D->text().toDouble(); - scales[4] = m_Controls.m_TranslationYScaleCenteredRigid2D->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkCenteredRigid2DTransformView::Transform(vtkMatrix4x4 * /* vtkmatrix */, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - mitk::ScalarType angle = transformParams[0] * 45.0 / atan(1.0); - ; - vtktransform->PostMultiply(); - vtktransform->Translate(-transformParams[1], -transformParams[2], 0); - vtktransform->RotateZ(angle); - vtktransform->Translate(transformParams[1], transformParams[2], 0); - vtktransform->Translate(transformParams[3], transformParams[4], 0); - vtktransform->PreMultiply(); - } - return vtktransform; -} - -int QmitkCenteredRigid2DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 5; - else - return 0; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredRigid2DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredRigid2DTransformView.h deleted file mode 100644 index c283db5691..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredRigid2DTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkCenteredRigid2DTransformViewWidgetHIncluded -#define QmitkCenteredRigid2DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkCenteredRigid2DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkCenteredRigid2DTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkCenteredRigid2DTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkCenteredRigid2DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkCenteredRigid2DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformControls.ui deleted file mode 100644 index c65d2ec2c9..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformControls.ui +++ /dev/null @@ -1,456 +0,0 @@ - - - QmitkCenteredSimilarity2DTransformControls - - - - 0 - 0 - 173 - 272 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Initial Scale: - - - false - - - - - - - - 50 - false - - - - Initial Angle: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.0 - - - Qt::AlignRight - - - - - - - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Scaling: - - - false - - - - - - - - 50 - false - - - - Scale Rotation: - - - false - - - - - - - - 50 - false - - - - Scale Center X: - - - false - - - - - - - - 50 - false - - - - Scale Center Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 10.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformView.cpp deleted file mode 100644 index 1269d96267..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformView.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkCenteredSimilarity2DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkCenteredSimilarity2DTransformView::QmitkCenteredSimilarity2DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkCenteredSimilarity2DTransformView::~QmitkCenteredSimilarity2DTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkCenteredSimilarity2DTransformView::GetTransformType() -{ - return mitk::TransformParameters::CENTEREDSIMILARITY2DTRANSFORM; -} - -itk::Object::Pointer QmitkCenteredSimilarity2DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessFixedDimensionByItk(m_FixedImage, GetTransform2, 2); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkCenteredSimilarity2DTransformView::GetTransform2( - itk::Image *itkImage1) -{ - if (VImageDimension == 2) - { - typedef typename itk::Image FixedImage2DType; - typedef typename itk::Image MovingImage2DType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImage2DType::Pointer fixedImage2D = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImage2DType::Pointer movingImage2D = movingImageToItk->GetOutput(); - - typename itk::CenteredSimilarity2DTransform::Pointer transformPointer = - itk::CenteredSimilarity2DTransform::New(); - transformPointer->SetIdentity(); - if (m_Controls.m_CenterForInitializerCenteredSimilarity2D->isChecked()) - { - typedef typename itk::CenteredSimilarity2DTransform CenteredSimilarity2DTransformType; - typedef typename itk:: - CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage2D); - transformInitializer->SetMovingImage(movingImage2D); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsCenteredSimilarity2D->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - transformPointer->SetScale(m_Controls.m_InitialScaleCenteredSimilarity2D->text().toFloat()); - transformPointer->SetAngle(m_Controls.m_AngleCenteredSimilarity2D->text().toFloat()); - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkCenteredSimilarity2DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(11); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesCenteredSimilarity2D->isChecked(); - transformValues[1] = m_Controls.m_ScalesCenteredSimilarity2DTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesCenteredSimilarity2DTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesCenteredSimilarity2DTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_ScalesCenteredSimilarity2DTransformScale4->text().toDouble(); - transformValues[5] = m_Controls.m_ScalesCenteredSimilarity2DTransformScaleTranslationX->text().toDouble(); - transformValues[6] = m_Controls.m_ScalesCenteredSimilarity2DTransformScaleTranslationY->text().toDouble(); - transformValues[7] = m_Controls.m_InitialScaleCenteredSimilarity2D->text().toFloat(); - transformValues[8] = m_Controls.m_AngleCenteredSimilarity2D->text().toFloat(); - transformValues[9] = m_Controls.m_CenterForInitializerCenteredSimilarity2D->isChecked(); - transformValues[10] = m_Controls.m_MomentsCenteredSimilarity2D->isChecked(); - return transformValues; -} - -void QmitkCenteredSimilarity2DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesCenteredSimilarity2D->setChecked(transformValues[0]); - m_Controls.m_ScalesCenteredSimilarity2DTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesCenteredSimilarity2DTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesCenteredSimilarity2DTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_ScalesCenteredSimilarity2DTransformScale4->setText(QString::number(transformValues[4])); - m_Controls.m_ScalesCenteredSimilarity2DTransformScaleTranslationX->setText(QString::number(transformValues[5])); - m_Controls.m_ScalesCenteredSimilarity2DTransformScaleTranslationY->setText(QString::number(transformValues[6])); - m_Controls.m_InitialScaleCenteredSimilarity2D->setText(QString::number(transformValues[7])); - m_Controls.m_AngleCenteredSimilarity2D->setText(QString::number(transformValues[8])); - m_Controls.m_CenterForInitializerCenteredSimilarity2D->setChecked(transformValues[9]); - m_Controls.m_MomentsCenteredSimilarity2D->setChecked(transformValues[10]); - m_Controls.m_GeometryCenteredSimilarity2D->setChecked(!transformValues[10]); -} - -QString QmitkCenteredSimilarity2DTransformView::GetName() -{ - return "CenteredSimilarity2D"; -} - -void QmitkCenteredSimilarity2DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesCenteredSimilarity2DTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesCenteredSimilarity2DTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesCenteredSimilarity2DTransformScale3->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesCenteredSimilarity2DTransformScale4->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesCenteredSimilarity2DTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesCenteredSimilarity2DTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkCenteredSimilarity2DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(6); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesCenteredSimilarity2D->isChecked()) - { - scales[0] = m_Controls.m_ScalesCenteredSimilarity2DTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesCenteredSimilarity2DTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesCenteredSimilarity2DTransformScale3->text().toDouble(); - scales[3] = m_Controls.m_ScalesCenteredSimilarity2DTransformScale4->text().toDouble(); - scales[4] = m_Controls.m_ScalesCenteredSimilarity2DTransformScaleTranslationX->text().toDouble(); - scales[5] = m_Controls.m_ScalesCenteredSimilarity2DTransformScaleTranslationY->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkCenteredSimilarity2DTransformView::Transform(vtkMatrix4x4 * /*vtkmatrix*/, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - mitk::ScalarType angle = transformParams[1] * 45.0 / atan(1.0); - vtktransform->PostMultiply(); - vtktransform->Translate(-transformParams[2], -transformParams[3], 0); - vtktransform->Scale(transformParams[0], transformParams[0], 1); - vtktransform->RotateZ(angle); - vtktransform->Translate(transformParams[2], transformParams[3], 0); - vtktransform->Translate(transformParams[4], transformParams[5], 0); - vtktransform->PreMultiply(); - } - return vtktransform; -} - -int QmitkCenteredSimilarity2DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 6; - else - return 0; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformView.h deleted file mode 100644 index 29b26c1c2e..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformView.h +++ /dev/null @@ -1,71 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkCenteredSimilarity2DTransformViewWidgetHIncluded -#define QmitkCenteredSimilarity2DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkCenteredSimilarity2DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkCenteredSimilarity2DTransformView - : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkCenteredSimilarity2DTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkCenteredSimilarity2DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkCenteredSimilarity2DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler2DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler2DTransformControls.ui deleted file mode 100644 index aac928f71a..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler2DTransformControls.ui +++ /dev/null @@ -1,254 +0,0 @@ - - - QmitkEuler2DTransformControls - - - - 0 - 0 - 173 - 144 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Rotation: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler2DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler2DTransformView.cpp deleted file mode 100644 index 2c2c3d2a2c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler2DTransformView.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkEuler2DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkEuler2DTransformView::QmitkEuler2DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkEuler2DTransformView::~QmitkEuler2DTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkEuler2DTransformView::GetTransformType() -{ - return mitk::TransformParameters::EULER2DTRANSFORM; -} - -itk::Object::Pointer QmitkEuler2DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessFixedDimensionByItk(m_FixedImage, GetTransform2, 2); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkEuler2DTransformView::GetTransform2(itk::Image *itkImage1) -{ - if (VImageDimension == 2) - { - typedef typename itk::Image FixedImage2DType; - typedef typename itk::Image MovingImage2DType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImage2DType::Pointer fixedImage2D = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImage2DType::Pointer movingImage2D = movingImageToItk->GetOutput(); - - typename itk::Euler2DTransform::Pointer transformPointer = itk::Euler2DTransform::New(); - transformPointer->SetIdentity(); - if (m_Controls.m_CenterForInitializerEuler2D->isChecked()) - { - typedef typename itk::Euler2DTransform Euler2DTransformType; - typedef typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage2D); - transformInitializer->SetMovingImage(movingImage2D); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsEuler2D->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkEuler2DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(6); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesEuler2D->isChecked(); - transformValues[1] = m_Controls.m_RotationScaleEuler2D->text().toDouble(); - transformValues[2] = m_Controls.m_TranslationXScaleEuler2D->text().toDouble(); - transformValues[3] = m_Controls.m_TranslationYScaleEuler2D->text().toDouble(); - transformValues[4] = m_Controls.m_CenterForInitializerEuler2D->isChecked(); - transformValues[5] = m_Controls.m_MomentsEuler2D->isChecked(); - return transformValues; -} - -void QmitkEuler2DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesEuler2D->setChecked(transformValues[0]); - m_Controls.m_RotationScaleEuler2D->setText(QString::number(transformValues[1])); - m_Controls.m_TranslationXScaleEuler2D->setText(QString::number(transformValues[2])); - m_Controls.m_TranslationYScaleEuler2D->setText(QString::number(transformValues[3])); - m_Controls.m_CenterForInitializerEuler2D->setChecked(transformValues[4]); - m_Controls.m_MomentsEuler2D->setChecked(transformValues[5]); - m_Controls.m_GeometryEuler2D->setChecked(!transformValues[5]); -} - -QString QmitkEuler2DTransformView::GetName() -{ - return "Euler2D"; -} - -void QmitkEuler2DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_RotationScaleEuler2D->setValidator(validatorLineEditInputFloat); - m_Controls.m_TranslationXScaleEuler2D->setValidator(validatorLineEditInputFloat); - m_Controls.m_TranslationYScaleEuler2D->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkEuler2DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(3); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesEuler2D->isChecked()) - { - scales[0] = m_Controls.m_RotationScaleEuler2D->text().toDouble(); - scales[1] = m_Controls.m_TranslationXScaleEuler2D->text().toDouble(); - scales[2] = m_Controls.m_TranslationYScaleEuler2D->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkEuler2DTransformView::Transform(vtkMatrix4x4 * /*vtkmatrix*/, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - mitk::ScalarType angle = transformParams[0] * 45.0 / atan(1.0); - vtktransform->PostMultiply(); - vtktransform->RotateZ(angle); - vtktransform->Translate(transformParams[1], transformParams[2], 0); - vtktransform->PreMultiply(); - } - return vtktransform; -} - -int QmitkEuler2DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 3; - else - return 0; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler2DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler2DTransformView.h deleted file mode 100644 index 06764a5487..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler2DTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkEuler2DTransformViewWidgetHIncluded -#define QmitkEuler2DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkEuler2DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkEuler2DTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkEuler2DTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkEuler2DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkEuler2DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler3DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler3DTransformControls.ui deleted file mode 100644 index be392ba02a..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler3DTransformControls.ui +++ /dev/null @@ -1,368 +0,0 @@ - - - QmitkEuler3DTransformControls - - - - 0 - 0 - 173 - 222 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Rotation X: - - - false - - - - - - - - 50 - false - - - - Scale Rotation Y: - - - false - - - - - - - - 50 - false - - - - Scale Rotation Z: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler3DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler3DTransformView.cpp deleted file mode 100644 index fd26fad5d0..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler3DTransformView.cpp +++ /dev/null @@ -1,160 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkEuler3DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include - -QmitkEuler3DTransformView::QmitkEuler3DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkEuler3DTransformView::~QmitkEuler3DTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkEuler3DTransformView::GetTransformType() -{ - return mitk::TransformParameters::EULER3DTRANSFORM; -} - -itk::Object::Pointer QmitkEuler3DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessByItk(m_FixedImage, GetTransform2); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkEuler3DTransformView::GetTransform2(itk::Image * /*itkImage1*/) -{ - if (VImageDimension == 3) - { - typename itk::Euler3DTransform::Pointer transformPointer = itk::Euler3DTransform::New(); - transformPointer->SetIdentity(); - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_CenterZ = transformPointer->GetCenter()[2]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkEuler3DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(9); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesEuler3D->isChecked(); - transformValues[1] = m_Controls.m_ScalesEuler3DTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesEuler3DTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesEuler3DTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_ScalesEuler3DTransformScaleTranslationX->text().toDouble(); - transformValues[5] = m_Controls.m_ScalesEuler3DTransformScaleTranslationY->text().toDouble(); - transformValues[6] = m_Controls.m_ScalesEuler3DTransformScaleTranslationZ->text().toDouble(); - transformValues[7] = m_Controls.m_CenterForInitializerEuler3D->isChecked(); - transformValues[8] = m_Controls.m_MomentsEuler3D->isChecked(); - return transformValues; -} - -void QmitkEuler3DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesEuler3D->setChecked(transformValues[0]); - m_Controls.m_ScalesEuler3DTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesEuler3DTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesEuler3DTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_ScalesEuler3DTransformScaleTranslationX->setText(QString::number(transformValues[4])); - m_Controls.m_ScalesEuler3DTransformScaleTranslationY->setText(QString::number(transformValues[5])); - m_Controls.m_ScalesEuler3DTransformScaleTranslationZ->setText(QString::number(transformValues[6])); - m_Controls.m_CenterForInitializerEuler3D->setChecked(transformValues[7]); - m_Controls.m_MomentsEuler3D->setChecked(transformValues[8]); - m_Controls.m_GeometryEuler3D->setChecked(!transformValues[8]); -} - -QString QmitkEuler3DTransformView::GetName() -{ - return "Euler3D"; -} - -void QmitkEuler3DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesEuler3DTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesEuler3DTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesEuler3DTransformScale3->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesEuler3DTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesEuler3DTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesEuler3DTransformScaleTranslationZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkEuler3DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(6); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesEuler3D->isChecked()) - { - scales[0] = m_Controls.m_ScalesEuler3DTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesEuler3DTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesEuler3DTransformScale3->text().toDouble(); - scales[3] = m_Controls.m_ScalesEuler3DTransformScaleTranslationX->text().toDouble(); - scales[4] = m_Controls.m_ScalesEuler3DTransformScaleTranslationY->text().toDouble(); - scales[5] = m_Controls.m_ScalesEuler3DTransformScaleTranslationZ->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkEuler3DTransformView::Transform(vtkMatrix4x4 * /*vtkmatrix*/, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - mitk::ScalarType angleX = transformParams[0] * 45.0 / atan(1.0); - mitk::ScalarType angleY = transformParams[1] * 45.0 / atan(1.0); - mitk::ScalarType angleZ = transformParams[2] * 45.0 / atan(1.0); - vtktransform->PostMultiply(); - vtktransform->Translate(-m_CenterX, -m_CenterY, -m_CenterZ); - vtktransform->RotateX(angleX); - vtktransform->RotateY(angleY); - vtktransform->RotateZ(angleZ); - vtktransform->Translate(m_CenterX, m_CenterY, m_CenterZ); - vtktransform->Translate(transformParams[3], transformParams[4], transformParams[5]); - vtktransform->PreMultiply(); - } - return vtktransform; -} - -int QmitkEuler3DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 4; - else - return 6; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler3DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler3DTransformView.h deleted file mode 100644 index 44a5511e65..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkEuler3DTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkEuler3DTransformViewWidgetHIncluded -#define QmitkEuler3DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkEuler3DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkEuler3DTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkEuler3DTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkEuler3DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkEuler3DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformControls.ui deleted file mode 100644 index 18da44b8d4..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformControls.ui +++ /dev/null @@ -1,596 +0,0 @@ - - - QmitkFixedCenterOfRotationAffineTransformControls - - - - 0 - 0 - 173 - 378 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale 1: - - - false - - - - - - - - 50 - false - - - - Scale 2: - - - false - - - - - - - - 50 - false - - - - Scale 3: - - - false - - - - - - - - 50 - false - - - - Scale 4: - - - false - - - - - - - - 50 - false - - - - Scale 5: - - - false - - - - - - - - 50 - false - - - - Scale 6: - - - false - - - - - - - - 50 - false - - - - Scale 7: - - - false - - - - - - - - 50 - false - - - - Scale 8: - - - false - - - - - - - - 50 - false - - - - Scale 9: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformView.cpp deleted file mode 100644 index af4e4e16a4..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformView.cpp +++ /dev/null @@ -1,270 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkFixedCenterOfRotationAffineTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkFixedCenterOfRotationAffineTransformView::QmitkFixedCenterOfRotationAffineTransformView(QWidget *parent, - Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkFixedCenterOfRotationAffineTransformView::~QmitkFixedCenterOfRotationAffineTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkFixedCenterOfRotationAffineTransformView::GetTransformType() -{ - return mitk::TransformParameters::FIXEDCENTEROFROTATIONAFFINETRANSFORM; -} - -itk::Object::Pointer QmitkFixedCenterOfRotationAffineTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessByItk(m_FixedImage, GetTransform2); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkFixedCenterOfRotationAffineTransformView::GetTransform2( - itk::Image *itkImage1) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImageType::Pointer fixedImage = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImageType::Pointer movingImage = movingImageToItk->GetOutput(); - - typedef typename itk::FixedCenterOfRotationAffineTransform CenteredAffineTransformType; - typename itk::FixedCenterOfRotationAffineTransform::Pointer transformPointer = - itk::FixedCenterOfRotationAffineTransform::New(); - transformPointer->SetIdentity(); - if (m_Controls.m_CenterForInitializerFixedCenterOfRotationAffine->isChecked()) - { - typedef typename itk::FixedCenterOfRotationAffineTransform - FixedCenterOfRotationAffineTransformType; - typedef typename itk:: - CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage); - transformInitializer->SetMovingImage(movingImage); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsFixedCenterOfRotationAffine->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_CenterZ = transformPointer->GetCenter()[2]; - transformInitializer->InitializeTransform(); - } - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); -} - -itk::Array QmitkFixedCenterOfRotationAffineTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(15); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesFixedCenterOfRotationAffine->isChecked(); - transformValues[1] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale4->text().toDouble(); - transformValues[5] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale5->text().toDouble(); - transformValues[6] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale6->text().toDouble(); - transformValues[7] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale7->text().toDouble(); - transformValues[8] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale8->text().toDouble(); - transformValues[9] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale9->text().toDouble(); - transformValues[10] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationX->text().toDouble(); - transformValues[11] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationY->text().toDouble(); - transformValues[12] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationZ->text().toDouble(); - transformValues[13] = m_Controls.m_CenterForInitializerFixedCenterOfRotationAffine->isChecked(); - transformValues[14] = m_Controls.m_MomentsFixedCenterOfRotationAffine->isChecked(); - return transformValues; -} - -void QmitkFixedCenterOfRotationAffineTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesFixedCenterOfRotationAffine->setChecked(transformValues[0]); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale4->setText(QString::number(transformValues[4])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale5->setText(QString::number(transformValues[5])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale6->setText(QString::number(transformValues[6])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale7->setText(QString::number(transformValues[7])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale8->setText(QString::number(transformValues[8])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale9->setText(QString::number(transformValues[9])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationX->setText( - QString::number(transformValues[10])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationY->setText( - QString::number(transformValues[11])); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationZ->setText( - QString::number(transformValues[12])); - m_Controls.m_CenterForInitializerFixedCenterOfRotationAffine->setChecked(transformValues[13]); - m_Controls.m_MomentsFixedCenterOfRotationAffine->setChecked(transformValues[14]); - m_Controls.m_GeometryFixedCenterOfRotationAffine->setChecked(!transformValues[14]); -} - -QString QmitkFixedCenterOfRotationAffineTransformView::GetName() -{ - return "FixedCenterOfRotationAffine"; -} - -void QmitkFixedCenterOfRotationAffineTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale3->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale4->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale5->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale6->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale7->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale8->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale9->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkFixedCenterOfRotationAffineTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(12); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesFixedCenterOfRotationAffine->isChecked()) - { - scales[0] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale3->text().toDouble(); - scales[3] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale4->text().toDouble(); - scales[4] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale5->text().toDouble(); - scales[5] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale6->text().toDouble(); - scales[6] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale7->text().toDouble(); - scales[7] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale8->text().toDouble(); - scales[8] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale9->text().toDouble(); - scales[9] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationX->text().toDouble(); - scales[10] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationY->text().toDouble(); - scales[11] = m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationZ->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkFixedCenterOfRotationAffineTransformView::Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - int m = 0; - for (unsigned int i = 0; i < m_FixedImage->GetDimension(); i++) - { - for (unsigned int j = 0; j < m_FixedImage->GetDimension(); j++) - { - vtkmatrix->SetElement(i, j, transformParams[m]); - m++; - } - } - float center[4]; - float translation[4]; - center[0] = m_CenterX; - center[1] = m_CenterY; - center[2] = m_CenterZ; - center[3] = 1; - vtkmatrix->MultiplyPoint(center, translation); - if (m_FixedImage->GetDimension() == 2) - { - vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[4]); - vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[5]); - } - else if (m_FixedImage->GetDimension() == 3) - { - vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[9]); - vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[10]); - vtkmatrix->SetElement(2, 3, -translation[2] + center[2] + transformParams[11]); - } - vtktransform->SetMatrix(vtkmatrix); - } - return vtktransform; -} - -int QmitkFixedCenterOfRotationAffineTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - { - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale7->hide(); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale8->hide(); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale9->hide(); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationX->hide(); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationY->hide(); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationZ->hide(); - m_Controls.textLabel2_7_2_2->setText("Translation Scale X:"); - m_Controls.textLabel3_6_2_2->setText("Translation Scale Y:"); - m_Controls.textLabel4_4_3_2->hide(); - m_Controls.textLabel5_4_2_2->hide(); - m_Controls.textLabel6_4_2_2->hide(); - m_Controls.textLabel11_3_2_2->hide(); - m_Controls.textLabel12_3_2_2->hide(); - m_Controls.textLabel13_2_2_2->hide(); - return 6; - } - else - { - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale7->show(); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale8->show(); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScale9->show(); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationX->show(); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationY->show(); - m_Controls.m_ScalesFixedCenterOfRotationAffineTransformScaleTranslationZ->show(); - m_Controls.textLabel2_7_2_2->setText("Scale 5:"); - m_Controls.textLabel3_6_2_2->setText("Scale 6:"); - m_Controls.textLabel4_4_3_2->show(); - m_Controls.textLabel5_4_2_2->show(); - m_Controls.textLabel6_4_2_2->show(); - m_Controls.textLabel11_3_2_2->show(); - m_Controls.textLabel12_3_2_2->show(); - m_Controls.textLabel13_2_2_2->show(); - return 12; - } - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformView.h deleted file mode 100644 index 7c989e3ccf..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformView.h +++ /dev/null @@ -1,71 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkFixedCenterOfRotationAffineTransformViewWidgetHIncluded -#define QmitkFixedCenterOfRotationAffineTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkFixedCenterOfRotationAffineTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkFixedCenterOfRotationAffineTransformView - : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkFixedCenterOfRotationAffineTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkFixedCenterOfRotationAffineTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkFixedCenterOfRotationAffineTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkQuaternionRigidTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkQuaternionRigidTransformControls.ui deleted file mode 100644 index ff2bc06f81..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkQuaternionRigidTransformControls.ui +++ /dev/null @@ -1,406 +0,0 @@ - - - QmitkQuaternionRigidTransformControls - - - - 0 - 0 - 175 - 248 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Quaternion 1: - - - false - - - - - - - - 50 - false - - - - Scale Quaternion 2: - - - false - - - - - - - - 50 - false - - - - Scale Quaternion 3: - - - false - - - - - - - - 50 - false - - - - Scale Quaternion 4: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkQuaternionRigidTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkQuaternionRigidTransformView.cpp deleted file mode 100644 index 9044b2bfc7..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkQuaternionRigidTransformView.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkQuaternionRigidTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkQuaternionRigidTransformView::QmitkQuaternionRigidTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkQuaternionRigidTransformView::~QmitkQuaternionRigidTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkQuaternionRigidTransformView::GetTransformType() -{ - return mitk::TransformParameters::QUATERNIONRIGIDTRANSFORM; -} - -itk::Object::Pointer QmitkQuaternionRigidTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessFixedDimensionByItk(m_FixedImage, GetTransform2, 3); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkQuaternionRigidTransformView::GetTransform2( - itk::Image *itkImage1) -{ - if (VImageDimension == 3) - { - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImageType::Pointer fixedImage = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImageType::Pointer movingImage = movingImageToItk->GetOutput(); - - typename itk::QuaternionRigidTransform::Pointer transformPointer = - itk::QuaternionRigidTransform::New(); - transformPointer->SetIdentity(); - typedef typename itk::QuaternionRigidTransform QuaternionRigidTransformType; - if (m_Controls.m_CenterForInitializerQuaternionRigid->isChecked()) - { - typedef typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage); - transformInitializer->SetMovingImage(movingImage); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsQuaternionRigid->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_CenterZ = transformPointer->GetCenter()[2]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkQuaternionRigidTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(10); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesQuaternionRigid->isChecked(); - transformValues[1] = m_Controls.m_ScalesQuaternionRigidTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesQuaternionRigidTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesQuaternionRigidTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_ScalesQuaternionRigidTransformScale4->text().toDouble(); - transformValues[5] = m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationX->text().toDouble(); - transformValues[6] = m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationY->text().toDouble(); - transformValues[7] = m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationZ->text().toDouble(); - transformValues[8] = m_Controls.m_CenterForInitializerQuaternionRigid->isChecked(); - transformValues[9] = m_Controls.m_MomentsQuaternionRigid->isChecked(); - return transformValues; -} - -void QmitkQuaternionRigidTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesQuaternionRigid->setChecked(transformValues[0]); - m_Controls.m_ScalesQuaternionRigidTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesQuaternionRigidTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesQuaternionRigidTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_ScalesQuaternionRigidTransformScale4->setText(QString::number(transformValues[4])); - m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationX->setText(QString::number(transformValues[5])); - m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationY->setText(QString::number(transformValues[6])); - m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationZ->setText(QString::number(transformValues[7])); - m_Controls.m_CenterForInitializerQuaternionRigid->setChecked(transformValues[8]); - m_Controls.m_MomentsQuaternionRigid->setChecked(transformValues[9]); - m_Controls.m_GeometryQuaternionRigid->setChecked(!transformValues[9]); -} - -QString QmitkQuaternionRigidTransformView::GetName() -{ - return "QuaternionRigid"; -} - -void QmitkQuaternionRigidTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesQuaternionRigidTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesQuaternionRigidTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesQuaternionRigidTransformScale3->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesQuaternionRigidTransformScale4->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkQuaternionRigidTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(7); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesQuaternionRigid->isChecked()) - { - scales[0] = m_Controls.m_ScalesQuaternionRigidTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesQuaternionRigidTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesQuaternionRigidTransformScale3->text().toDouble(); - scales[3] = m_Controls.m_ScalesQuaternionRigidTransformScale4->text().toDouble(); - scales[4] = m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationX->text().toDouble(); - scales[5] = m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationY->text().toDouble(); - scales[6] = m_Controls.m_ScalesQuaternionRigidTransformScaleTranslationZ->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkQuaternionRigidTransformView::Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - itk::QuaternionRigidTransform::Pointer quaternionTransform = itk::QuaternionRigidTransform::New(); - quaternionTransform->SetParameters(transformParams); - itk::Matrix Matrix = quaternionTransform->GetMatrix(); - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - vtkmatrix->SetElement(i, j, Matrix[i][j]); - } - } - float center[4]; - float translation[4]; - center[0] = m_CenterX; - center[1] = m_CenterY; - center[2] = m_CenterZ; - center[3] = 1; - vtkmatrix->MultiplyPoint(center, translation); - vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[4]); - vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[5]); - vtkmatrix->SetElement(2, 3, -translation[2] + center[2] + transformParams[6]); - vtktransform->SetMatrix(vtkmatrix); - } - return vtktransform; -} - -int QmitkQuaternionRigidTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 0; - else - return 7; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkQuaternionRigidTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkQuaternionRigidTransformView.h deleted file mode 100644 index 425ff9957c..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkQuaternionRigidTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkQuaternionRigidTransformViewWidgetHIncluded -#define QmitkQuaternionRigidTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkQuaternionRigidTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkQuaternionRigidTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkQuaternionRigidTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkQuaternionRigidTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkQuaternionRigidTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid2DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid2DTransformControls.ui deleted file mode 100644 index 9b7e916258..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid2DTransformControls.ui +++ /dev/null @@ -1,266 +0,0 @@ - - - QmitkRigid2DTransformControls - - - - 0 - 0 - 173 - 144 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - - 75 - true - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Rotation: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - - 75 - true - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid2DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid2DTransformView.cpp deleted file mode 100644 index c2e2baf80b..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid2DTransformView.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkRigid2DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkRigid2DTransformView::QmitkRigid2DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkRigid2DTransformView::~QmitkRigid2DTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkRigid2DTransformView::GetTransformType() -{ - return mitk::TransformParameters::RIGID2DTRANSFORM; -} - -itk::Object::Pointer QmitkRigid2DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessFixedDimensionByItk(m_FixedImage, GetTransform2, 2); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkRigid2DTransformView::GetTransform2(itk::Image *itkImage1) -{ - if (VImageDimension == 2) - { - typedef typename itk::Image FixedImage2DType; - typedef typename itk::Image MovingImage2DType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImage2DType::Pointer fixedImage2D = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImage2DType::Pointer movingImage2D = movingImageToItk->GetOutput(); - - typename itk::Rigid2DTransform::Pointer transformPointer = itk::Rigid2DTransform::New(); - transformPointer->SetIdentity(); - if (m_Controls.m_CenterForInitializerRigid2D->isChecked()) - { - typedef typename itk::Rigid2DTransform Rigid2DTransformType; - typedef typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage2D); - transformInitializer->SetMovingImage(movingImage2D); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsRigid2D->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkRigid2DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(6); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesRigid2D->isChecked(); - transformValues[1] = m_Controls.m_ScalesRigid2DTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesRigid2DTransformScaleTranslationX->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesRigid2DTransformScaleTranslationY->text().toDouble(); - transformValues[4] = m_Controls.m_CenterForInitializerRigid2D->isChecked(); - transformValues[5] = m_Controls.m_MomentsRigid2D->isChecked(); - return transformValues; -} - -void QmitkRigid2DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesRigid2D->setChecked(transformValues[0]); - m_Controls.m_ScalesRigid2DTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesRigid2DTransformScaleTranslationX->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesRigid2DTransformScaleTranslationY->setText(QString::number(transformValues[3])); - m_Controls.m_CenterForInitializerRigid2D->setChecked(transformValues[4]); - m_Controls.m_MomentsRigid2D->setChecked(transformValues[5]); - m_Controls.m_GeometryRigid2D->setChecked(!transformValues[5]); -} - -QString QmitkRigid2DTransformView::GetName() -{ - return "Rigid2D"; -} - -void QmitkRigid2DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesRigid2DTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid2DTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid2DTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkRigid2DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(3); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesRigid2D->isChecked()) - { - scales[0] = m_Controls.m_ScalesRigid2DTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesRigid2DTransformScaleTranslationX->text().toDouble(); - scales[2] = m_Controls.m_ScalesRigid2DTransformScaleTranslationY->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkRigid2DTransformView::Transform(vtkMatrix4x4 * /*vtkmatrix*/, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - mitk::ScalarType angle = transformParams[0] * 45.0 / atan(1.0); - vtktransform->PostMultiply(); - vtktransform->RotateZ(angle); - vtktransform->Translate(transformParams[1], transformParams[2], 0); - vtktransform->PreMultiply(); - } - return vtktransform; -} - -int QmitkRigid2DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 3; - else - return 0; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid2DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid2DTransformView.h deleted file mode 100644 index cfd57303dd..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid2DTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkRigid2DTransformViewWidgetHIncluded -#define QmitkRigid2DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkRigid2DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkRigid2DTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkRigid2DTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkRigid2DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkRigid2DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid3DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid3DTransformControls.ui deleted file mode 100644 index e065f8cb01..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid3DTransformControls.ui +++ /dev/null @@ -1,596 +0,0 @@ - - - QmitkRigid3DTransformControls - - - - 0 - 0 - 173 - 378 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Rotation 1: - - - false - - - - - - - - 50 - false - - - - Scale Rotation 2: - - - false - - - - - - - - 50 - false - - - - Scale Rotation 3: - - - false - - - - - - - - 50 - false - - - - Scale Rotation 4: - - - false - - - - - - - - 50 - false - - - - Scale Rotation 5: - - - false - - - - - - - - 50 - false - - - - Scale Rotation 6: - - - false - - - - - - - - 50 - false - - - - Scale Rotation 7: - - - false - - - - - - - - 50 - false - - - - Scale Rotation 8: - - - false - - - - - - - - 50 - false - - - - Scale Rotation 9: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid3DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid3DTransformView.cpp deleted file mode 100644 index 3be98f24e0..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid3DTransformView.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkRigid3DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include - -QmitkRigid3DTransformView::QmitkRigid3DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkRigid3DTransformView::~QmitkRigid3DTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkRigid3DTransformView::GetTransformType() -{ - return mitk::TransformParameters::RIGID3DTRANSFORM; -} - -itk::Object::Pointer QmitkRigid3DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessByItk(m_FixedImage, GetTransform2); - return m_TransformObject; - } - return NULL; -} - -template -itk::Object::Pointer QmitkRigid3DTransformView::GetTransform2(itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - if (VImageDimension == 3) - { - typename itk::VersorRigid3DTransform::Pointer transformPointer = itk::VersorRigid3DTransform::New(); - transformPointer->SetIdentity(); - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_CenterZ = transformPointer->GetCenter()[2]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return NULL; -} - -itk::Array QmitkRigid3DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(15); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesRigid3D->isChecked(); - transformValues[1] = m_Controls.m_ScalesRigid3DTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesRigid3DTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesRigid3DTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_ScalesRigid3DTransformScale4->text().toDouble(); - transformValues[5] = m_Controls.m_ScalesRigid3DTransformScale5->text().toDouble(); - transformValues[6] = m_Controls.m_ScalesRigid3DTransformScale6->text().toDouble(); - transformValues[7] = m_Controls.m_ScalesRigid3DTransformScale7->text().toDouble(); - transformValues[8] = m_Controls.m_ScalesRigid3DTransformScale8->text().toDouble(); - transformValues[9] = m_Controls.m_ScalesRigid3DTransformScale9->text().toDouble(); - transformValues[10] = m_Controls.m_ScalesRigid3DTransformScaleTranslationX->text().toDouble(); - transformValues[11] = m_Controls.m_ScalesRigid3DTransformScaleTranslationY->text().toDouble(); - transformValues[12] = m_Controls.m_ScalesRigid3DTransformScaleTranslationZ->text().toDouble(); - transformValues[13] = m_Controls.m_CenterForInitializerRigid3D->isChecked(); - transformValues[14] = m_Controls.m_MomentsRigid3D->isChecked(); - return transformValues; -} - -void QmitkRigid3DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesRigid3D->setChecked(transformValues[0]); - m_Controls.m_ScalesRigid3DTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesRigid3DTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesRigid3DTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_ScalesRigid3DTransformScale4->setText(QString::number(transformValues[4])); - m_Controls.m_ScalesRigid3DTransformScale5->setText(QString::number(transformValues[5])); - m_Controls.m_ScalesRigid3DTransformScale6->setText(QString::number(transformValues[6])); - m_Controls.m_ScalesRigid3DTransformScale7->setText(QString::number(transformValues[7])); - m_Controls.m_ScalesRigid3DTransformScale8->setText(QString::number(transformValues[8])); - m_Controls.m_ScalesRigid3DTransformScale9->setText(QString::number(transformValues[9])); - m_Controls.m_ScalesRigid3DTransformScaleTranslationX->setText(QString::number(transformValues[10])); - m_Controls.m_ScalesRigid3DTransformScaleTranslationY->setText(QString::number(transformValues[11])); - m_Controls.m_ScalesRigid3DTransformScaleTranslationZ->setText(QString::number(transformValues[12])); - m_Controls.m_CenterForInitializerRigid3D->setChecked(transformValues[13]); - m_Controls.m_MomentsRigid3D->setChecked(transformValues[14]); - m_Controls.m_GeometryRigid3D->setChecked(!transformValues[14]); -} - -QString QmitkRigid3DTransformView::GetName() -{ - return "Rigid3D"; -} - -void QmitkRigid3DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesRigid3DTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScale3->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScale4->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScale5->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScale6->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScale7->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScale8->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScale9->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesRigid3DTransformScaleTranslationZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkRigid3DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(12); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesRigid3D->isChecked()) - { - scales[0] = m_Controls.m_ScalesRigid3DTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesRigid3DTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesRigid3DTransformScale3->text().toDouble(); - scales[3] = m_Controls.m_ScalesRigid3DTransformScale4->text().toDouble(); - scales[4] = m_Controls.m_ScalesRigid3DTransformScale5->text().toDouble(); - scales[5] = m_Controls.m_ScalesRigid3DTransformScale6->text().toDouble(); - scales[6] = m_Controls.m_ScalesRigid3DTransformScale7->text().toDouble(); - scales[7] = m_Controls.m_ScalesRigid3DTransformScale8->text().toDouble(); - scales[8] = m_Controls.m_ScalesRigid3DTransformScale9->text().toDouble(); - scales[9] = m_Controls.m_ScalesRigid3DTransformScaleTranslationX->text().toDouble(); - scales[10] = m_Controls.m_ScalesRigid3DTransformScaleTranslationY->text().toDouble(); - scales[11] = m_Controls.m_ScalesRigid3DTransformScaleTranslationZ->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkRigid3DTransformView::Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - int m = 0; - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - vtkmatrix->SetElement(i, j, transformParams[m]); - m++; - } - } - float center[4]; - float translation[4]; - center[0] = m_CenterX; - center[1] = m_CenterY; - center[2] = m_CenterZ; - center[3] = 1; - vtkmatrix->MultiplyPoint(center, translation); - vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[9]); - vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[10]); - vtkmatrix->SetElement(2, 3, -translation[2] + center[2] + transformParams[11]); - vtktransform->SetMatrix(vtkmatrix); - } - return vtktransform; -} - -int QmitkRigid3DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 6; - else - return 12; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid3DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid3DTransformView.h deleted file mode 100644 index 87e719dbdf..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigid3DTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkRigid3DTransformViewWidgetHIncluded -#define QmitkRigid3DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkRigid3DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkRigid3DTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkRigid3DTransformView(QWidget *parent = 0, Qt::WindowFlags f = 0); - ~QmitkRigid3DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType(); - - virtual itk::Object::Pointer GetTransform(); - - virtual itk::Array GetTransformParameters(); - - virtual void SetTransformParameters(itk::Array transformValues); - - virtual QString GetName(); - - virtual void SetupUI(QWidget *parent); - - virtual itk::Array GetScales(); - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams); - - virtual int GetNumberOfTransformParameters(); - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkRigid3DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigidRegistrationTransformsGUIBase.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigidRegistrationTransformsGUIBase.cpp deleted file mode 100644 index 867c9976d3..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigidRegistrationTransformsGUIBase.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkRigidRegistrationTransformsGUIBase.h" - -QmitkRigidRegistrationTransformsGUIBase::QmitkRigidRegistrationTransformsGUIBase(QWidget *parent, Qt::WindowFlags f) - : QWidget(parent, f), m_FixedImage(nullptr), m_MovingImage(nullptr) -{ -} - -QmitkRigidRegistrationTransformsGUIBase::~QmitkRigidRegistrationTransformsGUIBase() -{ -} - -void QmitkRigidRegistrationTransformsGUIBase::SetFixedImage(mitk::Image::Pointer fixedImage) -{ - m_FixedImage = fixedImage; -} - -void QmitkRigidRegistrationTransformsGUIBase::SetMovingImage(mitk::Image::Pointer movingImage) -{ - m_MovingImage = movingImage; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigidRegistrationTransformsGUIBase.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigidRegistrationTransformsGUIBase.h deleted file mode 100644 index 762611f6f9..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkRigidRegistrationTransformsGUIBase.h +++ /dev/null @@ -1,71 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkRigidRegistrationTransformsGUIBaseH -#define QmitkRigidRegistrationTransformsGUIBaseH - -#include "MitkRigidRegistrationUIExports.h" -#include "mitkImage.h" -#include "mitkOptimizerParameters.h" -#include "mitkTransformParameters.h" -#include -#include -#include -#include -#include -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkRigidRegistrationTransformsGUIBase : public QWidget -{ -public: - QmitkRigidRegistrationTransformsGUIBase(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkRigidRegistrationTransformsGUIBase(); - - virtual mitk::TransformParameters::TransformType GetTransformType() = 0; - - virtual itk::Object::Pointer GetTransform() = 0; - - virtual itk::Array GetTransformParameters() = 0; - - virtual void SetTransformParameters(itk::Array transformValues) = 0; - - virtual int GetNumberOfTransformParameters() = 0; - - virtual itk::Array GetScales() = 0; - - virtual QString GetName() = 0; - - virtual void SetupUI(QWidget *parent) = 0; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) = 0; - - void SetFixedImage(mitk::Image::Pointer fixedImage); - - void SetMovingImage(mitk::Image::Pointer movingImage); - -protected: - mitk::Image::Pointer m_FixedImage; - mitk::Image::Pointer m_MovingImage; -}; - -#endif // QmitkRigidRegistrationTransformsGUIBaseH diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleLogarithmicTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleLogarithmicTransformControls.ui deleted file mode 100644 index 015d12a8ab..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleLogarithmicTransformControls.ui +++ /dev/null @@ -1,189 +0,0 @@ - - - QmitkScaleLogarithmicTransformControls - - - - 0 - 0 - 143 - 110 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - false - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale X: - - - false - - - - - - - - 50 - false - - - - Scale Y: - - - false - - - - - - - - 50 - false - - - - Scale Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleLogarithmicTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleLogarithmicTransformView.cpp deleted file mode 100644 index 52647c4a55..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleLogarithmicTransformView.cpp +++ /dev/null @@ -1,141 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkScaleLogarithmicTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include - -QmitkScaleLogarithmicTransformView::QmitkScaleLogarithmicTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f) -{ -} - -QmitkScaleLogarithmicTransformView::~QmitkScaleLogarithmicTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkScaleLogarithmicTransformView::GetTransformType() -{ - return mitk::TransformParameters::SCALELOGARITHMICTRANSFORM; -} - -itk::Object::Pointer QmitkScaleLogarithmicTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessByItk(m_FixedImage, GetTransform2); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkScaleLogarithmicTransformView::GetTransform2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::ScaleLogarithmicTransform::Pointer transformPointer = - itk::ScaleLogarithmicTransform::New(); - transformPointer->SetIdentity(); - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); -} - -itk::Array QmitkScaleLogarithmicTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(4); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesScaleLogarithmic->isChecked(); - transformValues[1] = m_Controls.m_ScalesScaleLogarithmicTransformScaleX->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesScaleLogarithmicTransformScaleY->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->text().toDouble(); - return transformValues; -} - -void QmitkScaleLogarithmicTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesScaleLogarithmic->setChecked(transformValues[0]); - m_Controls.m_ScalesScaleLogarithmicTransformScaleX->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesScaleLogarithmicTransformScaleY->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->setText(QString::number(transformValues[3])); -} - -QString QmitkScaleLogarithmicTransformView::GetName() -{ - return "ScaleLogarithmic"; -} - -void QmitkScaleLogarithmicTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesScaleLogarithmicTransformScaleX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleLogarithmicTransformScaleY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkScaleLogarithmicTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(3); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesScaleLogarithmic->isChecked()) - { - scales[0] = m_Controls.m_ScalesScaleLogarithmicTransformScaleX->text().toDouble(); - scales[1] = m_Controls.m_ScalesScaleLogarithmicTransformScaleY->text().toDouble(); - scales[2] = m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkScaleLogarithmicTransformView::Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - for (unsigned int i = 0; i < transformParams.size(); i++) - { - vtkmatrix->SetElement(i, i, transformParams[i]); - } - vtktransform->SetMatrix(vtkmatrix); - } - return vtktransform; -} - -int QmitkScaleLogarithmicTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - { - m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->hide(); - m_Controls.textLabel3_5_3->hide(); - return 2; - } - else - { - m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->show(); - m_Controls.textLabel3_5_3->show(); - return 3; - } - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleLogarithmicTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleLogarithmicTransformView.h deleted file mode 100644 index d79a2dcdf2..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleLogarithmicTransformView.h +++ /dev/null @@ -1,66 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkScaleLogarithmicTransformViewWidgetHIncluded -#define QmitkScaleLogarithmicTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkScaleLogarithmicTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkScaleLogarithmicTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkScaleLogarithmicTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkScaleLogarithmicTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkScaleLogarithmicTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformControls.ui deleted file mode 100644 index c6ab53fa99..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformControls.ui +++ /dev/null @@ -1,710 +0,0 @@ - - - QmitkScaleSkewVersor3DTransformControls - - - - 0 - 0 - 173 - 456 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Versor 1: - - - false - - - - - - - - 50 - false - - - - Scale Versor 2: - - - false - - - - - - - - 50 - false - - - - Scale Versor 3: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale Z: - - - false - - - - - - - - 50 - false - - - - Scale Scaling X: - - - false - - - - - - - - 50 - false - - - - Scale Scaling Y: - - - false - - - - - - - - 50 - false - - - - Scale Scaling Z: - - - false - - - - - - - - 50 - false - - - - Scale Skew 1: - - - false - - - - - - - - 50 - false - - - - Scale Skew 2: - - - false - - - - - - - - 50 - false - - - - Scale Skew 3: - - - false - - - - - - - - 50 - false - - - - Scale Skew 4: - - - false - - - - - - - - 50 - false - - - - Scale Skew 5: - - - false - - - - - - - - 50 - false - - - - Scale Skew 6: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformView.cpp deleted file mode 100644 index 6dd102cfb2..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformView.cpp +++ /dev/null @@ -1,240 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkScaleSkewVersor3DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkScaleSkewVersor3DTransformView::QmitkScaleSkewVersor3DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkScaleSkewVersor3DTransformView::~QmitkScaleSkewVersor3DTransformView() -{ -} -mitk::TransformParameters::TransformType QmitkScaleSkewVersor3DTransformView::GetTransformType() -{ - return mitk::TransformParameters::SCALESKEWVERSOR3DTRANSFORM; -} - -itk::Object::Pointer QmitkScaleSkewVersor3DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessFixedDimensionByItk(m_FixedImage, GetTransform2, 3); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkScaleSkewVersor3DTransformView::GetTransform2( - itk::Image *itkImage1) -{ - if (VImageDimension == 3) - { - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImageType::Pointer fixedImage = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImageType::Pointer movingImage = movingImageToItk->GetOutput(); - - typename itk::ScaleSkewVersor3DTransform::Pointer transformPointer = - itk::ScaleSkewVersor3DTransform::New(); - transformPointer->SetIdentity(); - if (m_Controls.m_CenterForInitializerScaleSkewVersorRigid3D->isChecked()) - { - typedef typename itk::ScaleSkewVersor3DTransform ScaleSkewVersor3DTransformType; - typedef - typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage); - transformInitializer->SetMovingImage(movingImage); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsScaleSkewVersorRigid3D->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_CenterZ = transformPointer->GetCenter()[2]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkScaleSkewVersor3DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(18); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesScaleSkewVersorRigid3DTransform->isChecked(); - transformValues[1] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScaleTranslationX->text().toDouble(); - transformValues[5] = m_Controls.m_ScaleScaleSkewVersorRigid3DTransformScaleTranslationY->text().toDouble(); - transformValues[6] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScaleTranslationZ->text().toDouble(); - transformValues[7] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale7->text().toDouble(); - transformValues[8] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale8->text().toDouble(); - transformValues[9] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale9->text().toDouble(); - transformValues[10] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale10->text().toDouble(); - transformValues[11] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale11->text().toDouble(); - transformValues[12] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale12->text().toDouble(); - transformValues[13] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale13->text().toDouble(); - transformValues[14] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale14->text().toDouble(); - transformValues[15] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale15->text().toDouble(); - transformValues[16] = m_Controls.m_CenterForInitializerScaleSkewVersorRigid3D->isChecked(); - transformValues[17] = m_Controls.m_MomentsScaleSkewVersorRigid3D->isChecked(); - return transformValues; -} - -void QmitkScaleSkewVersor3DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesScaleSkewVersorRigid3DTransform->setChecked(transformValues[0]); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScaleTranslationX->setText(QString::number(transformValues[4])); - m_Controls.m_ScaleScaleSkewVersorRigid3DTransformScaleTranslationY->setText(QString::number(transformValues[5])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScaleTranslationZ->setText(QString::number(transformValues[6])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale7->setText(QString::number(transformValues[7])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale8->setText(QString::number(transformValues[8])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale9->setText(QString::number(transformValues[9])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale10->setText(QString::number(transformValues[10])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale11->setText(QString::number(transformValues[11])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale12->setText(QString::number(transformValues[12])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale13->setText(QString::number(transformValues[13])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale14->setText(QString::number(transformValues[14])); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale15->setText(QString::number(transformValues[15])); - m_Controls.m_CenterForInitializerScaleSkewVersorRigid3D->setChecked(transformValues[16]); - m_Controls.m_MomentsScaleSkewVersorRigid3D->setChecked(transformValues[17]); - m_Controls.m_GeometryScaleSkewVersorRigid3D->setChecked(!transformValues[17]); -} - -QString QmitkScaleSkewVersor3DTransformView::GetName() -{ - return "ScaleSkewVersor3D"; -} - -void QmitkScaleSkewVersor3DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale3->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScaleScaleSkewVersorRigid3DTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScaleTranslationZ->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale7->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale8->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale9->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale10->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale11->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale12->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale13->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale14->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale15->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkScaleSkewVersor3DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(15); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesScaleSkewVersorRigid3DTransform->isChecked()) - { - scales[0] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale3->text().toDouble(); - scales[3] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScaleTranslationX->text().toDouble(); - scales[4] = m_Controls.m_ScaleScaleSkewVersorRigid3DTransformScaleTranslationY->text().toDouble(); - scales[5] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScaleTranslationZ->text().toDouble(); - scales[6] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale7->text().toDouble(); - scales[7] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale8->text().toDouble(); - scales[8] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale9->text().toDouble(); - scales[9] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale10->text().toDouble(); - scales[10] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale11->text().toDouble(); - scales[11] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale12->text().toDouble(); - scales[12] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale13->text().toDouble(); - scales[13] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale14->text().toDouble(); - scales[14] = m_Controls.m_ScalesScaleSkewVersorRigid3DTransformScale15->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkScaleSkewVersor3DTransformView::Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - itk::ScaleSkewVersor3DTransform::Pointer versorTransform = itk::ScaleSkewVersor3DTransform::New(); - versorTransform->SetParameters(transformParams); - itk::Matrix Matrix = versorTransform->GetMatrix(); - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - vtkmatrix->SetElement(i, j, Matrix[i][j]); - } - } - float center[4]; - float translation[4]; - center[0] = m_CenterX; - center[1] = m_CenterY; - center[2] = m_CenterZ; - center[3] = 1; - vtkmatrix->MultiplyPoint(center, translation); - vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[3]); - vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[4]); - vtkmatrix->SetElement(2, 3, -translation[2] + center[2] + transformParams[5]); - vtktransform->SetMatrix(vtkmatrix); - } - return vtktransform; -} - -int QmitkScaleSkewVersor3DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 0; - else - return 15; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformView.h deleted file mode 100644 index ccce47743a..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformView.h +++ /dev/null @@ -1,71 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkScaleSkewVersor3DTransformViewWidgetHIncluded -#define QmitkScaleSkewVersor3DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkScaleSkewVersor3DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkScaleSkewVersor3DTransformView - : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkScaleSkewVersor3DTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkScaleSkewVersor3DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkScaleSkewVersor3DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleTransformControls.ui deleted file mode 100644 index becc6b2725..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleTransformControls.ui +++ /dev/null @@ -1,192 +0,0 @@ - - - QmitkScaleTransformControls - - - - 0 - 0 - 143 - 110 - - - - Form - - - - 6 - - - 9 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale X: - - - false - - - - - - - - 50 - false - - - - Scale Y: - - - false - - - - - - - - 50 - false - - - - Scale Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleTransformView.cpp deleted file mode 100644 index 0ca56bfebf..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleTransformView.cpp +++ /dev/null @@ -1,141 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkScaleTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include - -QmitkScaleTransformView::QmitkScaleTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f) -{ -} - -QmitkScaleTransformView::~QmitkScaleTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkScaleTransformView::GetTransformType() -{ - return mitk::TransformParameters::SCALETRANSFORM; -} - -itk::Object::Pointer QmitkScaleTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessByItk(m_FixedImage, GetTransform2); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkScaleTransformView::GetTransform2(itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typename itk::ScaleTransform::Pointer transformPointer = - itk::ScaleTransform::New(); - transformPointer->SetIdentity(); - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); -} - -itk::Array QmitkScaleTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(4); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesScale->isChecked(); - transformValues[1] = m_Controls.m_ScalesScaleTransformScaleX->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesScaleTransformScaleY->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesScaleTransformScaleZ->text().toDouble(); - return transformValues; -} - -void QmitkScaleTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesScale->setChecked(transformValues[0]); - m_Controls.m_ScalesScaleTransformScaleX->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesScaleTransformScaleY->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesScaleTransformScaleZ->setText(QString::number(transformValues[3])); -} - -QString QmitkScaleTransformView::GetName() -{ - return "Scale"; -} - -void QmitkScaleTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesScaleTransformScaleX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleTransformScaleY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesScaleTransformScaleZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkScaleTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(3); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesScale->isChecked()) - { - scales[0] = m_Controls.m_ScalesScaleTransformScaleX->text().toDouble(); - scales[1] = m_Controls.m_ScalesScaleTransformScaleY->text().toDouble(); - scales[2] = m_Controls.m_ScalesScaleTransformScaleZ->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkScaleTransformView::Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - for (unsigned int i = 0; i < transformParams.size(); i++) - { - vtkmatrix->SetElement(i, i, transformParams[i]); - } - vtktransform->SetMatrix(vtkmatrix); - } - return vtktransform; -} - -int QmitkScaleTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - { - m_Controls.m_ScalesScaleTransformScaleZ->hide(); - m_Controls.textLabel3_5->hide(); - return 2; - } - else - { - m_Controls.m_ScalesScaleTransformScaleZ->show(); - m_Controls.textLabel3_5->show(); - this->repaint(); - return 3; - } - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleTransformView.h deleted file mode 100644 index 979460b412..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkScaleTransformView.h +++ /dev/null @@ -1,66 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkScaleTransformViewWidgetHIncluded -#define QmitkScaleTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkScaleTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkScaleTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkScaleTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkScaleTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkScaleTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity2DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity2DTransformControls.ui deleted file mode 100644 index 82a9bba6d4..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity2DTransformControls.ui +++ /dev/null @@ -1,380 +0,0 @@ - - - QmitkSimilarity2DTransformControls - - - - 0 - 0 - 173 - 220 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Initial Scale: - - - false - - - - - - - - 50 - false - - - - Initial Angle: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.0 - - - Qt::AlignRight - - - - - - - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Scaling: - - - false - - - - - - - - 50 - false - - - - Scale Rotation: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 10.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity2DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity2DTransformView.cpp deleted file mode 100644 index 7b60c16115..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity2DTransformView.cpp +++ /dev/null @@ -1,182 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkSimilarity2DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkSimilarity2DTransformView::QmitkSimilarity2DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkSimilarity2DTransformView::~QmitkSimilarity2DTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkSimilarity2DTransformView::GetTransformType() -{ - return mitk::TransformParameters::SIMILARITY2DTRANSFORM; -} - -itk::Object::Pointer QmitkSimilarity2DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessFixedDimensionByItk(m_FixedImage, GetTransform2, 2); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkSimilarity2DTransformView::GetTransform2(itk::Image *itkImage1) -{ - if (VImageDimension == 2) - { - typedef typename itk::Image FixedImage2DType; - typedef typename itk::Image MovingImage2DType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImage2DType::Pointer fixedImage2D = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImage2DType::Pointer movingImage2D = movingImageToItk->GetOutput(); - - typename itk::Similarity2DTransform::Pointer transformPointer = itk::Similarity2DTransform::New(); - transformPointer->SetIdentity(); - if (m_Controls.m_CenterForInitializerSimilarity2D->isChecked()) - { - typedef typename itk::Similarity2DTransform Similarity2DTransformType; - typedef typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage2D); - transformInitializer->SetMovingImage(movingImage2D); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsSimilarity2D->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - transformPointer->SetScale(m_Controls.m_InitialScaleSimilarity2D->text().toFloat()); - transformPointer->SetAngle(m_Controls.m_AngleSimilarity2D->text().toFloat()); - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkSimilarity2DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(9); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesSimilarity2D->isChecked(); - transformValues[1] = m_Controls.m_ScalingScaleSimilarity2D->text().toDouble(); - transformValues[2] = m_Controls.m_RotationScaleSimilarity2D->text().toDouble(); - transformValues[3] = m_Controls.m_TranslationXScaleSimilarity2D->text().toDouble(); - transformValues[4] = m_Controls.m_TranslationYScaleSimilarity2D->text().toDouble(); - transformValues[5] = m_Controls.m_InitialScaleSimilarity2D->text().toFloat(); - transformValues[6] = m_Controls.m_AngleSimilarity2D->text().toFloat(); - transformValues[7] = m_Controls.m_CenterForInitializerSimilarity2D->isChecked(); - transformValues[8] = m_Controls.m_MomentsSimilarity2D->isChecked(); - return transformValues; -} - -void QmitkSimilarity2DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesSimilarity2D->setChecked(transformValues[0]); - m_Controls.m_ScalingScaleSimilarity2D->setText(QString::number(transformValues[1])); - m_Controls.m_RotationScaleSimilarity2D->setText(QString::number(transformValues[2])); - m_Controls.m_TranslationXScaleSimilarity2D->setText(QString::number(transformValues[3])); - m_Controls.m_TranslationYScaleSimilarity2D->setText(QString::number(transformValues[4])); - m_Controls.m_InitialScaleSimilarity2D->setText(QString::number(transformValues[5])); - m_Controls.m_AngleSimilarity2D->setText(QString::number(transformValues[6])); - m_Controls.m_CenterForInitializerSimilarity2D->setChecked(transformValues[7]); - m_Controls.m_MomentsSimilarity2D->setChecked(transformValues[8]); - m_Controls.m_GeometrySimilarity2D->setChecked(!transformValues[8]); -} - -QString QmitkSimilarity2DTransformView::GetName() -{ - return "Similarity2D"; -} - -void QmitkSimilarity2DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalingScaleSimilarity2D->setValidator(validatorLineEditInputFloat); - m_Controls.m_RotationScaleSimilarity2D->setValidator(validatorLineEditInputFloat); - m_Controls.m_TranslationXScaleSimilarity2D->setValidator(validatorLineEditInputFloat); - m_Controls.m_TranslationYScaleSimilarity2D->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkSimilarity2DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(4); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesSimilarity2D->isChecked()) - { - scales[0] = m_Controls.m_ScalingScaleSimilarity2D->text().toDouble(); - scales[1] = m_Controls.m_RotationScaleSimilarity2D->text().toDouble(); - scales[2] = m_Controls.m_TranslationXScaleSimilarity2D->text().toDouble(); - scales[3] = m_Controls.m_TranslationYScaleSimilarity2D->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkSimilarity2DTransformView::Transform(vtkMatrix4x4 * /* vtkmatrix */, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - mitk::ScalarType angle = transformParams[1] * 45.0 / atan(1.0); - vtktransform->PostMultiply(); - vtktransform->Scale(transformParams[0], transformParams[0], 1); - vtktransform->RotateZ(angle); - vtktransform->Translate(transformParams[2], transformParams[3], 0); - vtktransform->PreMultiply(); - } - return vtktransform; -} - -int QmitkSimilarity2DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 4; - else - return 0; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity2DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity2DTransformView.h deleted file mode 100644 index abcb93a4eb..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity2DTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkSimilarity2DTransformViewWidgetHIncluded -#define QmitkSimilarity2DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkSimilarity2DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkSimilarity2DTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkSimilarity2DTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkSimilarity2DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkSimilarity2DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity3DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity3DTransformControls.ui deleted file mode 100644 index b647f95c5a..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity3DTransformControls.ui +++ /dev/null @@ -1,406 +0,0 @@ - - - QmitkSimilarity3DTransformControls - - - - 0 - 0 - 173 - 248 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Scaling: - - - false - - - - - - - - 50 - false - - - - Scale Versor 1: - - - false - - - - - - - - 50 - false - - - - Scale Versor 2: - - - false - - - - - - - - 50 - false - - - - Scale Versor 3: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity3DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity3DTransformView.cpp deleted file mode 100644 index fb9aa35694..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity3DTransformView.cpp +++ /dev/null @@ -1,206 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkSimilarity3DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkSimilarity3DTransformView::QmitkSimilarity3DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkSimilarity3DTransformView::~QmitkSimilarity3DTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkSimilarity3DTransformView::GetTransformType() -{ - return mitk::TransformParameters::SIMILARITY3DTRANSFORM; -} - -itk::Object::Pointer QmitkSimilarity3DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessFixedDimensionByItk(m_FixedImage, GetTransform2, 3); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkSimilarity3DTransformView::GetTransform2(itk::Image *itkImage1) -{ - if (VImageDimension == 3) - { - typedef typename itk::Image FixedImage3DType; - typedef typename itk::Image MovingImage3DType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImage3DType::Pointer fixedImage = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImage3DType::Pointer movingImage = movingImageToItk->GetOutput(); - - typename itk::Similarity3DTransform::Pointer transformPointer = itk::Similarity3DTransform::New(); - transformPointer->SetIdentity(); - if (m_Controls.m_CenterForInitializerSimilarity3D->isChecked()) - { - typedef typename itk::Similarity3DTransform Similarity3DTransformType; - typedef typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage); - transformInitializer->SetMovingImage(movingImage); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsSimilarity3D->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_CenterZ = transformPointer->GetCenter()[2]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkSimilarity3DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(10); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesSimilarity3D->isChecked(); - transformValues[1] = m_Controls.m_ScalesSimilarity3DTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesSimilarity3DTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesSimilarity3DTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_ScalesSimilarity3DTransformScale4->text().toDouble(); - transformValues[5] = m_Controls.m_ScalesSimilarity3DTransformScaleTranslationX->text().toDouble(); - transformValues[6] = m_Controls.m_ScalesSimilarity3DTransformScaleTranslationY->text().toDouble(); - transformValues[7] = m_Controls.m_ScalesSimilarity3DTransformScaleTranslationZ->text().toDouble(); - transformValues[8] = m_Controls.m_CenterForInitializerSimilarity3D->isChecked(); - transformValues[9] = m_Controls.m_MomentsSimilarity3D->isChecked(); - return transformValues; -} - -void QmitkSimilarity3DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesSimilarity3D->setChecked(transformValues[0]); - m_Controls.m_ScalesSimilarity3DTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesSimilarity3DTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesSimilarity3DTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_ScalesSimilarity3DTransformScale4->setText(QString::number(transformValues[4])); - m_Controls.m_ScalesSimilarity3DTransformScaleTranslationX->setText(QString::number(transformValues[5])); - m_Controls.m_ScalesSimilarity3DTransformScaleTranslationY->setText(QString::number(transformValues[6])); - m_Controls.m_ScalesSimilarity3DTransformScaleTranslationZ->setText(QString::number(transformValues[7])); - m_Controls.m_CenterForInitializerSimilarity3D->setChecked(transformValues[8]); - m_Controls.m_MomentsSimilarity3D->setChecked(transformValues[9]); - m_Controls.m_GeometrySimilarity3D->setChecked(!transformValues[9]); -} - -QString QmitkSimilarity3DTransformView::GetName() -{ - return "Similarity3D"; -} - -void QmitkSimilarity3DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesSimilarity3DTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesSimilarity3DTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesSimilarity3DTransformScale3->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesSimilarity3DTransformScale4->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesSimilarity3DTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesSimilarity3DTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesSimilarity3DTransformScaleTranslationZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkSimilarity3DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(7); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesSimilarity3D->isChecked()) - { - scales[0] = m_Controls.m_ScalesSimilarity3DTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesSimilarity3DTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesSimilarity3DTransformScale3->text().toDouble(); - scales[3] = m_Controls.m_ScalesSimilarity3DTransformScale4->text().toDouble(); - scales[4] = m_Controls.m_ScalesSimilarity3DTransformScaleTranslationX->text().toDouble(); - scales[5] = m_Controls.m_ScalesSimilarity3DTransformScaleTranslationY->text().toDouble(); - scales[6] = m_Controls.m_ScalesSimilarity3DTransformScaleTranslationZ->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkSimilarity3DTransformView::Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - itk::Similarity3DTransform::Pointer similarityTransform = itk::Similarity3DTransform::New(); - similarityTransform->SetParameters(transformParams); - itk::Matrix Matrix = similarityTransform->GetMatrix(); - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - vtkmatrix->SetElement(i, j, Matrix[i][j]); - } - } - float center[4]; - float translation[4]; - center[0] = m_CenterX; - center[1] = m_CenterY; - center[2] = m_CenterZ; - center[3] = 1; - vtkmatrix->MultiplyPoint(center, translation); - vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[4]); - vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[5]); - vtkmatrix->SetElement(2, 3, -translation[2] + center[2] + transformParams[6]); - vtktransform->SetMatrix(vtkmatrix); - } - return vtktransform; -} - -int QmitkSimilarity3DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 0; - else - return 7; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity3DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity3DTransformView.h deleted file mode 100644 index 717b305096..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkSimilarity3DTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkSimilarity3DTransformViewWidgetHIncluded -#define QmitkSimilarity3DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkSimilarity3DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkSimilarity3DTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkSimilarity3DTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkSimilarity3DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkSimilarity3DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkTranslationTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkTranslationTransformControls.ui deleted file mode 100644 index 99fadbf3fd..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkTranslationTransformControls.ui +++ /dev/null @@ -1,201 +0,0 @@ - - - QmitkTranslationTransformControls - - - - 0 - 0 - 145 - 110 - - - - - 0 - 0 - - - - - 0 - 0 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - false - - - - 6 - - - 0 - - - - - - - - - - 50 - false - - - - Tranlsation X: - - - false - - - - - - - - 50 - false - - - - Translation Y: - - - false - - - - - - - - 50 - false - - - - Translation Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkTranslationTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkTranslationTransformView.cpp deleted file mode 100644 index ddf45a93ae..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkTranslationTransformView.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkTranslationTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include - -QmitkTranslationTransformView::QmitkTranslationTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f) -{ -} - -QmitkTranslationTransformView::~QmitkTranslationTransformView() -{ -} - -itk::Object::Pointer QmitkTranslationTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessByItk(m_FixedImage, GetTransform2); - return m_TransformObject; - } - return nullptr; -} - -mitk::TransformParameters::TransformType QmitkTranslationTransformView::GetTransformType() -{ - return mitk::TransformParameters::TRANSLATIONTRANSFORM; -} - -template -itk::Object::Pointer QmitkTranslationTransformView::GetTransform2( - itk::Image * /*itkImage1*/) -{ - typedef typename itk::Image FixedImageType; - typedef typename itk::Image MovingImageType; - typedef itk::TranslationTransform TransformType; - typename TransformType::Pointer transform = TransformType::New(); - transform->SetIdentity(); - m_TransformObject = transform; - return transform.GetPointer(); -} - -itk::Array QmitkTranslationTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(4); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesTranslation->isChecked(); - transformValues[1] = m_Controls.m_ScalesTranslationTransformTranslationX->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesTranslationTransformTranslationY->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesTranslationTransformTranslationZ->text().toDouble(); - return transformValues; -} - -void QmitkTranslationTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesTranslation->setChecked(transformValues[0]); - m_Controls.m_ScalesTranslationTransformTranslationX->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesTranslationTransformTranslationY->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesTranslationTransformTranslationZ->setText(QString::number(transformValues[3])); -} - -QString QmitkTranslationTransformView::GetName() -{ - return "Translation"; -} - -void QmitkTranslationTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesTranslationTransformTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesTranslationTransformTranslationY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesTranslationTransformTranslationZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkTranslationTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(3); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesTranslation->isChecked()) - { - scales[0] = m_Controls.m_ScalesTranslationTransformTranslationX->text().toDouble(); - scales[1] = m_Controls.m_ScalesTranslationTransformTranslationY->text().toDouble(); - scales[2] = m_Controls.m_ScalesTranslationTransformTranslationZ->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkTranslationTransformView::Transform(vtkMatrix4x4 * /*vtkmatrix*/, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - if (transformParams.size() == 2) - { - vtktransform->Translate(transformParams[0], transformParams[1], 0); - } - else if (transformParams.size() == 3) - { - vtktransform->Translate(transformParams[0], transformParams[1], transformParams[2]); - std::cout << "Translation is: " << transformParams[0] << transformParams[1] << transformParams[2] << std::endl; - } - } - return vtktransform; -} - -int QmitkTranslationTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - { - m_Controls.m_ScalesTranslationTransformTranslationZ->hide(); - m_Controls.textLabel4_4_2->hide(); - - return 2; - } - else - { - m_Controls.m_ScalesTranslationTransformTranslationZ->show(); - m_Controls.textLabel4_4_2->show(); - - return 3; - } - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkTranslationTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkTranslationTransformView.h deleted file mode 100644 index 5d3a5e1081..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkTranslationTransformView.h +++ /dev/null @@ -1,66 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkTranslationTransformViewWidgetHIncluded -#define QmitkTranslationTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkTranslationTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkTranslationTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkTranslationTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkTranslationTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkTranslationTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorRigid3DTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorRigid3DTransformControls.ui deleted file mode 100644 index 39498320e2..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorRigid3DTransformControls.ui +++ /dev/null @@ -1,374 +0,0 @@ - - - QmitkVersorRigid3DTransformControls - - - - 0 - 0 - 173 - 222 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Versor 1: - - - false - - - - - - - - 50 - false - - - - Scale Versor 2: - - - false - - - - - - - - 50 - false - - - - Scale Versor 3: - - - false - - - - - - - - 50 - false - - - - Translation Scale X: - - - false - - - - - - - - 50 - false - - - - Translation Scale Y: - - - false - - - - - - - - 50 - false - - - - Translation Scale Z: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 0.001 - - - Qt::AlignRight - - - - - - - - - - - - - - - 75 - true - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorRigid3DTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorRigid3DTransformView.cpp deleted file mode 100644 index ecba0b87c7..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorRigid3DTransformView.cpp +++ /dev/null @@ -1,218 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkVersorRigid3DTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkVersorRigid3DTransformView::QmitkVersorRigid3DTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkVersorRigid3DTransformView::~QmitkVersorRigid3DTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkVersorRigid3DTransformView::GetTransformType() -{ - return mitk::TransformParameters::VERSORRIGID3DTRANSFORM; -} - -itk::Object::Pointer QmitkVersorRigid3DTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessFixedDimensionByItk(m_FixedImage, GetTransform2, 3); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkVersorRigid3DTransformView::GetTransform2(itk::Image *itkImage1) -{ - if (VImageDimension == 3) - { - typedef typename itk::Image FixedImage3DType; - typedef typename itk::Image MovingImage3DType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImage3DType::Pointer fixedImage = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImage3DType::Pointer movingImage = movingImageToItk->GetOutput(); - - typename itk::VersorRigid3DTransform::Pointer transformPointer = itk::VersorRigid3DTransform::New(); - transformPointer->SetIdentity(); - typedef typename itk::VersorRigid3DTransform VersorRigid3DTransformType; - if (m_Controls.m_CenterForInitializerVersorRigid3D->isChecked()) - { - typedef - typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage); - transformInitializer->SetMovingImage(movingImage); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsVersorRigid3D->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - typedef VersorRigid3DTransformType::VersorType VersorType; - typedef VersorType::VectorType VectorType; - - VersorType rotation; - VectorType axis; - - axis[0] = 0.0; - axis[1] = 0.0; - axis[2] = 1.0; - - const double angle = 0; - - rotation.Set(axis, angle); - - transformPointer->SetRotation(rotation); - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_CenterZ = transformPointer->GetCenter()[2]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkVersorRigid3DTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(9); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesVersorRigid3D->isChecked(); - transformValues[1] = m_Controls.m_ScalesVersorRigid3DTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesVersorRigid3DTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesVersorRigid3DTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationX->text().toDouble(); - transformValues[5] = m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationY->text().toDouble(); - transformValues[6] = m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationZ->text().toDouble(); - transformValues[7] = m_Controls.m_CenterForInitializerVersorRigid3D->isChecked(); - transformValues[8] = m_Controls.m_MomentsVersorRigid3D->isChecked(); - return transformValues; -} - -void QmitkVersorRigid3DTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesVersorRigid3D->setChecked(transformValues[0]); - m_Controls.m_ScalesVersorRigid3DTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesVersorRigid3DTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesVersorRigid3DTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationX->setText(QString::number(transformValues[4])); - m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationY->setText(QString::number(transformValues[5])); - m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationZ->setText(QString::number(transformValues[6])); - m_Controls.m_CenterForInitializerVersorRigid3D->setChecked(transformValues[7]); - m_Controls.m_MomentsVersorRigid3D->setChecked(transformValues[8]); - m_Controls.m_GeometryVersorRigid3D->setChecked(!transformValues[8]); -} - -QString QmitkVersorRigid3DTransformView::GetName() -{ - return "VersorRigid3D"; -} - -void QmitkVersorRigid3DTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesVersorRigid3DTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesVersorRigid3DTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesVersorRigid3DTransformScale3->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationX->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationY->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationZ->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkVersorRigid3DTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(6); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesVersorRigid3D->isChecked()) - { - scales[0] = m_Controls.m_ScalesVersorRigid3DTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesVersorRigid3DTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesVersorRigid3DTransformScale3->text().toDouble(); - scales[3] = m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationX->text().toDouble(); - scales[4] = m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationY->text().toDouble(); - scales[5] = m_Controls.m_ScalesVersorRigid3DTransformScaleTranslationZ->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkVersorRigid3DTransformView::Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - itk::VersorRigid3DTransform::Pointer versorTransform = itk::VersorRigid3DTransform::New(); - versorTransform->SetParameters(transformParams); - itk::Matrix Matrix = versorTransform->GetMatrix(); - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - vtkmatrix->SetElement(i, j, Matrix[i][j]); - } - } - float center[4]; - float translation[4]; - center[0] = m_CenterX; - center[1] = m_CenterY; - center[2] = m_CenterZ; - center[3] = 1; - vtkmatrix->MultiplyPoint(center, translation); - vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[3]); - vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[4]); - vtkmatrix->SetElement(2, 3, -translation[2] + center[2] + transformParams[5]); - vtktransform->SetMatrix(vtkmatrix); - } - return vtktransform; -} - -int QmitkVersorRigid3DTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 0; - else - return 6; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorRigid3DTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorRigid3DTransformView.h deleted file mode 100644 index 220c07ac6d..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorRigid3DTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkVersorRigid3DTransformViewWidgetHIncluded -#define QmitkVersorRigid3DTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkVersorRigid3DTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkVersorRigid3DTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkVersorRigid3DTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkVersorRigid3DTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkVersorRigid3DTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorTransformControls.ui b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorTransformControls.ui deleted file mode 100644 index 2b484f20e8..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorTransformControls.ui +++ /dev/null @@ -1,251 +0,0 @@ - - - QmitkVersorTransformControls - - - - 0 - 0 - 160 - 146 - - - - Form - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - Use Optimizer Scales - - - true - - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - Scale Versor 1: - - - false - - - - - - - - 50 - false - - - - Scale Versor 2: - - - false - - - - - - - - 50 - false - - - - Scale Versor 3: - - - false - - - - - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - 0 - 20 - - - - - 50 - false - - - - 1.0 - - - Qt::AlignRight - - - - - - - - - - - - - - Center for Initializer - - - true - - - true - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Geometry - - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - Moments - - - true - - - - - - - - - - - - - - diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorTransformView.cpp b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorTransformView.cpp deleted file mode 100644 index 593d6de206..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorTransformView.cpp +++ /dev/null @@ -1,190 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkVersorTransformView.h" -#include "mitkImageAccessByItk.h" -#include -#include -#include -#include - -QmitkVersorTransformView::QmitkVersorTransformView(QWidget *parent, Qt::WindowFlags f) - : QmitkRigidRegistrationTransformsGUIBase(parent, f), m_CenterX(0), m_CenterY(0), m_CenterZ(0) -{ -} - -QmitkVersorTransformView::~QmitkVersorTransformView() -{ -} - -mitk::TransformParameters::TransformType QmitkVersorTransformView::GetTransformType() -{ - return mitk::TransformParameters::VERSORTRANSFORM; -} - -itk::Object::Pointer QmitkVersorTransformView::GetTransform() -{ - if (m_FixedImage.IsNotNull()) - { - AccessFixedDimensionByItk(m_FixedImage, GetTransform2, 3); - return m_TransformObject; - } - return nullptr; -} - -template -itk::Object::Pointer QmitkVersorTransformView::GetTransform2(itk::Image *itkImage1) -{ - if (VImageDimension == 3) - { - typedef typename itk::Image FixedImage3DType; - typedef typename itk::Image MovingImage3DType; - - // the fixedImage is the input parameter (fix for Bug #14626) - typename FixedImage3DType::Pointer fixedImage = itkImage1; - - // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) - typename mitk::ImageToItk::Pointer movingImageToItk = mitk::ImageToItk::New(); - movingImageToItk->SetInput(m_MovingImage); - movingImageToItk->Update(); - typename MovingImage3DType::Pointer movingImage = movingImageToItk->GetOutput(); - - typename itk::VersorTransform::Pointer transformPointer = itk::VersorTransform::New(); - transformPointer->SetIdentity(); - typedef typename itk::VersorTransform VersorTransformType; - if (m_Controls.m_CenterForInitializerVersor->isChecked()) - { - typedef typename itk::CenteredTransformInitializer - TransformInitializerType; - typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); - transformInitializer->SetFixedImage(fixedImage); - transformInitializer->SetMovingImage(movingImage); - transformInitializer->SetTransform(transformPointer); - if (m_Controls.m_MomentsVersor->isChecked()) - { - transformInitializer->MomentsOn(); - } - else - { - transformInitializer->GeometryOn(); - } - transformInitializer->InitializeTransform(); - } - m_CenterX = transformPointer->GetCenter()[0]; - m_CenterY = transformPointer->GetCenter()[1]; - m_CenterZ = transformPointer->GetCenter()[2]; - m_TransformObject = transformPointer.GetPointer(); - return transformPointer.GetPointer(); - } - return nullptr; -} - -itk::Array QmitkVersorTransformView::GetTransformParameters() -{ - itk::Array transformValues; - transformValues.SetSize(6); - transformValues.fill(0); - transformValues[0] = m_Controls.m_UseOptimizerScalesVersor->isChecked(); - transformValues[1] = m_Controls.m_ScalesVersorTransformScale1->text().toDouble(); - transformValues[2] = m_Controls.m_ScalesVersorTransformScale2->text().toDouble(); - transformValues[3] = m_Controls.m_ScalesVersorTransformScale3->text().toDouble(); - transformValues[4] = m_Controls.m_CenterForInitializerVersor->isChecked(); - transformValues[5] = m_Controls.m_MomentsVersor->isChecked(); - return transformValues; -} - -void QmitkVersorTransformView::SetTransformParameters(itk::Array transformValues) -{ - m_Controls.m_UseOptimizerScalesVersor->setChecked(transformValues[0]); - m_Controls.m_ScalesVersorTransformScale1->setText(QString::number(transformValues[1])); - m_Controls.m_ScalesVersorTransformScale2->setText(QString::number(transformValues[2])); - m_Controls.m_ScalesVersorTransformScale3->setText(QString::number(transformValues[3])); - m_Controls.m_CenterForInitializerVersor->setChecked(transformValues[4]); - m_Controls.m_MomentsVersor->setChecked(transformValues[5]); - m_Controls.m_GeometryVersor->setChecked(!transformValues[5]); -} - -QString QmitkVersorTransformView::GetName() -{ - return "Versor"; -} - -void QmitkVersorTransformView::SetupUI(QWidget *parent) -{ - m_Controls.setupUi(parent); - QValidator *validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); - m_Controls.m_ScalesVersorTransformScale1->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesVersorTransformScale2->setValidator(validatorLineEditInputFloat); - m_Controls.m_ScalesVersorTransformScale3->setValidator(validatorLineEditInputFloat); -} - -itk::Array QmitkVersorTransformView::GetScales() -{ - itk::Array scales; - scales.SetSize(3); - scales.Fill(1.0); - if (m_Controls.m_UseOptimizerScalesVersor->isChecked()) - { - scales[0] = m_Controls.m_ScalesVersorTransformScale1->text().toDouble(); - scales[1] = m_Controls.m_ScalesVersorTransformScale2->text().toDouble(); - scales[2] = m_Controls.m_ScalesVersorTransformScale3->text().toDouble(); - } - return scales; -} - -vtkTransform *QmitkVersorTransformView::Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) -{ - if (m_MovingImage.IsNotNull()) - { - itk::VersorTransform::Pointer versorTransform = itk::VersorTransform::New(); - versorTransform->SetParameters(transformParams); - itk::Matrix Matrix = versorTransform->GetMatrix(); - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - vtkmatrix->SetElement(i, j, Matrix[i][j]); - } - } - float center[4]; - float translation[4]; - center[0] = m_CenterX; - center[1] = m_CenterY; - center[2] = m_CenterZ; - center[3] = 1; - vtkmatrix->MultiplyPoint(center, translation); - vtkmatrix->SetElement(0, 3, -translation[0] + center[0]); - vtkmatrix->SetElement(1, 3, -translation[1] + center[1]); - vtkmatrix->SetElement(2, 3, -translation[2] + center[2]); - vtktransform->SetMatrix(vtkmatrix); - } - return vtktransform; -} - -int QmitkVersorTransformView::GetNumberOfTransformParameters() -{ - if (m_FixedImage.IsNotNull()) - { - if (m_FixedImage->GetDimension() == 2) - return 0; - else - return 3; - } - else - return 0; -} diff --git a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorTransformView.h b/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorTransformView.h deleted file mode 100644 index 4a2c7f06fc..0000000000 --- a/Modules/RigidRegistrationUI/RigidRegistrationTransforms/QmitkVersorTransformView.h +++ /dev/null @@ -1,70 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkVersorTransformViewWidgetHIncluded -#define QmitkVersorTransformViewWidgetHIncluded - -#include "MitkRigidRegistrationUIExports.h" -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "ui_QmitkVersorTransformControls.h" -#include - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class MITKRIGIDREGISTRATIONUI_EXPORT QmitkVersorTransformView : public QmitkRigidRegistrationTransformsGUIBase -{ -public: - QmitkVersorTransformView(QWidget *parent = nullptr, Qt::WindowFlags f = nullptr); - ~QmitkVersorTransformView(); - - virtual mitk::TransformParameters::TransformType GetTransformType() override; - - virtual itk::Object::Pointer GetTransform() override; - - virtual itk::Array GetTransformParameters() override; - - virtual void SetTransformParameters(itk::Array transformValues) override; - - virtual QString GetName() override; - - virtual void SetupUI(QWidget *parent) override; - - virtual itk::Array GetScales() override; - - virtual vtkTransform *Transform(vtkMatrix4x4 *vtkmatrix, - vtkTransform *vtktransform, - itk::Array transformParams) override; - - virtual int GetNumberOfTransformParameters() override; - -private: - template - itk::Object::Pointer GetTransform2(itk::Image *itkImage1); - -protected: - Ui::QmitkVersorTransformControls m_Controls; - - itk::Object::Pointer m_TransformObject; - - double m_CenterX; - double m_CenterY; - double m_CenterZ; -}; - -#endif diff --git a/Modules/RigidRegistrationUI/files.cmake b/Modules/RigidRegistrationUI/files.cmake deleted file mode 100644 index 25f183a8f6..0000000000 --- a/Modules/RigidRegistrationUI/files.cmake +++ /dev/null @@ -1,98 +0,0 @@ -set(CPP_FILES - RigidRegistrationMetrics/QmitkRigidRegistrationMetricsGUIBase.cpp - RigidRegistrationMetrics/QmitkMeanSquaresMetricView.cpp - RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricView.cpp - RigidRegistrationMetrics/QmitkGradientDifferenceMetricView.cpp - RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricView.cpp - RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricView.cpp - RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricView.cpp - RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricView.cpp - RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricView.cpp - RigidRegistrationMetrics/QmitkMattesMutualInformationMetricView.cpp - RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricView.cpp - RigidRegistrationMetrics/QmitkMutualInformationMetricView.cpp - RigidRegistrationMetrics/QmitkMatchCardinalityMetricView.cpp - RigidRegistrationMetrics/QmitkKappaStatisticMetricView.cpp - RigidRegistrationOptimizer/QmitkRigidRegistrationOptimizerGUIBase.cpp - RigidRegistrationOptimizer/QmitkExhaustiveOptimizerView.cpp - RigidRegistrationOptimizer/QmitkGradientDescentOptimizerView.cpp - RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerView.cpp - RigidRegistrationOptimizer/QmitkLBFGSBOptimizerView.cpp - RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerView.cpp - RigidRegistrationOptimizer/QmitkPowellOptimizerView.cpp - RigidRegistrationOptimizer/QmitkFRPROptimizerView.cpp - RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerView.cpp - RigidRegistrationOptimizer/QmitkVersorTransformOptimizerView.cpp - RigidRegistrationOptimizer/QmitkAmoebaOptimizerView.cpp - RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerView.cpp - RigidRegistrationOptimizer/QmitkLBFGSOptimizerView.cpp - RigidRegistrationOptimizer/QmitkSPSAOptimizerView.cpp - RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerView.cpp - RigidRegistrationTransforms/QmitkRigidRegistrationTransformsGUIBase.cpp - RigidRegistrationTransforms/QmitkTranslationTransformView.cpp - RigidRegistrationTransforms/QmitkScaleTransformView.cpp - RigidRegistrationTransforms/QmitkScaleLogarithmicTransformView.cpp - RigidRegistrationTransforms/QmitkAffineTransformView.cpp - RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformView.cpp - #RigidRegistrationTransforms/QmitkRigid3DTransformView.cpp - RigidRegistrationTransforms/QmitkEuler3DTransformView.cpp - RigidRegistrationTransforms/QmitkCenteredEuler3DTransformView.cpp - RigidRegistrationTransforms/QmitkQuaternionRigidTransformView.cpp - RigidRegistrationTransforms/QmitkVersorTransformView.cpp - RigidRegistrationTransforms/QmitkVersorRigid3DTransformView.cpp - RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformView.cpp - RigidRegistrationTransforms/QmitkSimilarity3DTransformView.cpp - RigidRegistrationTransforms/QmitkRigid2DTransformView.cpp - RigidRegistrationTransforms/QmitkCenteredRigid2DTransformView.cpp - RigidRegistrationTransforms/QmitkEuler2DTransformView.cpp - RigidRegistrationTransforms/QmitkSimilarity2DTransformView.cpp - RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformView.cpp -) - -set(UI_FILES - RigidRegistrationMetrics/QmitkMeanSquaresMetricControls.ui - RigidRegistrationMetrics/QmitkNormalizedCorrelationMetricControls.ui - RigidRegistrationMetrics/QmitkGradientDifferenceMetricControls.ui - RigidRegistrationMetrics/QmitkKullbackLeiblerCompareHistogramMetricControls.ui - RigidRegistrationMetrics/QmitkCorrelationCoefficientHistogramMetricControls.ui - RigidRegistrationMetrics/QmitkMeanSquaresHistogramMetricControls.ui - RigidRegistrationMetrics/QmitkMutualInformationHistogramMetricControls.ui - RigidRegistrationMetrics/QmitkNormalizedMutualInformationHistogramMetricControls.ui - RigidRegistrationMetrics/QmitkMattesMutualInformationMetricControls.ui - RigidRegistrationMetrics/QmitkMeanReciprocalSquareDifferenceMetricControls.ui - RigidRegistrationMetrics/QmitkMutualInformationMetricControls.ui - RigidRegistrationMetrics/QmitkMatchCardinalityMetricControls.ui - RigidRegistrationMetrics/QmitkKappaStatisticMetricControls.ui - RigidRegistrationOptimizer/QmitkExhaustiveOptimizerControls.ui - RigidRegistrationOptimizer/QmitkGradientDescentOptimizerControls.ui - RigidRegistrationOptimizer/QmitkQuaternionRigidTransformGradientDescentOptimizerControls.ui - RigidRegistrationOptimizer/QmitkLBFGSBOptimizerControls.ui - RigidRegistrationOptimizer/QmitkOnePlusOneEvolutionaryOptimizerControls.ui - RigidRegistrationOptimizer/QmitkPowellOptimizerControls.ui - RigidRegistrationOptimizer/QmitkFRPROptimizerControls.ui - RigidRegistrationOptimizer/QmitkRegularStepGradientDescentOptimizerControls.ui - RigidRegistrationOptimizer/QmitkVersorTransformOptimizerControls.ui - RigidRegistrationOptimizer/QmitkAmoebaOptimizerControls.ui - RigidRegistrationOptimizer/QmitkConjugateGradientOptimizerControls.ui - RigidRegistrationOptimizer/QmitkLBFGSOptimizerControls.ui - RigidRegistrationOptimizer/QmitkSPSAOptimizerControls.ui - RigidRegistrationOptimizer/QmitkVersorRigid3DTransformOptimizerControls.ui - RigidRegistrationTransforms/QmitkTranslationTransformControls.ui - RigidRegistrationTransforms/QmitkScaleTransformControls.ui - RigidRegistrationTransforms/QmitkScaleLogarithmicTransformControls.ui - RigidRegistrationTransforms/QmitkAffineTransformControls.ui - RigidRegistrationTransforms/QmitkFixedCenterOfRotationAffineTransformControls.ui - #RigidRegistrationTransforms/QmitkRigid3DTransformControls.ui - RigidRegistrationTransforms/QmitkEuler3DTransformControls.ui - RigidRegistrationTransforms/QmitkCenteredEuler3DTransformControls.ui - RigidRegistrationTransforms/QmitkQuaternionRigidTransformControls.ui - RigidRegistrationTransforms/QmitkVersorTransformControls.ui - RigidRegistrationTransforms/QmitkVersorRigid3DTransformControls.ui - RigidRegistrationTransforms/QmitkScaleSkewVersor3DTransformControls.ui - RigidRegistrationTransforms/QmitkSimilarity3DTransformControls.ui - RigidRegistrationTransforms/QmitkRigid2DTransformControls.ui - RigidRegistrationTransforms/QmitkCenteredRigid2DTransformControls.ui - RigidRegistrationTransforms/QmitkEuler2DTransformControls.ui - RigidRegistrationTransforms/QmitkSimilarity2DTransformControls.ui - RigidRegistrationTransforms/QmitkCenteredSimilarity2DTransformControls.ui -) \ No newline at end of file diff --git a/Plugins/PluginList.cmake b/Plugins/PluginList.cmake index 0c330b64bf..4f7e7760d5 100644 --- a/Plugins/PluginList.cmake +++ b/Plugins/PluginList.cmake @@ -1,87 +1,86 @@ # Plug-ins must be ordered according to their dependencies set(MITK_PLUGINS org.blueberry.core.runtime:ON org.blueberry.core.expressions:OFF org.blueberry.core.commands:OFF org.blueberry.core.jobs:OFF org.blueberry.ui.qt:OFF org.blueberry.ui.qt.help:OFF org.blueberry.ui.qt.log:ON org.blueberry.ui.qt.objectinspector:OFF #org.blueberry.test:ON #org.blueberry.uitest:ON #Testing/org.blueberry.core.runtime.tests:ON #Testing/org.blueberry.osgi.tests:ON org.mitk.core.services:ON org.mitk.gui.common:ON org.mitk.planarfigure:ON org.mitk.core.ext:OFF org.mitk.core.jobs:OFF org.mitk.diffusionimaging:OFF org.mitk.simulation:OFF org.mitk.gui.qt.application:ON org.mitk.gui.qt.coreapplication:OFF org.mitk.gui.qt.ext:OFF org.mitk.gui.qt.extapplication:OFF org.mitk.gui.qt.common:ON org.mitk.gui.qt.stdmultiwidgeteditor:ON org.mitk.gui.qt.common.legacy:OFF org.mitk.gui.qt.cmdlinemodules:OFF org.mitk.gui.qt.diffusionimagingapp:OFF org.mitk.gui.qt.datamanager:ON org.mitk.gui.qt.datamanagerlight:OFF org.mitk.gui.qt.properties:ON org.mitk.gui.qt.basicimageprocessing:OFF org.mitk.gui.qt.dicom:OFF org.mitk.gui.qt.dicominspector:OFF org.mitk.gui.qt.diffusionimaging:OFF org.mitk.gui.qt.dosevisualization:OFF org.mitk.gui.qt.geometrytools:OFF org.mitk.gui.qt.igtexamples:OFF org.mitk.gui.qt.igttracking:OFF org.mitk.gui.qt.openigtlink:OFF org.mitk.gui.qt.imagecropper:OFF org.mitk.gui.qt.imagenavigator:ON org.mitk.gui.qt.viewnavigator:OFF org.mitk.gui.qt.materialeditor:OFF org.mitk.gui.qt.measurementtoolbox:OFF org.mitk.gui.qt.moviemaker:OFF org.mitk.gui.qt.pointsetinteraction:OFF org.mitk.gui.qt.pointsetinteractionmultispectrum:OFF org.mitk.gui.qt.python:OFF - org.mitk.gui.qt.registration:OFF org.mitk.gui.qt.remeshing:OFF org.mitk.gui.qt.segmentation:OFF org.mitk.gui.qt.simulation:OFF org.mitk.gui.qt.aicpregistration:OFF org.mitk.gui.qt.renderwindowmanager:OFF org.mitk.gui.qt.toftutorial:OFF org.mitk.gui.qt.tofutil:OFF org.mitk.gui.qt.tubegraph:OFF org.mitk.gui.qt.ugvisualization:OFF org.mitk.gui.qt.ultrasound:OFF org.mitk.gui.qt.volumevisualization:OFF org.mitk.gui.qt.eventrecorder:OFF org.mitk.gui.qt.xnat:OFF org.mitk.gui.qt.igt.app.echotrack:OFF org.mitk.gui.qt.spectrocamrecorder:OFF org.mitk.gui.qt.classificationsegmentation:OFF org.mitk.gui.qt.overlaymanager:OFF org.mitk.gui.qt.multilabelsegmentation:OFF org.mitk.matchpoint.core.helper:OFF org.mitk.gui.qt.matchpoint.algorithm.browser:OFF org.mitk.gui.qt.matchpoint.algorithm.control:OFF org.mitk.gui.qt.matchpoint.algorithm.batch:OFF org.mitk.gui.qt.matchpoint.mapper:OFF org.mitk.gui.qt.matchpoint.framereg:OFF org.mitk.gui.qt.matchpoint.visualizer:OFF org.mitk.gui.qt.matchpoint.evaluator:OFF org.mitk.gui.qt.matchpoint.manipulator:OFF org.mitk.gui.qt.cest:OFF ) diff --git a/Plugins/org.mitk.gui.qt.registration/CMakeLists.txt b/Plugins/org.mitk.gui.qt.registration/CMakeLists.txt deleted file mode 100644 index d56d16ddb5..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -# The project name must correspond to the directory name of your plug-in -# and must not contain periods. -project(org_mitk_gui_qt_registration) - -mitk_create_plugin( - EXPORT_DIRECTIVE REGISTRATION_EXPORT - EXPORTED_INCLUDE_SUFFIXES src - MODULE_DEPENDS MitkQtWidgetsExt MitkMapperExt MitkDeformableRegistration MitkDeformableRegistrationUI MitkRigidRegistration MitkRigidRegistrationUI MitkSegmentation -) - diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkDeformableRegistrationUserManual.dox b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkDeformableRegistrationUserManual.dox deleted file mode 100644 index 1a003a5838..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkDeformableRegistrationUserManual.dox +++ /dev/null @@ -1,52 +0,0 @@ -/** -\page org_mitk_views_deformableregistration The Deformable Image Registration View - -Available sections: - - \ref DeformableRegistrationUserManualOverview - - \ref DeformableRegistrationUserManualDetails - -\section DeformableRegistrationUserManualOverview Overview - -This view allows you to register 2D as well as 3D images in a deformable manner. Register means to align two images, so that they become as similar as -possible. Registration results will directly be applied to the Moving Image. - -\imageMacro{QmitkRegistration_DeformableRegistration_small.png,"MITK with the DeformableRegistration view",16.00} - -This document will tell you how to use this view, but it is assumed that you already know how to navigate through the slices of an image using the -multi-widget. - -\section DeformableRegistrationUserManualDetails Details - -First of all you have to open the data sets which you want to register and select them in the Data Manager. You have to select exactly 2 images for registration. The image which was selected -first will become the fixed image, the other one the moving image. The two selected images will remain for registration until exactly two images were selected in the Data Manager again. While -there aren't two images for registration a message is viewed on top of the view saying that registration needs two images. If two images are selected the message disappears and the interaction -areas for the fixed and moving data appears. On default only the fixed and moving image are shown in the render windows. If you want to have other images visible you have to set the visibility -via the Data Manager. Also if you want to perform a reinit on a specific node or a global reinit for all nodes you have to use the Data Manager. - -\imageMacro{QmitkRegistration_ImageSelectionDeformable.png,"The Image area",7.56} - -The upper area is the "Image" area, where the selected images are shown. It is used for changing the colour of the images between grey values and red/green as well as for changing the opacity of the moving image. -To do so, just use the "Moving Image Opacity:" slider. In the "Show Images Red/Green" you can switch the color from both datasets. If you check the box, the fixed dataset will be displayed in redvalues and the -moving dataset in greenvalues to improve visibility of differences in the datasets. If you uncheck the "Show Images Red/Green" checkbox, -both datasets will be displayed in greyvalues. - -\imageMacro{QmitkRegistration_RegistrationDeformable.png,"The Registration area for Demons based registration",7.56} - -In the "Registration" area you have the choice between different Demonsbased deformable registration algorithms. There are available: - -\li Demons Registration - -\li Symmetric Forces Demons Registration - -For both methods you have to define the same set of parameters. First you have to decide whether you want to perform a histogram matching. This can be done by selecting "Use Histogram Matching". -When it is selected the corresponding parameters are enabled and have to be set. These are the "Number of Histogram Levels", "Number of Match Points" and whether to use a "Threshold at Mean -Intensity". - -For the registration method itself you have to specify the "Number of Iterations" and the "Standard Deviation" within the "Demons Registration" area. - -If all this is done, you can perform the registration by clicking the "Calculate Transformation" button. Finally, you will be asked where you want the result image and the resulting deformation field -to be saved. Therefore you have to select the folder and enter a filename. - -The results will be added in the DataStorage and can be saved in the Data Manager. - -*/ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkPointBasedRegistrationUserManual.dox b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkPointBasedRegistrationUserManual.dox deleted file mode 100644 index 7994e52355..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkPointBasedRegistrationUserManual.dox +++ /dev/null @@ -1,106 +0,0 @@ -/** -\page org_mitk_views_pointbasedregistration The Point Based Registration View - -\imageMacro{QmitkRegistration_PointBasedIcon.png,"Icon of the Point Based Registration View",2.00} - -Available sections: - - \ref PointBasedRegistrationUserManualOverview - - \ref PointBasedRegistrationUserManualDetails - -\section PointBasedRegistrationUserManualOverview Overview - -This view allows you to register two datasets in a rigid and deformable manner via corresponding -PointSets. Register means to align two datasets, so that they become as similar as possible. -Therefore you have to set corresponding points in both datasets, which will be matched. The movement, which has to be -performed on the points to align them, will be performed on the moving data as well. The result is shown in the multi-widget. - -\imageMacro{QmitkRegistration_PointBasedRegistration_small.png,"MITK with the PointBasedRegistration view",16.00} - -This document will tell you how to use this view, but it is assumed that you already know how to navigate through -the slices of a dataset using the multi-widget. - -\section PointBasedRegistrationUserManualDetails Details - -First of all you have to open the data sets which you want to register and select them in the Data Manager. You have to select exactly 2 images for registration. The image which was selected -first will become the fixed image, the other one the moving image. The two selected images will remain for registration until exactly two images were selected in the Data Manager again. While -there aren't two images for registration a message is viewed on top of the view saying that registration needs two images. If two images are selected the message disappears and the interaction -areas for the fixed and moving data appears. The upper area is for interaction with the fixed data. Beneath this area is the interaction area for the moving data. On default only the fixed and -moving image with their corresponding pointsets are shown in the render windows. If you want to have other images visible you have to set the visibility via the Data Manager. Also if you want to -perform a reinit on a specific node or a global reinit for all nodes you have to use the Data Manager. - -\imageMacro{QmitkRegistration_FixedDataPointBased.png,"The Fixed Data area",7.43} - -The "Fixed Data" area contains a QmitkPointListWidget. Within this widget, all points for the fixed data are listed. The label above this list shows the number of points that are already set. -To set points you have to toggle the "Set Points" button, the leftmost under the QmitkPointListWidget. The views in the QmitkStdMultiWidget were reinitialized to the fixed data. Points can -be defined by performing a left click while holding the "Shift"-key pressed in the QmitkStdMultiWidget. You can remove the interactor which listens for left clicks while -holding the "Shift"-key pressed by detoggle the "Set Points" button. The next button, "Clear Point Set", is for deleting all specified points from this dataset. The user is prompted to confirm -the decision. With the most right button, a previously saved point set can be loaded and all of its points are shown in the QmitkPointListWidget and in the QmitkStdMultiWidget. The user is prompted -to select the file to be loaded. The file extension is ".mps". On the left of this button is the save button. With this function all points specified for this dataset and shown in the -QmitkPointListWidget are saved to harddisk. The user is prompted to select a filename. Pointsets were saved in XML fileformat but have to have a ".mps" file extension. You can select landmarks -in the render window with a left mouse button click on them. If you keep the mouse button pressed you can move the landmark to an other position by moving the mouse and then release the mouse -button. With the delete key you can remove the selected landmarks. You can also select landmarks by a double click on a landmark within the QmitkPointListWidget. Using the "Up-Arrow"-button or -the "F2" key you can easily move a landmark upwards and bring it further downwards by pressing "F3" or using the "Down-Arrow"-button. Thus the landmark number can be changed. -The QmitkStdMultiWidget changes its view to show the position of the landmark. - -\imageMacro{QmitkRegistration_MovingDataPointBased.png,"The Moving Data area",7.45} - -The "Moving Data" area contains a QmitkPointListWidget. Within this widget, all points for the moving data are listed. The label above this list shows the number of points that are already set. -To set points you have to toggle the "Set Points" button, the leftmost under the QmitkPointListWidget. The views in the QmitkStdMultiWidget were reinitialized to the moving data. With the -"Opacity:" slider you can change the opacity of the moving dataset. If the slider is leftmost the moving dataset is totally transparent, whereas if it is rightmost the moving dataset is totally -opaque. Points can be defined by performing a left click while holding the "Shift"-key pressed in the QmitkStdMultiWidget. You can remove the interactor which listens for left -mousebutton click while holding the "Shift"-key pressed by detoggle the "Set Points" button. The next button, "Clear Point Set", is for deleting all specified points from this dataset. The user -is prompted to confirm the decision. With the button on your right hand side, a previously saved point set can be loaded and all of its points are shown in the QmitkPointListWidget and in the QmitkStdMultiWidget. -The user is prompted to select the file to be loaded. The file extension is ".mps". On the left of this button is the save button. With this function all points specified for this dataset and -shown in the QmitkPointListWidget are saved to harddisk. The user is prompted to select a filename. Pointsets were saved in XML fileformat but have to have a ".mps" file extension. You can -select landmarks in the render window with a left click on them. If you keep the mouse button pressed you can move the landmark to an other position by moving the mouse and then -release the mouse button. With the delete key you can remove the selected landmarks. You can also select landmarks by a double click on a landmark within the QmitkPointListWidget. Using the "Up-Arrow"-button or -the "F2" key you can easily move a landmark upwards and bring it further downwards by pressing "F3" or using the "Down-Arrow"-button. Thus the landmark number can be changed.The QmitkStdMultiWidget changes its view to show the position of the -landmark. - -\imageMacro{QmitkRegistration_DisplayOptionsPointBased.png,"The Display Options area",7.49} - -In this area you can find the "Show Images Red/Green" checkbox. Here you can switch the color from both datasets. If you check the box, the fixed dataset will be -displayed in redvalues and the moving dataset in greenvalues to improve visibility of differences in the datasets. If you uncheck the "Show Images Red/Green" checkbox, both datasets will be -displayed in greyvalues. - -Before you perform your transformation it is useful to see both images again. Therefore detoggle the "Set Points" button for the fixed data as well as for the moving data. - -\imageMacro{QmitkRegistration_RegistrationPointBased.png,"The Registration area",7.45} - -The functions concerning the registration are displayed in the "Registration" area. It not only contains the registration method selection and the registration itself but also offers the possibility -to save, undo or redo the results. Furthermore a display is implemented, which shows you how good the landmarks correspond. -Those features will be explained in following paragraphs. - -Using the "Method"-selector, you can pick one of those transformations: Rigid, Similarity, Affine and LandmarkWarping. -Depending on which one you chose, an additional specifier, "Use ICP" can be set, which leads to the following possibilities for registration: - -\li Rigid with ICP means only translation and rotation. The order of your landmarks will not be taken into account. E. g. landmark one in the fixed data can be mapped on landmark three in the moving data. You -have to set at least one landmark in each dataset to enable the Register button which performs the transformation. - -\li Similarity with ICP means only translation, scaling and rotation. The order of your landmarks will not be taken into account. E. g. landmark one in the fixed data can be mapped on landmark three in the -moving data. You have to set at least one landmark in each dataset to enable the Register button which performs the transformation. - -\li Affine with ICP means only translation, scaling, rotation and shearing. The order of your landmarks will not be taken into account. E. g. landmark one in the fixed data can be mapped on landmark three in -the moving data. You have to set at least one landmark in each dataset to enable the Register button which performs the transformation. - -\li Rigid means only translation and rotation. The order of your landmarks will be taken into account. E. g. landmark one in the fixed data will be mapped on landmark one in the moving data. You have to set -at least one landmark and the same number of landmarks in each dataset to enable the Register button which performs the transformation. - -\li Similarity means only translation, scaling and rotation. The order of your landmarks will be taken into account. E. g. landmark one in the fixed data will be mapped on landmark one in the moving data. -You have to set at least one landmark and the same number of landmarks in each dataset to enable the Register button which performs the transformation. - -\li Affine means only translation, scaling, rotation and shearing. The order of your landmarks will be taken into account. E. g. landmark one in the fixed data will be mapped on landmark one in the moving -data. You have to set at least one landmark and the same number of landmarks in each dataset to enable the Register button which performs the transformation. - -\li LandmarkWarping means a freeform deformation of the moving image, so that afterwards the landmarks are exactly aligned. The order of your landmarks will be taken into account. -E. g. landmark one in the fixed data will be mapped on landmark one in the moving data. You have to set at least one landmark and the same number of landmarks in each dataset to enable the -Register button which performs the transformation. - -The root mean squares difference between the landmarks will be displayed as number, so that you can check how good the landmarks correspond. - -The "Undo Transformation" button becomes enabled after performing a transformation and allows you to undo it. After doing this, the "Redo Transformation" button -is enabled and lets you redo, the just undone transformation(no calculation needed) - -Saving of the transformed image can be done via the Data Manager. - -*/ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration.dox b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration.dox deleted file mode 100644 index 64aa225fa7..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration.dox +++ /dev/null @@ -1,14 +0,0 @@ -/** -\page org_mitk_gui_qt_registration The Registration Plugin - -\section RegistrationModuleOverviewPageOverview Overview - -MITK provides several views for the registration of images. - -\section RegistrationModuleOverviewPageList List of Views - - \li \subpage org_mitk_views_deformableregistration - \li \subpage org_mitk_views_pointbasedregistration - \li \subpage org_mitk_views_rigidregistration - -*/ \ No newline at end of file diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_DeformableRegistration_small.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_DeformableRegistration_small.png deleted file mode 100644 index ea3e8dbb5f..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_DeformableRegistration_small.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_DisplayOptionsPointBased.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_DisplayOptionsPointBased.png deleted file mode 100644 index 07e0c65bf9..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_DisplayOptionsPointBased.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_FixedDataPointBased.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_FixedDataPointBased.png deleted file mode 100644 index 401c62184f..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_FixedDataPointBased.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_ImageArea.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_ImageArea.png deleted file mode 100644 index e075e83e04..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_ImageArea.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_ImageSelectionDeformable.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_ImageSelectionDeformable.png deleted file mode 100644 index 383b42d464..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_ImageSelectionDeformable.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_ManualRegistrationArea.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_ManualRegistrationArea.png deleted file mode 100644 index 38107899a4..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_ManualRegistrationArea.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_MovingDataPointBased.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_MovingDataPointBased.png deleted file mode 100644 index 9a7c3dd9fa..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_MovingDataPointBased.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_PointBasedIcon.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_PointBasedIcon.png deleted file mode 100644 index 77fde33ffe..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_PointBasedIcon.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_PointBasedRegistration_small.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_PointBasedRegistration_small.png deleted file mode 100644 index 4e2fe1ca54..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_PointBasedRegistration_small.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RegistrationArea.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RegistrationArea.png deleted file mode 100644 index a56b9c8451..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RegistrationArea.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RegistrationDeformable.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RegistrationDeformable.png deleted file mode 100644 index 4e73be35ff..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RegistrationDeformable.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RegistrationPointBased.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RegistrationPointBased.png deleted file mode 100644 index 685e72ded0..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RegistrationPointBased.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RigidRegistrationIcon.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RigidRegistrationIcon.png deleted file mode 100644 index d45691689d..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RigidRegistrationIcon.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RigidRegistration_small.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RigidRegistration_small.png deleted file mode 100644 index 08a933d8d1..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_RigidRegistration_small.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_Tab2.png b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_Tab2.png deleted file mode 100644 index 0a47768c66..0000000000 Binary files a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRegistration_Tab2.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRigidRegistrationUserManual.dox b/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRigidRegistrationUserManual.dox deleted file mode 100644 index 85749f9f63..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/documentation/UserManual/QmitkRigidRegistrationUserManual.dox +++ /dev/null @@ -1,214 +0,0 @@ -/** -\page org_mitk_views_rigidregistration The Rigid Registration View - -\imageMacro{QmitkRegistration_RigidRegistrationIcon.png,"Icon of the View",2.00} - -Available sections: - - \ref QmitkRigidRegistrationUserManualOverview - - \ref QmitkRigidRegistrationUserManualIssues - - \ref QmitkRigidRegistrationUserManualDetails - - \ref QmitkRigidRegistrationUserManualReferences - -\section QmitkRigidRegistrationUserManualOverview Overview - -This view allows you to register 2D as well as 3D images in a rigid manner. If the Moving Image is an image with multiple timesteps you can select one timestep for registration. -Register means to align two images, so that they become as similar as possible. Therefore you can select from different transforms, metrics and optimizers. Registration results will -directly be applied to the Moving Image. Also binary images as image masks can be used to restrict the metric evaluation only to the masked area. - -\imageMacro{QmitkRegistration_RigidRegistration_small.png,"MITK with the QmitkRigidRegistration view",16.00} - -This document will tell you how to use this view, but it is assumed that you already know how to navigate through the slices of an image using the -multi-widget. - -\section QmitkRigidRegistrationUserManualIssues Known Issues - -Depending on your system the registration can fail to allocate memory for calculating the gradient image for registration. In this case you can try to select another optimizer which is not based -on a gradient image and uncheck the checkbox for "Compute Gradient". - -\section QmitkRigidRegistrationUserManualDetails Details - -First of all you have to open the data sets which you want to register and select them in the Data Manager. You have to select exactly 2 images for registration. The image which was selected -first will become the fixed image, the other one the moving image. The two selected images will remain for registration until exactly two images were selected in the Data Manager again. - -\imageMacro{QmitkRegistration_ImageArea.png,"The Image area",7.34} - -While there aren't two images for registration a message is viewed on top of the view saying that registration needs two images. If two images are selected the message disappears and the -interaction areas for the fixed and moving data appears. If both selected images have a binary image as childnode a selection box appears which allows, when checked, to use the binary images as -image mask to restrict the registration on this certain area. If an image has more than one binary image as child, the upper one from the DataManager list is used. If the Moving Image is a -dynamic images with several timesteps a slider appears to select a specific timestep for registration. - -On default only the fixed and moving image are shown in the render windows. If you want to have other images visible you have to set the visibility -via the Data Manager. Also if you want to perform a reinit on a specific node or a global reinit for all nodes you have to use the Data Manager. - -The colour of the images can be changed between grey values and red/green and the opacity of the moving image can be changed. -With the "Moving Image Opacity:" slider you can change the opacity of the moving dataset. In the "Show Images Red/Green" you can switch the color from both datasets. If you check the box, -the fixed dataset will be displayed in red-values and the moving dataset in green-values to improve visibility of differences in the datasets. If you uncheck the "Show Images Red/Green" checkbox, -both datasets will be displayed in grey-values. - -\imageMacro{QmitkRegistration_RegistrationArea.png,"The Registration area",7.49} - -In the "Register" area you can start the registration by clicking the "Calculate Transform" button. The optimizer value for every iteration step is diplayed as LCD number next to the -"Optimizer Value:" label. Many of the registration methods can be canceled during their iteration steps by clicking the "Stop Optimization" button. During the calculation, a progress bar -indicates the progress of the registration process. The render widgets are updated for every single iteration step, so that the user has the chance to supervise how good the registration -process works with the selected methods and parameters. If the registration process does not lead to a sufficient result, it is possible to undo the transformation and restart the registration -process with some changes in parameters. The differences in transformation due to the changed parameters can be seen in every iteration step and help the user understand the parameters. -Also the optimizer value is updated for every single iteration step and shown in the GUI. The optimizer value is an indicator for the misalignment between the two images. The real time -visualization of the registration as well as the optimizer value provides the user with information to trace the improvement through the optimization process. -The "Undo Transformation" button becomes enabled when you have performed an transformation and you can undo the performed transformations. The "Redo Transformation" button becomes enabled when -you have performed an undo to redo the transformation without to recalculate it. - -\imageMacro{QmitkRegistration_ManualRegistrationArea.png,"The Manual Registration area",5.95} - -In the "Manual Registration" area, shown by checking the checkbox Manual Registration, you can manually allign the images by moving sliders for translation and scaling in x-, y- and z-axis as -well as for rotation around the x-, y- and z-Axis. Additionally you can automatically allign the image centers with the button "Automatic Allign Image Centers". - -\imageMacro{QmitkRegistration_Tab2.png,"The Advanced Mode tab",7.54} - -In the "Advanced Mode" tab you can choose a transform, a metric, an optimizer and an interpolator and you have to set the corresponding parameters to specify the registration -method you want to perform. With the topmost button you can also load testpresets. These presets contain all parametersets which were saved using the "Save as Testpreset" button. The "Save as -Preset" button makes the preset available from the "Automatic Registration" tab. This button should be used when a preset is not intended for finding good parameters anymore but can be used as -standard preset. - -To show the current transform and its parameters for the registration process, the Transform checkbox has to be checked. Currently, the following transforms are implemented -(for detailed information see [1] and [2]): - -\li Translation: Transformation by a simple translation for every dimension. - -\li Scale: Transformation by a certain scale factor for each dimension. - -\li ScaleLogarithmic: Transformation by a certain scale factor for each dimension. The parameter factors are passed as logarithms. - -\li Affine: Represents an affine transform composed of rotation, scaling, shearing and translation. - -\li FixedCenterOfRotationAffine: Represents an affine transform composed of rotation around a user provided center, scaling, shearing and translation. - -\li Rigid3D: Represents a 3D rotation followed by a 3D translation. - -\li Euler3D: Represents a rigid rotation in 3D space. That is, a rotation followed by a 3D translation. - -\li CenteredEuler3D: Represents a rigid rotation in 3D space around a user provided center. That is, a rotation followed by a 3D translation. - -\li QuaternionRigid: Represents a 3D rotation and a 3D translation. The rotation is specified as a quaternion. - -\li Versor: Represents a 3D rotation. The rotation is specified by a versor or unit quaternion. - -\li VersorRigid3D: Represents a 3D rotation and a 3D translation. The rotation is specified by a versor or unit quaternion. - -\li ScaleSkewVersor3D: Represents a 3D translation, scaling, shearing and rotation. The rotation is specified by a versor or unit quaternion. - -\li Similarity3D: Represents a 3D rotation, a 3D translation and homogeneous scaling. - -\li Rigid2D: Represents a 2D rotation followed by a 2D translation. - -\li CenteredRigid2D: Represents a 2D rotation around a user provided center followed by a 2D translation. - -\li Euler2D: Represents a 2D rotation and a 2D translation. - -\li Similarity2D: Represents a 2D rotation, homogeneous scaling and a 2D translation. - -\li CenteredSimilarity2D: Represents a 2D rotation around a user provided center, homogeneous scaling and a 2D translation. - -The desired transform can be chosen from a combo box. All parameters defining the selected transform have to be specified within the line edits and checkboxes underneath the transform combo box. -To show the current metric and its parameters for the registration process, the Metric checkbox has to be checked. Currently, the following metrics are implemented -(for detailed information see [1] and [2]): - -\li MeanSquares: Computes the mean squared pixel-wise difference in intensity between image A and B. - -\li NormalizedCorrelation: Computes pixel-wise cross correlation and normalizes it by the square root of the autocorrelation of the images. - -\li GradientDifference: Evaluates the difference in the derivatives of the moving and fixed images. - -\li KullbackLeiblerCompareHistogram[3]: Measures the relative entropy between two discrete probability distributions. - -\li CorrelationCoefficientHistogram: Computes the cross correlation coefficient between the intensities. - -\li MeanSquaresHistogram: The joint histogram of the fixed and the mapped moving image is built first. Then the mean squared pixel-wise difference in intensity between image A and B is -calculated. - -\li MutualInformationHistogram: Computes the mutual information between image A and image B. - -\li NormalizedMutualInformationHistogram: Computes the mutual information between image A and image B. - -\li MattesMutualInformation[4, 5]: The method of Mattes et al. is used to compute the mutual information between two images to be registered. - -\li MeanReciprocalSquareDifference: Computes pixel-wise differences and adds them after passing them through a bell-shaped function 1 / (1+x^2). - -\li MutualInformation[6]: Computes the mutual information between image A and image B. - -\li MatchCardinality: Computes cardinality of the set of pixels that match exactly between the moving and fixed images. - -\li KappaStatistic[7]: Computes spatial intersection of two binary images. - -The desired metric can be chosen from a combo box. All parameters defining the selected metric have to be specified within the line edits and checkboxes underneath the metric combo box. -To show the current optimizer and its parameters for the registration process, the Optimizer checkbox has to be checked. Currently, the following optimizers are implemented -(for detailed information see [1] and [2]): - -\li Exhaustive: Fully samples a grid on the parametric space. - -\li GradientDescent: A simple gradient descent optimizer. - -\li QuaternionRigidTransformGradientDescent: Variant of a gradient descent optimizer. - -\li LBFGSB[8, 9]: Limited memory Broyden Fletcher Goldfarb Shannon minimization with simple bounds. - -\li OnePlusOneEvolutionary[10]: 1+1 evolutionary strategy. - -\li Powell: Implements Powell optimization using Brent line search. - -\li FRPR: Fletch-Reeves & Polak-Ribiere optimization using dBrent line search. - -\li RegularStepGradientDescent: Variant of a gradient descent optimizer. - -\li VersorTransform: Variant of a gradient descent optimizer. - -\li Amoeba: Implementation of the Nelder-Meade downhill simplex algorithm. - -\li ConjugateGradient: Used to solve unconstrained optimization problems. - -\li LBFGS: Limited memory Broyden Fletcher Goldfarb Shannon minimization. - -\li SPSA[11]: Based on simultaneous perturbation. - -\li VersorRigid3DTransform: Variant of a gradient descent optimizer for the VersorRigid3DTransform parameter space. - -The desired optimizer can be chosen from a combo box. All parameters defining the selected optimizer have to be specified within the line edits and checkboxes underneath the optimizer combo box. -To show the current interpolator for the registration process, just check the Interpolator checkbox. Currently, the following interpolators are implemented -(for detailed information see [1] and [2]): - -\li Linear: Intensity varies linearly between grid positions. - -\li NearestNeighbor: Uses the intensity of the nearest grid position. - -You can show and hide the parameters for the selection by checking or unchecking the corresponding area. You can save the current sets of parameters with the "Save as Testpreset" or "Save as -Preset" buttons. - -\section QmitkRigidRegistrationUserManualReferences References: - -1. L. Ibanez, W. Schroeder and K. Ng, The ITK Software Guide, Kitware Inc, New York, 2005. - -2. http://www.itk.org/Doxygen/ - -3. Albert C.S. Chung, William M. Wells III, Alexander Norbash, and W. Eric L. Grimson, Multi-modal Image Registration by Minimising Kullback-Leibler Distance, In Medical Image Computing and -Computer-Assisted Intervention - MICCAI 2002, LNCS 2489, pp. 525 - 532. - -4. D. Mattes, D. R. Haynor, H. Vesselle, T. Lewellen and W. Eubank, "Nonrigid multimodality image registration", Medical Imaging 2001: Image Processing, 2001, pp. 1609-1620. - -5. D. Mattes, D. R. Haynor, H. Vesselle, T. Lewellen and W. Eubank, "PET-CT Image Registration in the Chest Using Free-form Deformations", IEEE Transactions in Medical Imaging. -Vol.22, No.1, January 2003, pp.120-128. - -6. Viola, P. and Wells III, W. (1997). "Alignment by Maximization of Mutual Information" International Journal of Computer Vision, 24(2):137-154. - -7. AP Zijdenbos, BM Dawant, RA Margolin , AC Palmer, Morphometric analysis of white matter lesions in MR images: Method and validation, IEEE Transactions on Medical Imaging, -13(4):716-724, Dec. 1994. - -8. R. H. Byrd, P. Lu and J. Nocedal. A Limited Memory Algorithm for Bound Constrained Optimization, (1995), SIAM Journal on Scientific and Statistical Computing , 16, 5, pp. 1190-1208. - -9. C. Zhu, R. H. Byrd and J. Nocedal. L-BFGS-B: Algorithm 778: L-BFGS-B, FORTRAN routines for large scale bound constrained optimization (1997), ACM Transactions on Mathematical Software, -Vol 23, Num. 4, pp. 550 - 560. - -10. Martin Styner, G. Gerig, Christian Brechbuehler, Gabor Szekely, "Parametric estimate of intensity inhomogeneities applied to MRI", IEEE TRANSACTIONS ON MEDICAL IMAGING; 19(3), pp. 153-165, - 2000. - -11. Spall, J.C. (1998), "An Overview of the Simultaneous Perturbation Method for Efficient Optimization," Johns Hopkins APL Technical Digest, vol. 19, pp. 482-492. - -*/ diff --git a/Plugins/org.mitk.gui.qt.registration/files.cmake b/Plugins/org.mitk.gui.qt.registration/files.cmake deleted file mode 100644 index 17c6d8776b..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/files.cmake +++ /dev/null @@ -1,76 +0,0 @@ -set(SRC_CPP_FILES - -) - -set(INTERNAL_CPP_FILES - mitkPluginActivator.cpp - #DeformableRegistration - QmitkDeformableRegistrationView.cpp - # PointBasedRegistration - QmitkPointBasedRegistrationView.cpp - mitkLandmarkWarping.cpp - # RigidRegistration - QmitkRigidRegistrationView.cpp - QmitkLoadPresetDialog.cpp - QmitkRigidRegistrationSelectorView.cpp - -) - -set(UI_FILES - #DeformableRegistration - src/internal/QmitkDeformableRegistrationViewControls.ui - # PointBasedRegistration - src/internal/QmitkPointBasedRegistrationViewControls.ui - # RigidRegistration - src/internal/QmitkRigidRegistrationViewControls.ui - src/internal/QmitkRigidRegistrationSelector.ui -) - -set(MOC_H_FILES - src/internal/mitkPluginActivator.h - #DeformableRegistration - src/internal/QmitkDeformableRegistrationView.h - # PointBasedRegistration - src/internal/QmitkPointBasedRegistrationView.h - # RigidRegistration - src/internal/QmitkRigidRegistrationView.h - src/internal/QmitkLoadPresetDialog.h - src/internal/QmitkRigidRegistrationSelectorView.h - -) - -set(CACHED_RESOURCE_FILES -# list of resource files which can be used by the plug-in -# system without loading the plug-ins shared library, -# for example the icon used in the menu and tabs for the -# plug-in views in the workbench - plugin.xml - #DeformableRegistration - resources/DeformableRegistration.xpm - # PointBasedRegistration - resources/PointBasedRegistration.xpm - # RigidRegistration - resources/RigidRegistration.xpm -) - -set(QRC_FILES - #DeformableRegistration - resources/QmitkDeformableRegistrationView.qrc - # PointBasedRegistration - resources/QmitkPointBasedRegistrationView.qrc - # RigidRegistration - resources/QmitkRigidRegistrationView.qrc -) - -set(CPP_FILES - -) - -foreach(file ${SRC_CPP_FILES}) - set(CPP_FILES ${CPP_FILES} src/${file}) -endforeach(file ${SRC_CPP_FILES}) - -foreach(file ${INTERNAL_CPP_FILES}) - set(CPP_FILES ${CPP_FILES} src/internal/${file}) -endforeach(file ${INTERNAL_CPP_FILES}) - diff --git a/Plugins/org.mitk.gui.qt.registration/manifest_headers.cmake b/Plugins/org.mitk.gui.qt.registration/manifest_headers.cmake deleted file mode 100644 index a0604a2789..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/manifest_headers.cmake +++ /dev/null @@ -1,5 +0,0 @@ -set(Plugin-Name "MITK Registration") -set(Plugin-Version "1.0") -set(Plugin-Vendor "DKFZ, Medical and Biological Informatics") -set(Plugin-ContactAddress "http://www.mitk.org") -set(Require-Plugin org.mitk.gui.qt.common) diff --git a/Plugins/org.mitk.gui.qt.registration/plugin.xml b/Plugins/org.mitk.gui.qt.registration/plugin.xml deleted file mode 100644 index 1dd055d5a7..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/plugin.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - Register two images using user-defined points registration - - - - - - - - Register two images using a rigid registration - - - - - - - - - - - - - - - - - diff --git a/Plugins/org.mitk.gui.qt.registration/resources/DeformableRegistration.xpm b/Plugins/org.mitk.gui.qt.registration/resources/DeformableRegistration.xpm deleted file mode 100644 index 3e2096b010..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/resources/DeformableRegistration.xpm +++ /dev/null @@ -1,235 +0,0 @@ -/* XPM */ -static char *DeformableRegistration___[] = { -/* columns rows colors chars-per-pixel */ -"48 48 181 2", -" c #735C62", -". c #57666F", -"X c #577076", -"o c #587177", -"O c #56747A", -"+ c #5E747B", -"@ c #7E646A", -"# c #63767E", -"$ c #76757B", -"% c #994F60", -"& c #865A6D", -"* c #965061", -"= c #9A5063", -"- c #A04B60", -"; c #A75166", -": c #A75468", -"> c #A9576B", -", c #A35C6D", -"< c #AA5B6F", -"1 c #A95E70", -"2 c #83656C", -"3 c #86686F", -"4 c #856970", -"5 c #85767C", -"6 c #8C7A7F", -"7 c #97757D", -"8 c #9C757F", -"9 c #AE6375", -"0 c #B06577", -"q c #B56B7D", -"w c #4F7781", -"e c #4A7D89", -"r c #5E7C83", -"t c #647B83", -"y c #6C7E86", -"u c #647188", -"i c #747D83", -"p c #737E89", -"a c #957A81", -"s c #997A82", -"d c #3C8FA2", -"f c #3495AD", -"g c #3D9CB4", -"h c #35A1BA", -"j c #438291", -"k c #428999", -"l c #5C8691", -"z c #508C9F", -"x c #5D899D", -"c c #608087", -"v c #6E828A", -"b c #72848C", -"n c #72898F", -"m c #6F8F97", -"M c #6C8F98", -"N c #748791", -"B c #798690", -"V c #768B92", -"C c #7B8C94", -"Z c #7C8E98", -"A c #67909A", -"S c #6E9199", -"D c #73939B", -"F c #7C949B", -"G c #7E999F", -"H c #448FA1", -"J c #4D90A3", -"K c #4496AC", -"L c #469AAF", -"P c #4C9AAD", -"I c #5693A2", -"U c #5C93A4", -"Y c #5997A9", -"T c #539AAB", -"R c #5B9DAE", -"E c #449DB3", -"W c #4F9EB1", -"Q c #549FB2", -"! c #5B9FB1", -"~ c #6296A5", -"^ c #6E97A6", -"/ c #6798A6", -"( c #6D9BA6", -") c #649CAB", -"_ c #6A9DA9", -"` c #7096A2", -"' c #7A96A1", -"] c #759AA3", -"[ c #7C9CA4", -"{ c #729DA8", -"} c #41A0B7", -"| c #4EA1B6", -" . c #47A3B9", -".. c #4DA5BB", -"X. c #57A0B3", -"o. c #5CA5B6", -"O. c #5EA9BB", -"+. c #7DA1A9", -"@. c #62A4B4", -"#. c #6BA1B0", -"$. c #65ABBC", -"%. c #69ACBD", -"&. c #74ADBB", -"*. c #7CAEBB", -"=. c #3AAAC4", -"-. c #50ACC4", -";. c #56B9D1", -":. c #63B1C4", -">. c #6CB2C2", -",. c #79B2C0", -"<. c #71B9CA", -"1. c #7AB9C8", -"2. c #8D858D", -"3. c #9D858B", -"4. c #9F888D", -"5. c #838591", -"6. c #868890", -"7. c #858E98", -"8. c #948B92", -"9. c #9B8B91", -"0. c #82959D", -"q. c #8A949F", -"w. c #81989F", -"e. c #A1838A", -"r. c #A2888E", -"t. c #A58C92", -"y. c #AB8F96", -"u. c #B0999E", -"i. c #829CA2", -"p. c #8A9EA6", -"a. c #A49EA3", -"s. c #AB9EA4", -"d. c #B59EA4", -"f. c #89A0A7", -"g. c #84A4AB", -"h. c #8CA4AA", -"j. c #91A6AE", -"k. c #91A8AF", -"l. c #82A7B0", -"z. c #85A9B2", -"x. c #8DABB2", -"c. c #8AAFB8", -"v. c #93ACB3", -"b. c #83B0BC", -"n. c #8DB0B8", -"m. c #96B1B7", -"M. c #98B0B6", -"N. c #95B2B8", -"B. c #98B2B8", -"V. c #9DB8BF", -"C. c #BAA0A6", -"Z. c #BCA4AA", -"A. c #A3B6BF", -"S. c #A0B9BF", -"D. c #C2ABB0", -"F. c #CAB3B9", -"G. c #84B8C6", -"H. c #82BECC", -"J. c #94BBC4", -"K. c #9CBAC2", -"L. c #94BFCA", -"P. c #A3BDC3", -"I. c #A8BAC2", -"U. c #88C0CE", -"Y. c #93C2CE", -"T. c #9CC4CD", -"R. c #8CC3D1", -"E. c #A6C0C7", -"W. c #A3C3CA", -"Q. c #AEC7CD", -"!. c #AEC9D0", -"~. c #B4CCD2", -"^. c #A6D1DB", -"/. c #B9D3D9", -"(. c #BFD8DF", -"). c #BEE0E7", -"_. c #E0C9CF", -"`. c #C1DBE1", -"'. c #C7E0E6", -"]. c #CEE7ED", -"[. c None", -/* pixels */ -"< 9 9 9 9 9 9 9 : % % % % % * % % > 1 1 1 1 1 1 1 ; , , , , : , , ; [.[.[.[.[.[.[.[.[.[.[.[.[.[.", -"0 F.F.F.F.F.F.F.s @ 3.d.d.d.d.d.d.d.s 3.3.e.r.3.3.4., [.[.[.[.[.[.[.[.[.[.[.[.[.[.", -"0 F.F.F.F.F.F.F.s @ @ 3.d.d.d.d.d.d.d.s 3.3.4.4.4.4.4., [.[.[.[.[.[.[.[.[.[.[.[.[.[.", -"0 F.F.F.F.F.F.F.s @ e.d.d.d.d.d.d.d.s 3.r.4.4.4.4.3.9 [.[.[.[.[.[.[.[.[.[.[.[.[.[.", -"0 F.F.F.F.F.F.F.s @ s d.d.d.d.d.d.d.s 3.4.4.4.4.4.4., [.[.[.[.[.[.[.[.[.[.[.[.[.[.", -"0 F.F.F.F.F.F.F.s 2 r.d.d.d.d.d.d.d.s 3.3.4.4.4.4.3., [.[.[.[.[.[.[.[.[.[.[.[.[.[.", -"0 F.F.F.F.F.F.F.s @ 3.d.d.d.d.d.d.d.s 3.t.4.4.4.4.4.9 [.[.[.[.[.[.[.[.[.[.[.[.[.[.", -"0 F.F.F.F.F.F.F.a @ e.d.d.d.d.d.d.d.s 3.4.4.4.4.4.4., [.[.[.[.[.[.[.[.[.[.[.[.[.[.", -"< y.y.y.y.y.y.y.7 2 2 2 2 2 2 2 3 8 e.e.r.e.e.e.3.7 a a a 5.` ~ I U I T T P T P [.[.[.[.[.[.[.[.", -"9 C.C.C.C.C.C.C.s r.r.r.r.r.r.r.3.3 @ @ @ @ @ @ @ a [ @.$.&.b.v.0.F i.i.i.w.i.[ _ Y P L [.[.[.[.", -"q _._._._._._._.3.u.d.d.d.d.d.d.r.2 $ Y $.b.B.B.B.B.B.f.C i.i.f.f.G [ i.i.i.[ E [.[.[.", -"q _._._._._._._.e.u.d.d.d.d.d.d.t.2 i R %.N.N.N.B.B.B.B.B.m.6.G i.w.w.f.G i.i.i.i.L [.[.[.", -"q _._._._._._._.e.u.d.d.d.d.d.d.t.2 $ z Y N.B.B.B.B.B.B.B.M.N.B.q.S i.i.i.+.G i.i.f.[ W [.[.[.", -"q _._._._._._._.s u.d.d.d.d.d.d.t.2 v T F y f.N.B.B.B.B.B.B.B.B.B.h.S i.i.i.w.f.i.i.i.w.T [.[.[.", -"q _._._._._._._.e.u.d.d.d.d.d.d.t.~ R i.i.F b v.M.N.N.B.B.B.B.B.B.B.D D i.i.G G i.G i.i._ I [.[.", -"q _._._._._._._.e.u.d.d.d.d.d.s.R { i.i.i.i.C V B.B.M.M.B.B.B.B.B.B.h.S i.i.f.i.i.f.i.i.f.P [.[.", -"q _._._._._._._.3.u.C.C.d.d.a.X.[ i.i.i.i.i.i.b w.B.B.B.B.B.j.h.f.p.+.A S G G f.G f.G f.w.P [.[.", -"> r.e.r.e.r.e.r.8 7 7 6 8 2.X.[ i.i.i.i.i.i.i.G C h.M.h.0.F F 0.w.7.G [ D +.D M S D G G [ T [.[.", -"9 D.D.D.D.D.D.D.s 3.3.3.8.X.i.i.i.i.i.i.i.i.i.i.p.C F 0.i.i.i.i.i.i.[ G +.Q.Q.S.m.g.D S F R [.[.", -"0 F.F.F.F.F.F.F.s 3.4.4.X.[ i.i.i.i.i.i.i.i.i.p.p.F i.i.i.i.i.i.G f.w.f.] E.Q.Q.Q.Q.Q.N.+.Y I [.", -"0 F.F.F.F.F.F.F.s 3.4.! [ i.i.i.i.i.i.i.i.p.p.f.v.h.0.i.i.i.i.i.f.G i.i.[ v.Q.Q.Q.Q.!.Q.Q.V.| [.", -"0 F.F.F.F.F.F.F.s 3./ ( w.i.i.i.i.i.i.i.p.f.v.B.B.B.0.w.i.i.i.i.i.i.i.i.[ z.Q.Q.Q.Q.Q.Q.Q.Q.O.[.", -"0 F.F.F.F.F.F.F.s G H.h.0.w.w.i.i.i.i.f.h.M.N.B.B.B.h.0.i.i.i.i.i.i.i.i.w.[ Q.Q.Q.Q.Q.Q.Q.Q.$.[.", -"0 F.F.F.F.F.F.F.2.>.Q.Q.S.0.0.w.i.i.h.h.B.M.B.B.B.B.B.0.i.i.i.i.i.i.i.i.i.] V.Q.Q.Q.Q.Q.Q.Q.$.[.", -"0 F.F.F.F.F.F.F.o.Q.Q.Q.Q.Q.f.q.w.0.k.N.B.B.B.B.B.B.N.h.0.i.i.i.i.i.i.i.i.[ x.Q.Q.Q.Q.Q.Q.Q.>.[.", -"1 D.Z.Z.Z.Z.Z.p.U.Q.Q.Q.Q.Q.Q.f.B w.B.M.M.B.B.B.B.B.M.M.0.i.i.i.i.0.i.i.i.i.+.Q.Q.Q.Q.Q.Q.Q.1.[.", -"- 2 2 2 2 3 5 :.Q.Q.~.Q.Q.Q.E.w.S.V f.M.N.B.N.N.M.B.B.M.0.0.0.F w.q.z.g.[ [ _ g.m.E.Q.Q.Q.Q.U.[.", -"- ) T.Q.Q.Q.Q.Q.Q.f.~.].P.# h.B.B.M.M.B.v.p.p.i.i.v.Q.Q.Q.Q.Q.Q.Q.] m S S +.B.Q.Q.Y.) ", -"% i <.Q.Q.Q.Q.Q.Q.j.A.].].].k.# v.M.N.m.C b w.w.i.0.v.Q.Q.Q.Q.Q.Q.Q.g.F i.i.F S g.P.T.o.", -"% ) Q.Q.Q.Q.Q.Q.M.B.].].].].].p.v M.k.v t i.i.i.i.w.p.Q.Q.Q.Q.Q.Q.Q.z.m i.i.i.i.D S g.o.", -"% y H.Q.Q.Q.Q.Q.I.j.].].].].].].].V v # V i.i.i.i.i.i.p.P.Q.Q.Q.Q.Q.Q.x.D i.i.i.i.i.G m E ", -"% ! Q.Q.Q.Q.Q.Q.h.~.].].].].].].].k.. V i.i.i.i.i.i.i.0.k.Q.~.Q.Q.Q.Q.V.S i.i.i.i.i.i.i.P ", -"% r L.Q.Q.Q.Q.Q.M.A.].].].].].].].v.v h.t i.i.i.i.i.i.i.G h.Q.Q.Q.Q.Q.Q.E.D i.i.i.i.i.i.i.P ", -"% J ! #.n.Q.Q.E.j.'.].].].].].].k.v E.Q.v V i.i.i.i.G f.i.w.E.Q.Q.Q.Q.Q.Q.D i.i.i.i.i.i.i.P ", -"% * * * = & u x ) ^ I.].].].].].].A.C Q.Q.Q.S.i i.i.i.i.f.G i.C h.V.B.B.E.Q.Q.+.w.f.G [ i.i.i.P ", -"[.[.[.[.[.[.[.[.[.[.-.^.].].].].(.+.E.Q.Q.Q.Q.g.D i.i.i.w.D S D ] z.n.n.z.] +.D G w.f.G i.[ f.P ", -"[.[.[.[.[.[.[.[.[.[.[.[.;.).].].h.V.Q.Q.Q.Q.Q.E.m i.w.D D z.m.S.g.].].].].`.Q.l.D S G i.i.i.i.P ", -"[.[.[.[.[.[.[.[.[.[.[.[.[.=.R.B.g.Q.Q.Q.Q.Q.Q.Q.z.V S z.E.Q.Q.Q.+.].].].].].].J.N.x.D m G i.i.P ", -"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.! Q.Q.Q.Q.Q.Q.Q.Q.g.M V.Q.Q.Q.~.Q.g.`.].].].].].V.N.Q.Q.x.D G i.P ", -"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.@.Q.Q.Q.Q.Q.W.[ r c M.Q.Q.Q.Q.Q.g.Q.].].].].].V.m.Q.Q.Q.V.D D P ", -"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.$.Q.Q.Q.E.D r X + +.Q.Q.Q.Q.Q.x.K.].].].].].K.B.Q.Q.Q.Q.E.[ K ", -"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.$.Q.Q.[ + X X X m Q.Q.Q.Q.Q.V.x.].].].].].W.B.Q.Q.Q.Q.Q.V.h ", -"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.&.g.r o X X X r x.Q.~.Q.Q.Q.+.].].].].].Q.V.Q.Q.Q.Q.!...[.", -"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.h l X X X w j k W %.G.W.Q.J.R 1.T./.].].Q.S.Q.Q.Q.Q.,.[.[.", -"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.f O e d H [.[.[.[.[.E E [.[.[.[.[...:.*.P.Q.Q.Q.Q. .[.[.", -"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.f [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.| T.Q.Q.O.[.[.[.", -"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.} %.J. .[.[.[.", -"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.} [.[.[.[." -}; diff --git a/Plugins/org.mitk.gui.qt.registration/resources/PointBasedRegistration.xpm b/Plugins/org.mitk.gui.qt.registration/resources/PointBasedRegistration.xpm deleted file mode 100644 index be074ebe7f..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/resources/PointBasedRegistration.xpm +++ /dev/null @@ -1,286 +0,0 @@ -/* XPM */ -static char *PointBasedRegistration___[] = { -/* columns rows colors chars-per-pixel */ -"48 48 232 2", -" c #763F4D", -". c #7A3E4C", -"X c #6E424E", -"o c #72414D", -"O c #6E4D55", -"+ c #7C4653", -"@ c #714953", -"# c #6E535A", -"$ c #635A5E", -"% c #6D5A5F", -"& c #585F66", -"* c #645F61", -"= c #7C5562", -"- c #715C61", -"; c #5E6465", -": c #56656A", -"> c #5D646B", -", c #576F75", -"< c #596D72", -"1 c #44717C", -"2 c #636467", -"3 c #646B72", -"4 c #686B74", -"5 c #706F72", -"6 c #647174", -"7 c #6D767C", -"8 c #72797F", -"9 c #7E7A7D", -"0 c #8F374D", -"q c #833D4E", -"w c #8B394D", -"e c #90364D", -"r c #9D314B", -"t c #90394D", -"y c #953C52", -"u c #9A3D54", -"i c #A72E4B", -"p c #AB2D4C", -"a c #BF264B", -"s c #B42A4B", -"d c #BC284D", -"f c #A0304B", -"g c #AC304E", -"h c #B52F50", -"j c #BF2D50", -"k c #A53752", -"l c #BF3457", -"z c #BF3B5D", -"x c #834050", -"c c #8B4356", -"v c #934255", -"b c #8E4F62", -"n c #855461", -"m c #895662", -"M c #8A5B67", -"N c #8C5E6C", -"B c #975162", -"V c #966370", -"C c #91767E", -"Z c #C14D6C", -"A c #C1506D", -"S c #C1627E", -"D c #3B7987", -"F c #367989", -"G c #397C8C", -"H c #2F7D90", -"J c #407383", -"K c #4C7883", -"L c #4D7F8C", -"P c #537884", -"I c #597E87", -"U c #5B7F8D", -"Y c #637A86", -"T c #6F7A8D", -"R c #7F7480", -"E c #747D84", -"W c #7A7C84", -"Q c #6E7D93", -"! c #867780", -"~ c #827D86", -"^ c #C16680", -"/ c #C2768C", -"( c #2C8095", -") c #26869D", -"_ c #2C869B", -"` c #3A8194", -"' c #34869A", -"] c #3A879B", -"[ c #3C8B9D", -"{ c #1F8EA9", -"} c #1890AD", -"| c #0E9BBD", -" . c #1595B5", -".. c #1299B8", -"X. c #218AA3", -"o. c #44808F", -"O. c #52838D", -"+. c #5E828B", -"@. c #4C8494", -"#. c #4E8F9F", -"$. c #5B8390", -"%. c #518E9D", -"&. c #5F8A9A", -"*. c #6F8085", -"=. c #61818E", -"-. c #758185", -";. c #73868C", -":. c #7C858C", -">. c #768A8F", -",. c #798A8D", -"<. c #628795", -"1. c #6A8296", -"2. c #6E8B96", -"3. c #648B99", -"4. c #6F8F9D", -"5. c #7C8693", -"6. c #778B90", -"7. c #7E8890", -"8. c #778F9A", -"9. c #7D8C99", -"0. c #67909A", -"q. c #6D929E", -"w. c #7C939B", -"e. c #7E999E", -"r. c #6C94A2", -"t. c #6E9AA9", -"y. c #7094A2", -"u. c #7A9AA5", -"i. c #7C9FAB", -"p. c #76A7B7", -"a. c #0A9EC2", -"s. c #08A2C7", -"d. c #04A6CD", -"f. c #00AAD3", -"g. c #08ADD4", -"h. c #1CB2D7", -"j. c #22B4D6", -"k. c #38BBD8", -"l. c #44BFDA", -"z. c #4DC1DB", -"x. c #5EC6DC", -"c. c #6CC9DE", -"v. c #76CCDF", -"b. c #848089", -"n. c #8B858F", -"m. c #81898F", -"M. c #8C8C8F", -"N. c #90898E", -"B. c #9D898D", -"V. c #838C94", -"C. c #8F8A94", -"Z. c #928693", -"A. c #928C93", -"S. c #859196", -"D. c #889197", -"F. c #869399", -"G. c #8B949A", -"H. c #8F999F", -"J. c #909195", -"K. c #939699", -"L. c #91999F", -"P. c #899DA0", -"I. c #829FAA", -"U. c #9D97A3", -"Y. c #939DA3", -"T. c #989EA3", -"R. c #A49AA1", -"E. c #80A0AE", -"W. c #97A1A7", -"Q. c #99A1A7", -"!. c #93A4AA", -"~. c #9CA4AA", -"^. c #9FA8AE", -"/. c #8CA9B4", -"(. c #86ABB9", -"). c #88AEBB", -"_. c #96ACB0", -"`. c #98AFB3", -"'. c #91AAB8", -"]. c #9AB0B7", -"[. c #9CB6B8", -"{. c #A0A7AE", -"}. c #ACA0A8", -"|. c #A1A9AE", -" X c #A1A7B0", -".X c #ADA7B1", -"XX c #A4ACB2", -"oX c #AFA9B3", -"OX c #B2A8B0", -"+X c #B9ADB4", -"@X c #A7B0B7", -"#X c #A9B2B7", -"$X c #A5B3BA", -"%X c #AAB3B9", -"&X c #A4BABF", -"*X c #AEB8BF", -"=X c #B6B0B8", -"-X c #B0B8BE", -";X c #C3869B", -":X c #C5899E", -">X c #C790A4", -",X c #C79DAE", -"X^ d a a t x zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX", -"zXzXzXzX0 z 8XjXkXkXgX9Xj a a a g @ zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX", -"zXzXzX. l 8XkXkXdX & .f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.X.w.zX", -"zXzXzXzXzXzXzXzXzXzX$ <.*XeXhXhXhXhXhXhX{.^.7.4 > > 7 7 ( f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.( zXzX", -"zXzXzXzXzXzXzXzXzXzX% 4 I.aXhXhXhXhXhXhXXXD.4 3 7 7 7 7 F f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.` zXzX", -"zXzXzXzXzXzXzXzXzXzXzXzX3.aXhXhXhXaX*XXX XV.W 7 7 E 7 7 , | f.f.f.f.f.f.f.f.f.f.f.f.f.f. .u.zXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXY 6XhXaX%X{. X5X7XY.E 7 7 7 7 7 8 1 f.f.f.f.f.f.f.f.f.f.f.f.f.d.O.zXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXt.XX{.@X7XwXwX7X^.7 7 7 7 7 7 7 `.[ f.f.f.f.f.f.f.f.f.f.f.f.` 4XzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXQ U.oXoXoXoXoXoX}.9 b.b.b.b.E _.0X8 J s.f.f.f.f.f.f.f.f.a.L ].zXzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX6.!.[.;.zXzX1 ) a.f.f.f.f.a._ P zXzXzXzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX6.P.!.;.zXzXzXzXzX_.0.#.%.q.`.lXzXzXzXzXzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXS.S.zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX-.,.zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX6 *.zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX; 7 zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX; 6 zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX: < zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX", -"zXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX" -}; diff --git a/Plugins/org.mitk.gui.qt.registration/resources/QmitkDeformableRegistrationView.qrc b/Plugins/org.mitk.gui.qt.registration/resources/QmitkDeformableRegistrationView.qrc deleted file mode 100644 index 5b24046161..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/resources/QmitkDeformableRegistrationView.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - DeformableRegistration.xpm - - diff --git a/Plugins/org.mitk.gui.qt.registration/resources/QmitkPointBasedRegistrationView.qrc b/Plugins/org.mitk.gui.qt.registration/resources/QmitkPointBasedRegistrationView.qrc deleted file mode 100644 index e45b28d80a..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/resources/QmitkPointBasedRegistrationView.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - PointBasedRegistration.xpm - - diff --git a/Plugins/org.mitk.gui.qt.registration/resources/QmitkRigidRegistrationView.qrc b/Plugins/org.mitk.gui.qt.registration/resources/QmitkRigidRegistrationView.qrc deleted file mode 100644 index d9676153d7..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/resources/QmitkRigidRegistrationView.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - RigidRegistration.xpm - - diff --git a/Plugins/org.mitk.gui.qt.registration/resources/RigidRegistration.xpm b/Plugins/org.mitk.gui.qt.registration/resources/RigidRegistration.xpm deleted file mode 100644 index 51a5f9c4bb..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/resources/RigidRegistration.xpm +++ /dev/null @@ -1,231 +0,0 @@ -/* XPM */ -static char *RigidRegistration___[] = { -/* columns rows colors chars-per-pixel */ -"48 48 177 2", -" c #6F5F67", -". c #735C62", -"X c #5B6B74", -"o c #577076", -"O c #587177", -"+ c #5C747B", -"@ c #5D797F", -"# c #796167", -"$ c #71636B", -"% c #7F656B", -"& c #696872", -"* c #63747C", -"= c #9B4E61", -"- c #8A5662", -"; c #A84D63", -": c #A55367", -"> c #AA5167", -", c #A55569", -"< c #AB5368", -"1 c #A45A6C", -"2 c #AA5A6D", -"3 c #AC5E71", -"4 c #81656C", -"5 c #8F6F77", -"6 c #906D76", -"7 c #8F7078", -"8 c #94767D", -"9 c #9B727C", -"0 c #AE6375", -"q c #B3687A", -"w c #547B85", -"e c #5E7B82", -"r c #5E7D8C", -"t c #657981", -"y c #6C7F87", -"u c #6C7F88", -"i c #7B7486", -"p c #707388", -"a c #887A83", -"s c #9E7F87", -"d c #3E8B9E", -"f c #3B92A7", -"g c #3696AD", -"h c #3F98AE", -"j c #5E8088", -"k c #548797", -"l c #558698", -"z c #598B9C", -"x c #60858E", -"c c #6E848B", -"v c #73868E", -"b c #7A828D", -"n c #6C8391", -"m c #6A8F97", -"M c #7D8792", -"N c #758C94", -"B c #7B8D95", -"V c #748F9B", -"C c #7A8E9A", -"Z c #6D919A", -"A c #7A9097", -"S c #72939B", -"D c #7C949B", -"F c #7E989E", -"G c #548FA3", -"H c #4399AE", -"J c #4C9AAD", -"K c #5293A5", -"L c #5C95A5", -"P c #5597A9", -"I c #5499AA", -"U c #5B9BAB", -"Y c #459EB3", -"T c #5A9EB0", -"R c #6597A2", -"E c #6994A5", -"W c #6D9AA5", -"Q c #659CAB", -"! c #6C9CAB", -"~ c #7296A5", -"^ c #7499A3", -"/ c #7A9CA5", -"( c #779BA9", -") c #45A0B7", -"_ c #4BA1B6", -"` c #47A2B8", -"' c #4AA3B9", -"] c #4FA8BE", -"[ c #56A1B4", -"{ c #5CA1B3", -"} c #52A6BA", -"| c #5CA6B8", -" . c #54A8BC", -".. c #5CA9BC", -"X. c #68A0AF", -"o. c #7DA1A9", -"O. c #63A1B3", -"+. c #6EA7B7", -"@. c #62A7B9", -"#. c #63ABBD", -"$. c #6BADBE", -"%. c #74A2B0", -"&. c #78A7B3", -"*. c #70AEBE", -"=. c #5AAEC2", -"-. c #67B5C8", -";. c #74B1C0", -":. c #7EB5C2", -">. c #7FBCCB", -",. c #9F888D", -"<. c #828C96", -"1. c #928A92", -"2. c #9C8990", -"3. c #82959D", -"4. c #8A959F", -"5. c #81989F", -"6. c #A2848B", -"7. c #A2888E", -"8. c #AE8E96", -"9. c #A99297", -"0. c #AD9399", -"q. c #B2999F", -"w. c #8497A0", -"e. c #8E96A1", -"r. c #829CA2", -"t. c #8A9DA5", -"y. c #8C9FA8", -"u. c #9097A2", -"i. c #9B9EA8", -"p. c #B59EA4", -"a. c #8AA0A7", -"s. c #83A4AC", -"d. c #8DA2AA", -"f. c #91A4AC", -"g. c #98A0AA", -"h. c #91A8AF", -"j. c #80A7B6", -"k. c #87A9B1", -"l. c #8CAAB2", -"z. c #94ACB3", -"x. c #9AACB4", -"c. c #87B2BD", -"v. c #95B1B7", -"b. c #98B1B7", -"n. c #94B2B9", -"m. c #98B2B8", -"M. c #9FB8BF", -"N. c #A0B5BC", -"B. c #A1B9BF", -"V. c #BCB1B8", -"C. c #CAB3B9", -"Z. c #8FBAC5", -"A. c #93BCC7", -"S. c #9EBAC1", -"D. c #A3BDC3", -"F. c #A8BEC5", -"G. c #9DC0C9", -"H. c #83C2D1", -"J. c #A7C0C6", -"K. c #A8C1C7", -"L. c #A4C3CA", -"P. c #AEC7CD", -"I. c #A5CFDB", -"U. c #B6CDD4", -"Y. c #B9D1D7", -"T. c #BAD5DB", -"R. c #BFD9DF", -"E. c #B0D8E2", -"W. c #BEDFE7", -"Q. c #C2C1C9", -"!. c #DBC4CA", -"~. c #DDC8CE", -"^. c #E0C9CF", -"/. c #C3DDE3", -"(. c #C7E0E7", -"). c #CEE7ED", -"_. c None", -/* pixels */ -"3 3 3 3 3 3 3 3 3 ; : = = = = = = = = < 3 2 2 2 2 2 2 2 ; , , , , , , , , : _._._._._._._._._._.", -"0 C.C.C.C.C.C.C.C.s . . . . . . . . 4 6.p.p.p.p.p.p.p.p.8 7.,.7.,.,.,.,.,.1 _._._._._._._._._._.", -"0 C.C.C.C.C.C.C.C.s # . . . . . . . 4 6.p.p.p.p.p.p.p.p.8 ,.,.,.,.,.,.,.,.1 _._._._._._._._._._.", -"0 C.C.C.C.C.C.C.C.s # . . . . . . . % 6.p.p.p.p.p.p.p.p.8 ,.,.,.,.,.,.,.,.1 _._._._._._._._._._.", -"0 C.C.C.C.C.C.C.C.s . . . . . . . . % s p.p.p.p.p.p.p.p.8 ,.,.,.,.,.,.,.,.1 _._._._._._._._._._.", -"0 C.C.C.C.C.C.C.C.,.# . . . . . . . % 6.p.p.p.p.p.p.p.p.8 ,.,.,.,.,.,.,.D 1 _._._._._._._._._._.", -"0 C.C.C.C.C.C.C.C.s # . . . . . . . % s p.p.p.p.p.p.p.q.8 ,.,.,.7.1.L U I i _._._._._._._._._._.", -"0 C.C.C.C.C.C.C.C.s # . . . . . . . % ,.p.p.p.p.p.p.p.p.8 ,.,.S P U F r.r.K _._._._._._._._._._.", -"0 C.C.C.C.C.C.C.C.s . . . . . . . . % 6.p.p.p.p.p.p.p.p.a L P W o.5.5.r.r.U _._._._._._._._._._.", -"< s s s s s s s s 9 6 8 5 5 5 7 5 5 5 6 7 5 5 5 7 7 n I K ^ r.r.F a.a.F a.F H _._._._._._._._._.", -"q !.!.!.!.!.!.!.!.6.9.p.q.p.p.p.q.p.6.4 # . . $ k I &.m.A 3.r.r.a.F r.r.F r.J _._._._._._._._._.", -"q ^.^.^.^.^.^.^.^.6.9.p.p.p.p.p.p.p.7.4 . * K T v.b.b.b.h.t.r.r.r.r.r.r./ r.o.f _._._._._._._._.", -"q ^.^.^.^.^.^.^.^.6.0.p.p.p.p.p.p.p.,.k K %.m.m.m.m.b.m.b.a.F r.r.r.r.r.r.r.r.H _._._._._._._._.", -"q ^.^.^.^.^.^.^.^.6.q.p.p.p.p.p.g.O.{ S A m.m.m.m.m.m.m.b.d.w.r.r.r.r.r.r.r.r.R _._._._._._._._.", -"q ^.^.^.^.^.^.^.^.7.8.p.p.p.%.{ X.r.r.r.v z.m.m.m.b.m.m.b.b.t.5.r.r.r.5./ B Z ^ ` _._._._._._._.", -"q ^.^.^.^.^.^.^.^.7.8.i.O.O.( r.r.r.r.r.N F b.m.m.m.m.m.b.b.d.r.r.r.5.5.t.4.v.P.;._._._._._._._.", -"q ^.^.^.^.^.~.~.~.E T X.a.5.a.F r.r.r.r.5.v b.b.m.b.m.m.m.b.v.5.3.5.d.h.D.P.P.P.P._ _._._._._._.", -"q ^.^.^.^.^.Q.*.$.A.P.r.F / F a.r.r.r.r.r.N a.b.m.m.m.m.m.z.d.f.f.x.P.P.P.P.P.P.P.#._._._._._._.", -"< 8.0.0.^ [ *.P.P.P.P.a.5.a.r.r./ r.r.r.r.5.B b.m.m.b.a.3.3.5.5.5.P.P.P.P.P.P.P.P.L.' _._._._._.", -"0 q.( @.Z.P.P.P.P.P.P.J.D F r.r.r.r.r.r.r.r.w.h.z.r.w.r.5.r.r.r.5.h.P.P.P.P.P.P.P.P..._._._._._.", -"0 C.x.:.P.P.P.P.P.P.P.P.t.5.r.r.r.r.r.r.r.r.t.d.d.d.r.r.r.r.r.r.a.5.P.P.P.P.P.P.P.P.Z._._._._._.", -"0 C.C.@.P.P.P.P.P.P.P.P.m.4.r.r.r.r.r.5.a.d.d.d.r.r.r.r.r.r.r.r.5.5.m.P.P.P.P.P.P.P.P.} _._._._.", -"0 C.C.j.G.P.P.P.P.P.P.P.P.5.5.r.r.5.3.3.d.h.b.a.a.r.r.r.r.r.r.r.F 5.a.P.P.P.P.P.P.P.l.{ _._._._.", -"0 C.C.C.#.P.P.P.P.P.P.P.P.h.5.5.3.3.r.v.b.b.m.h.d.r.r.r.r.r.r.r.a.5.3.L.P.P.P.M.s.^ Z S H _._._.", -"0 C.C.C.+.L.P.P.P.P.P.P.m.t.<.3.d.m.n.m.m.m.b.m.d.r.r.r.r.r.r.r.r.r.5.d.P.h.o.Z S F r.r.I _._._.", -"0 C.C.C.C.$.P.P.P.P.f.3.t.m.h.5.m.m.m.b.m.m.m.m.d.d.r.r.r.r.r.r.r.r.r.3.3.b D 5.r.r.r.r./ Y _._.", -"0 C.C.C.C.@.P.D.h.3.d.P.).)./.<.v.m.m.m.m.b.m.m.b.d.w.r.r.r.r.r.5.4.5.3.A r.r.r.r.r.r.r.r.J _._.", -"2 0.0.0.0.e.Q t.m.R.).).).).).f./ m.m.m.m.m.m.m.b.r.t.5.r.r.5.D 3.f.P.m.M r.r.r./ r.r.r.r.^ H _.", -"= 4 4 4 4 4 T ).).).).).).).).U.3.b.m.m.m.m.m.b.b.z.v 5.D 5.d.M.P.P.P.P.5.D r.r.r.r.r.r.r.r.H _.", -"= . . . . . r I.).).).).).).).).h.d.m.m.b.m.m.m.z.N X * d.P.P.P.P.P.P.P.b.M r.r.r.r.r.r.r.r.R _.", -"= . . . . . . | ).).).).).).).).K.d.m.m.m.m.r.c + t N t P.P.P.P.P.P.P.P.P.<.F r.r.r.r.r.r.r.r.H ", -"= . . . . . . z (.).).).).).).).).f.h.z.A * * c 5.r.r.* f.P.P.P.P.P.P.P.P.e.S r.r.r.r.r.F S Z Y ", -"= . . . . . $.).).).).).).).).m.3.y * B r.r.r.r.r.N A P.P.P.P.P.P.P.P.K.Z a./ 5.S m S k.B...", -"= . . . . . . P ).).).).).(.F.x.f.3.D r.r.r.r.r.r.F a.v M.P.P.P.P.P.P.P.P.s.N S Z o.v.P.P.P...", -"= . . . . . . . & >.).).Y.N.h.h.m.P.d.N r.r.r.r.F a.o.5.S f.P.P.P.P.P.P.P.x./ _.s.M.P.P.P.P.P...", -"= . . . . . . . . T F.x.y.h.F.P.P.P.N.c r.r.r.r.o.F a.5.5.4.J.P.P.P.K.h.d.4.J.k.b.P.P.P.P.P.P...", -"= - - - - - - - - p ~ x.P.P.P.P.P.P.P.A N r.r.r.5.r.r.r.r.A d.P.m.g.4.z.U.).).P.o.P.P.P.P.P.P.#.", -"_._._._._._._._._._.[ P.P.P.P.P.P.P.P.m.N r.r.r.r.r.r.F r.F S D a.N.(.).).).).).o.B.P.P.P.P.P...", -"_._._._._._._._._._.Y G.P.P.P.P.P.P.P.P.S F r.r.r.r.r.D S Z ^ l.).).).).).).).).S.s.P.P.P.P.P...", -"_._._._._._._._._._._.#.P.P.P.P.P.P.P.P.l.Z r.r.5.S Z o.l.K.m.o.).).).).).).).).(./ P.P.P.P.P...", -"_._._._._._._._._._._.` K.P.P.P.P.P.P.P.P.Z A Z Z s.M.P.P.P.P./ P.).).).).).).).).n.h.P.P.P.L.' ", -"_._._._._._._._._._._._.;.P.P.P.P.P.P.P.l.W ^ k.K.P.P.P.P.P.P.l.l.).).).).).).).).T.^ P.Z...` _.", -"_._._._._._._._._._._._.` P.P.P.P.S.s.m j @ S P.P.P.P.P.P.P.P.P.^ T.).).).).).).).)..._ _._._._.", -"_._._._._._._._._._._._._.:.P.n.o.x e + o o j v.P.P.P.P.P.P.P.P.k.n.).).).).).E.-.] _._._._._._.", -"_._._._._._._._._._._._._.` Z j @ o o o o o + / P.P.P.P.P.P.P.P.J.^ /.).).H.=._ _._._._._._._._.", -"_._._._._._._._._._._._._.g w o o o o o o o o x M.P.P.P.P.P.P.P.P.s.c.-.] _._._._._._._._._._._.", -"_._._._._._._._._._._._._._.d o o o o o o o O e o.P.P.P.P.P.P.P.;.[ _._._._._._._._._._._._._._.", -"_._._._._._._._._._._._._._.f d d d d d d d d d h ............' _._._._._._._._._._._._._._._._." -}; diff --git a/Plugins/org.mitk.gui.qt.registration/resources/btnReinit.xpm b/Plugins/org.mitk.gui.qt.registration/resources/btnReinit.xpm deleted file mode 100644 index bc42d9dd74..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/resources/btnReinit.xpm +++ /dev/null @@ -1,16 +0,0 @@ -/* XPM */ -static const char * btnReinit_xpm[] = { -"10 9 4 1", -" c None", -". c #9A0000", -"+ c #009A00", -"@ c #000000", -" . +", -" . +", -" . +", -" . @ +", -" . @ +", -" . @@@@ +", -" . @ +", -". @ +", -". +"}; diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkDeformableRegistrationView.cpp b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkDeformableRegistrationView.cpp deleted file mode 100644 index bfe4545cfc..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkDeformableRegistrationView.cpp +++ /dev/null @@ -1,630 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkDeformableRegistrationView.h" -#include "ui_QmitkDeformableRegistrationViewControls.h" - -#include "qinputdialog.h" -#include "qmessagebox.h" -#include "qcursor.h" -#include "qapplication.h" -#include "qradiobutton.h" -#include "qslider.h" - -#include - -#include -#include -#include "mitkNodePredicateDataType.h" -#include "mitkNodePredicateProperty.h" -#include "mitkNodePredicateAnd.h" -#include "mitkNodePredicateNot.h" -#include "mitkVectorImageMapper2D.h" -#include - -#include "itkWarpImageFilter.h" - -#include "mitkDataNodeObject.h" - -#include "berryIWorkbenchWindow.h" -#include "berryISelectionService.h" - - - -const std::string QmitkDeformableRegistrationView::VIEW_ID = "org.mitk.views.deformableregistration"; - -using namespace berry; - -struct SelListenerDeformableRegistration : ISelectionListener -{ - berryObjectMacro(SelListenerDeformableRegistration); - - SelListenerDeformableRegistration(QmitkDeformableRegistrationView* view) - { - m_View = view; - } - - void DoSelectionChanged(ISelection::ConstPointer selection) - { -// if(!m_View->IsVisible()) -// return; - // save current selection in member variable - m_View->m_CurrentSelection = selection.Cast(); - - // do something with the selected items - if(m_View->m_CurrentSelection) - { - if (m_View->m_CurrentSelection->Size() != 2) - { - if (m_View->m_FixedNode.IsNull() || m_View->m_MovingNode.IsNull()) - { - m_View->m_Controls.m_StatusLabel->show(); - m_View->m_Controls.TextLabelFixed->hide(); - m_View->m_Controls.m_SwitchImages->hide(); - m_View->m_Controls.m_FixedLabel->hide(); - m_View->m_Controls.TextLabelMoving->hide(); - m_View->m_Controls.m_MovingLabel->hide(); - m_View->m_Controls.m_OpacityLabel->setEnabled(false); - m_View->m_Controls.m_OpacitySlider->setEnabled(false); - m_View->m_Controls.label->setEnabled(false); - m_View->m_Controls.label_2->setEnabled(false); - m_View->m_Controls.m_ShowRedGreenValues->setEnabled(false); - } - } - else - { - m_View->m_Controls.m_StatusLabel->hide(); - bool foundFixedImage = false; - mitk::DataNode::Pointer fixedNode; - // iterate selection - for (IStructuredSelection::iterator i = m_View->m_CurrentSelection->Begin(); - i != m_View->m_CurrentSelection->End(); ++i) - { - // extract datatree node - if (mitk::DataNodeObject::Pointer nodeObj = i->Cast()) - { - mitk::DataNode::Pointer node = nodeObj->GetDataNode(); - // only look at interesting types - if(QString("Image").compare(node->GetData()->GetNameOfClass())==0) - { - if (dynamic_cast(node->GetData())->GetDimension() == 4) - { - m_View->m_Controls.m_StatusLabel->show(); - QMessageBox::information( NULL, "DeformableRegistration", "Only 2D or 3D images can be processed.", QMessageBox::Ok ); - return; - } - if (foundFixedImage == false) - { - fixedNode = node; - foundFixedImage = true; - } - else - { - m_View->SetImagesVisible(selection); - m_View->FixedSelected(fixedNode); - m_View->MovingSelected(node); - m_View->m_Controls.m_StatusLabel->hide(); - m_View->m_Controls.TextLabelFixed->show(); - m_View->m_Controls.m_SwitchImages->show(); - m_View->m_Controls.m_FixedLabel->show(); - m_View->m_Controls.TextLabelMoving->show(); - m_View->m_Controls.m_MovingLabel->show(); - m_View->m_Controls.m_OpacityLabel->setEnabled(true); - m_View->m_Controls.m_OpacitySlider->setEnabled(true); - m_View->m_Controls.label->setEnabled(true); - m_View->m_Controls.label_2->setEnabled(true); - m_View->m_Controls.m_ShowRedGreenValues->setEnabled(true); - } - } - else - { - m_View->m_Controls.m_StatusLabel->show(); - return; - } - } - } - } - } - else if (m_View->m_FixedNode.IsNull() || m_View->m_MovingNode.IsNull()) - { - m_View->m_Controls.m_StatusLabel->show(); - } - } - - void SelectionChanged(const IWorkbenchPart::Pointer& part, const ISelection::ConstPointer& selection) override - { - // check, if selection comes from datamanager - if (part) - { - QString partname = part->GetPartName(); - if(partname.compare("Data Manager")==0) - { - // apply selection - DoSelectionChanged(selection); - } - } - } - - QmitkDeformableRegistrationView* m_View; -}; - -QmitkDeformableRegistrationView::QmitkDeformableRegistrationView(QObject * /*parent*/, const char * /*name*/) -: QmitkAbstractView() , m_MovingNode(NULL), m_FixedNode(NULL), m_ShowRedGreen(false), - m_Opacity(0.5), m_OriginalOpacity(1.0), m_Deactivated(false) -{ - this->GetDataStorage()->RemoveNodeEvent.AddListener(mitk::MessageDelegate1 ( this, &QmitkDeformableRegistrationView::DataNodeHasBeenRemoved )); -} - -QmitkDeformableRegistrationView::~QmitkDeformableRegistrationView() -{ - if (m_SelListener) - { - berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService(); - if(s) s->RemovePostSelectionListener(m_SelListener.data()); - } -} - -void QmitkDeformableRegistrationView::CreateQtPartControl(QWidget* parent) -{ - m_Parent = parent; - m_Controls.setupUi(parent); - m_Parent->setEnabled(false); - this->CreateConnections(); - m_Controls.TextLabelFixed->hide(); - m_Controls.m_SwitchImages->hide(); - m_Controls.m_FixedLabel->hide(); - m_Controls.TextLabelMoving->hide(); - m_Controls.m_MovingLabel->hide(); - m_Controls.m_OpacityLabel->setEnabled(false); - m_Controls.m_OpacitySlider->setEnabled(false); - m_Controls.label->setEnabled(false); - m_Controls.label_2->setEnabled(false); - m_Controls.m_ShowRedGreenValues->setEnabled(false); - m_Controls.m_DeformableTransform->hide(); - if (m_Controls.m_DeformableTransform->currentIndex() == 0) - { - m_Controls.m_QmitkDemonsRegistrationViewControls->show(); - m_Controls.m_QmitkBSplineRegistrationViewControls->hide(); - } - else - { - m_Controls.m_QmitkDemonsRegistrationViewControls->hide(); - m_Controls.m_QmitkBSplineRegistrationViewControls->show(); - } - this->CheckCalculateEnabled(); - - mitk::TNodePredicateDataType::Pointer isMitkImage = mitk::TNodePredicateDataType::New(); - m_Controls.comboBox->SetDataStorage(this->GetDataStorage()); - m_Controls.comboBox->SetPredicate(isMitkImage); - m_Controls.comboBox_2->SetDataStorage(this->GetDataStorage()); - m_Controls.comboBox_2->SetPredicate(isMitkImage); -} - -void QmitkDeformableRegistrationView::SetFocus() -{ - m_Controls.m_SwitchImages->setFocus(); -} - -void QmitkDeformableRegistrationView::DataNodeHasBeenRemoved(const mitk::DataNode* node) -{ - if(node == m_FixedNode || node == m_MovingNode) - { - m_Controls.m_StatusLabel->show(); - m_Controls.TextLabelFixed->hide(); - m_Controls.m_SwitchImages->hide(); - m_Controls.m_FixedLabel->hide(); - m_Controls.TextLabelMoving->hide(); - m_Controls.m_MovingLabel->hide(); - m_Controls.m_OpacityLabel->setEnabled(false); - m_Controls.m_OpacitySlider->setEnabled(false); - m_Controls.label->setEnabled(false); - m_Controls.label_2->setEnabled(false); - m_Controls.m_ShowRedGreenValues->setEnabled(false); - m_Controls.m_DeformableTransform->hide(); - m_Controls.m_CalculateTransformation->setEnabled(false); - } - -} - -void QmitkDeformableRegistrationView::ApplyDeformationField() -{ - if ( m_Controls.comboBox->GetSelectedNode().IsNull() || m_Controls.comboBox_2->GetSelectedNode().IsNull() ) - return; - - mitk::Image* mitkDeformationField = dynamic_cast(m_Controls.comboBox->GetSelectedNode()->GetData()); - mitk::Image* mimage = dynamic_cast(m_Controls.comboBox_2->GetSelectedNode()->GetData()); - - typedef itk::Image FloatImageType; - - FloatImageType::Pointer itkMovingImage = FloatImageType::New(); - DeformationFieldType::Pointer itkDeformationField = DeformationFieldType::New(); - mitk::CastToItkImage(mimage, itkMovingImage); - mitk::CastToItkImage(mitkDeformationField, itkDeformationField); - - typedef itk::WarpImageFilter< FloatImageType, FloatImageType, DeformationFieldType > WarperType; - typedef itk::LinearInterpolateImageFunction< FloatImageType, double > InterpolatorType; - - WarperType::Pointer warper = WarperType::New(); - InterpolatorType::Pointer interpolator = InterpolatorType::New(); - - warper->SetInput( itkMovingImage ); - warper->SetInterpolator( interpolator ); - warper->SetOutputSpacing( itkDeformationField->GetSpacing() ); - warper->SetOutputOrigin( itkDeformationField->GetOrigin() ); - warper->SetOutputDirection (itkDeformationField->GetDirection() ); - warper->SetDisplacementField( itkDeformationField ); - warper->Update(); - - FloatImageType::Pointer outputImage = warper->GetOutput(); - mitk::Image::Pointer result = mitk::Image::New(); - - mitk::CastToMitkImage(outputImage, result); - - // Create new DataNode - mitk::DataNode::Pointer newNode = mitk::DataNode::New(); - newNode->SetData( result ); - newNode->SetProperty( "name", mitk::StringProperty::New("warped image") ); - - // add the new datatree node to the datatree - this->GetDataStorage()->Add(newNode); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -void QmitkDeformableRegistrationView::RenderWindowPartActivated(mitk::IRenderWindowPart* renderWindowPart) -{ - m_Parent->setEnabled(true); - if (auto linkedRenderWindowPart = dynamic_cast(renderWindowPart)) - { - linkedRenderWindowPart->EnableSlicingPlanes(true); - } -} - -void QmitkDeformableRegistrationView::RenderWindowPartDeactivated(mitk::IRenderWindowPart* /*renderWindowPart*/) -{ - m_Parent->setEnabled(false); -} - -void QmitkDeformableRegistrationView::CreateConnections() -{ - connect(m_Controls.m_ShowRedGreenValues, SIGNAL(toggled(bool)), this, SLOT(ShowRedGreen(bool))); - connect(m_Controls.m_DeformableTransform, SIGNAL(currentChanged(int)), this, SLOT(TabChanged(int))); - connect(m_Controls.m_OpacitySlider, SIGNAL(sliderMoved(int)), this, SLOT(OpacityUpdate(int))); - connect(m_Controls.m_CalculateTransformation, SIGNAL(clicked()), this, SLOT(Calculate())); - connect((QObject*)(m_Controls.m_SwitchImages),SIGNAL(clicked()),this,SLOT(SwitchImages())); - connect(this,SIGNAL(calculateBSplineRegistration()),m_Controls.m_QmitkBSplineRegistrationViewControls,SLOT(CalculateTransformation())); - connect( m_Controls.m_WarpImageButton, SIGNAL(clicked()), this, SLOT(ApplyDeformationField()) ); -} - -void QmitkDeformableRegistrationView::Activated() -{ - m_Deactivated = false; - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - if (m_SelListener.isNull()) - { - m_SelListener.reset(new SelListenerDeformableRegistration(this)); - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener(/*"org.mitk.views.datamanager",*/ m_SelListener.data()); - berry::ISelection::ConstPointer sel( - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager")); - m_CurrentSelection = sel.Cast(); - static_cast(m_SelListener.data())->DoSelectionChanged(sel); - } - this->OpacityUpdate(m_Controls.m_OpacitySlider->value()); - this->ShowRedGreen(m_Controls.m_ShowRedGreenValues->isChecked()); -} - -void QmitkDeformableRegistrationView::Visible() -{ - /* - m_Deactivated = false; - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - if (m_SelListener.IsNull()) - { - m_SelListener = berry::ISelectionListener::Pointer(new SelListenerDeformableRegistration(this)); - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener("org.mitk.views.datamanager", m_SelListener); - berry::ISelection::ConstPointer sel( - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager")); - m_CurrentSelection = sel.Cast(); - m_SelListener.Cast()->DoSelectionChanged(sel); - } - this->OpacityUpdate(m_Controls.m_OpacitySlider->value()); - this->ShowRedGreen(m_Controls.m_ShowRedGreenValues->isChecked());*/ -} - -void QmitkDeformableRegistrationView::Deactivated() -{ - m_Deactivated = true; - this->SetImageColor(false); - if (m_FixedNode.IsNotNull()) - m_FixedNode->SetOpacity(1.0); - if (m_MovingNode.IsNotNull()) - { - m_MovingNode->SetOpacity(m_OriginalOpacity); - } - m_FixedNode = NULL; - m_MovingNode = NULL; - berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService(); - if(s) - s->RemovePostSelectionListener(m_SelListener.data()); - m_SelListener.reset(); -} - -void QmitkDeformableRegistrationView::Hidden() -{ - /* - m_Deactivated = true; - this->SetImageColor(false); - if (m_MovingNode.IsNotNull()) - { - m_MovingNode->SetOpacity(m_OriginalOpacity); - } - m_FixedNode = NULL; - m_MovingNode = NULL; - berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService(); - if(s) - s->RemovePostSelectionListener(m_SelListener); - m_SelListener = NULL;*/ - //mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -void QmitkDeformableRegistrationView::FixedSelected(mitk::DataNode::Pointer fixedImage) -{ - if (fixedImage.IsNotNull()) - { - if (m_FixedNode != fixedImage) - { - // remove changes on previous selected node - if (m_FixedNode.IsNotNull()) - { - this->SetImageColor(false); - m_FixedNode->SetOpacity(1.0); - m_FixedNode->SetVisibility(false); - m_FixedNode->SetProperty("selectedFixedImage", mitk::BoolProperty::New(false)); - } - // get selected node - m_FixedNode = fixedImage; - m_FixedNode->SetOpacity(0.5); - m_Controls.TextLabelFixed->setText(QString::fromStdString(m_FixedNode->GetName())); - m_Controls.m_FixedLabel->show(); - m_Controls.TextLabelFixed->show(); - m_Controls.m_SwitchImages->show(); - mitk::ColorProperty::Pointer colorProperty; - colorProperty = dynamic_cast(m_FixedNode->GetProperty("color")); - if ( colorProperty.IsNotNull() ) - { - m_FixedColor = colorProperty->GetColor(); - } - this->SetImageColor(m_ShowRedGreen); - m_FixedNode->SetVisibility(true); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - } - } - else - { - m_FixedNode = fixedImage; - m_Controls.m_FixedLabel->hide(); - m_Controls.TextLabelFixed->hide(); - m_Controls.m_SwitchImages->hide(); - } - this->CheckCalculateEnabled(); -} - -void QmitkDeformableRegistrationView::MovingSelected(mitk::DataNode::Pointer movingImage) -{ - if (movingImage.IsNotNull()) - { - if (m_MovingNode != movingImage) - { - if (m_MovingNode.IsNotNull()) - { - m_MovingNode->SetOpacity(m_OriginalOpacity); - if (m_FixedNode == m_MovingNode) - m_FixedNode->SetOpacity(0.5); - this->SetImageColor(false); - } - m_MovingNode = movingImage; - m_Controls.TextLabelMoving->setText(QString::fromStdString(m_MovingNode->GetName())); - m_Controls.m_MovingLabel->show(); - m_Controls.TextLabelMoving->show(); - mitk::ColorProperty::Pointer colorProperty; - colorProperty = dynamic_cast(m_MovingNode->GetProperty("color")); - if ( colorProperty.IsNotNull() ) - { - m_MovingColor = colorProperty->GetColor(); - } - this->SetImageColor(m_ShowRedGreen); - m_MovingNode->GetFloatProperty("opacity", m_OriginalOpacity); - this->OpacityUpdate(m_Opacity); - m_MovingNode->SetVisibility(true); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - } - } - else - { - m_MovingNode = NULL; - m_Controls.m_MovingLabel->hide(); - m_Controls.TextLabelMoving->hide(); - } - this->CheckCalculateEnabled(); -} - -bool QmitkDeformableRegistrationView::CheckCalculate() -{ - if(m_MovingNode==m_FixedNode) - return false; - return true; -} - -void QmitkDeformableRegistrationView::ShowRedGreen(bool redGreen) -{ - m_ShowRedGreen = redGreen; - this->SetImageColor(m_ShowRedGreen); -} - -void QmitkDeformableRegistrationView::SetImageColor(bool redGreen) -{ - if (!redGreen && m_FixedNode.IsNotNull()) - { - m_FixedNode->SetColor(m_FixedColor); - } - if (!redGreen && m_MovingNode.IsNotNull()) - { - m_MovingNode->SetColor(m_MovingColor); - } - if (redGreen && m_FixedNode.IsNotNull()) - { - m_FixedNode->SetColor(1.0f, 0.0f, 0.0f); - } - if (redGreen && m_MovingNode.IsNotNull()) - { - m_MovingNode->SetColor(0.0f, 1.0f, 0.0f); - } - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -void QmitkDeformableRegistrationView::OpacityUpdate(float opacity) -{ - m_Opacity = opacity; - if (m_MovingNode.IsNotNull()) - { - m_MovingNode->SetOpacity(m_Opacity); - } - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -void QmitkDeformableRegistrationView::OpacityUpdate(int opacity) -{ - float fValue = ((float)opacity)/100.0f; - this->OpacityUpdate(fValue); -} - -void QmitkDeformableRegistrationView::CheckCalculateEnabled() -{ - if (m_FixedNode.IsNotNull() && m_MovingNode.IsNotNull()) - { - m_Controls.m_CalculateTransformation->setEnabled(true); - } - else - { - m_Controls.m_CalculateTransformation->setEnabled(false); - } -} - -void QmitkDeformableRegistrationView::Calculate() -{ - if (m_Controls.m_DeformableTransform->tabText(m_Controls.m_DeformableTransform->currentIndex()) == "Demons") - { - m_Controls.m_QmitkDemonsRegistrationViewControls->SetFixedNode(m_FixedNode); - m_Controls.m_QmitkDemonsRegistrationViewControls->SetMovingNode(m_MovingNode); - try - { - m_Controls.m_QmitkDemonsRegistrationViewControls->CalculateTransformation(); - } - catch (itk::ExceptionObject& excpt) - { - QMessageBox::information( NULL, "Registration exception", excpt.GetDescription(), QMessageBox::Ok ); - return; - } - mitk::Image::Pointer resultImage = m_Controls.m_QmitkDemonsRegistrationViewControls->GetResultImage(); - mitk::Image::Pointer resultDeformationField = m_Controls.m_QmitkDemonsRegistrationViewControls->GetResultDeformationfield(); - if (resultImage.IsNotNull()) - { - mitk::DataNode::Pointer resultImageNode = mitk::DataNode::New(); - resultImageNode->SetData(resultImage); - mitk::LevelWindowProperty::Pointer levWinProp = mitk::LevelWindowProperty::New(); - mitk::LevelWindow levelWindow; - levelWindow.SetAuto( resultImage ); - levWinProp->SetLevelWindow(levelWindow); - resultImageNode->GetPropertyList()->SetProperty("levelwindow",levWinProp); - resultImageNode->SetStringProperty("name", "DeformableRegistrationResultImage"); - this->GetDataStorage()->Add(resultImageNode, m_MovingNode); - } - if (resultDeformationField.IsNotNull()) - { - mitk::DataNode::Pointer resultDeformationFieldNode = mitk::DataNode::New(); - resultDeformationFieldNode->SetData(resultDeformationField); - mitk::LevelWindowProperty::Pointer levWinProp = mitk::LevelWindowProperty::New(); - mitk::LevelWindow levelWindow; - levelWindow.SetAuto( resultDeformationField ); - levWinProp->SetLevelWindow(levelWindow); - resultDeformationFieldNode->GetPropertyList()->SetProperty("levelwindow",levWinProp); - resultDeformationFieldNode->SetStringProperty("name", "DeformableRegistrationResultDeformationField"); - mitk::VectorImageMapper2D::Pointer mapper = mitk::VectorImageMapper2D::New(); - resultDeformationFieldNode->SetMapper(1, mapper); - resultDeformationFieldNode->SetVisibility(false); - this->GetDataStorage()->Add(resultDeformationFieldNode, m_MovingNode); - } - } - - else if (m_Controls.m_DeformableTransform->tabText(m_Controls.m_DeformableTransform->currentIndex()) == "B-Spline") - { - m_Controls.m_QmitkBSplineRegistrationViewControls->SetFixedNode(m_FixedNode); - m_Controls.m_QmitkBSplineRegistrationViewControls->SetMovingNode(m_MovingNode); - emit calculateBSplineRegistration(); - } -} - -void QmitkDeformableRegistrationView::SetImagesVisible(berry::ISelection::ConstPointer /*selection*/) -{ - if (this->m_CurrentSelection->Size() == 0) - { - // show all images - mitk::DataStorage::SetOfObjects::ConstPointer setOfObjects = this->GetDataStorage()->GetAll(); - for (mitk::DataStorage::SetOfObjects::ConstIterator nodeIt = setOfObjects->Begin() - ; nodeIt != setOfObjects->End(); ++nodeIt) // for each node - { - if ( (nodeIt->Value().IsNotNull()) && (nodeIt->Value()->GetProperty("visible")) && dynamic_cast(nodeIt->Value()->GetData())==NULL) - { - nodeIt->Value()->SetVisibility(true); - } - } - } - else - { - // hide all images - mitk::DataStorage::SetOfObjects::ConstPointer setOfObjects = this->GetDataStorage()->GetAll(); - for (mitk::DataStorage::SetOfObjects::ConstIterator nodeIt = setOfObjects->Begin() - ; nodeIt != setOfObjects->End(); ++nodeIt) // for each node - { - if ( (nodeIt->Value().IsNotNull()) && (nodeIt->Value()->GetProperty("visible")) && dynamic_cast(nodeIt->Value()->GetData())==NULL) - { - nodeIt->Value()->SetVisibility(false); - } - } - } -} - -void QmitkDeformableRegistrationView::TabChanged(int index) -{ - if (index == 0) - { - m_Controls.m_QmitkDemonsRegistrationViewControls->show(); - m_Controls.m_QmitkBSplineRegistrationViewControls->hide(); - } - else - { - m_Controls.m_QmitkDemonsRegistrationViewControls->hide(); - m_Controls.m_QmitkBSplineRegistrationViewControls->show(); - } -} - -void QmitkDeformableRegistrationView::SwitchImages() -{ - mitk::DataNode::Pointer newMoving = m_FixedNode; - mitk::DataNode::Pointer newFixed = m_MovingNode; - this->FixedSelected(newFixed); - this->MovingSelected(newMoving); -} diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkDeformableRegistrationView.h b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkDeformableRegistrationView.h deleted file mode 100644 index 2234d21630..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkDeformableRegistrationView.h +++ /dev/null @@ -1,204 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - - -#ifndef QMITKDEFORMABLEREGISTRATION_H -#define QMITKDEFORMABLEREGISTRATION_H - -#include -#include -#include - -#include "ui_QmitkDeformableRegistrationViewControls.h" - -#include - -#include "berryISelectionListener.h" -#include "berryIStructuredSelection.h" -#include -#include "itkImageFileReader.h" - -/*! -\brief The DeformableRegistration view is used to perform deformable registration. - -This view allows you to register two 2D as well as two 3D images in a non rigid manner. -Register means to align two images, so that they become as similar as possible. -Therefore you can select from different deformable registration methods. -Registration results will directly be applied to the Moving Image. The result is shown in the multi-widget. - -For more informations see: \ref QmitkDeformableRegistrationUserManual - -\ingroup DeformableRegistration -*/ - -class REGISTRATION_EXPORT QmitkDeformableRegistrationView : public QmitkAbstractView, public mitk::ILifecycleAwarePart, public mitk::IRenderWindowPartListener -{ - - friend struct SelListenerDeformableRegistration; - - Q_OBJECT - - public: - - static const std::string VIEW_ID; - - typedef itk::Vector< float, 3 > VectorType; - typedef itk::Image< VectorType, 3 > DeformationFieldType; - typedef itk::ImageFileReader< DeformationFieldType > ImageReaderType; - - /*! - \brief default constructor - */ - QmitkDeformableRegistrationView(QObject *parent=0, const char *name=0); - - /*! - \brief default destructor - */ - virtual ~QmitkDeformableRegistrationView(); - - /*! - \brief method for creating the applications main widget - */ - virtual void CreateQtPartControl(QWidget *parent) override; - - /// - /// Sets the focus to an internal widget. - /// - virtual void SetFocus() override; - - virtual void RenderWindowPartActivated(mitk::IRenderWindowPart* renderWindowPart) override; - - virtual void RenderWindowPartDeactivated(mitk::IRenderWindowPart* renderWindowPart) override; - - /*! - \brief method for creating the connections of main and control widget - */ - virtual void CreateConnections(); - - virtual void Activated() override; - - virtual void Deactivated() override; - - virtual void Visible() override; - - virtual void Hidden() override; - - void DataNodeHasBeenRemoved(const mitk::DataNode* node); - - - - signals: - - /*! - \brief Signal that informs about that the fixed image should be reinitialized in the multi-widget. - */ - void reinitFixed(const mitk::Geometry3D *); - - /*! - \brief Signal that informs about that the moving image should be reinitialized in the multi-widget. - */ - void reinitMoving(const mitk::Geometry3D *); - - /*! - \brief Signal that informs about that the BSpline registration should be performed. - */ - void calculateBSplineRegistration(); - - protected slots: - - /*! - * sets the fixed Image according to TreeNodeSelector widget - */ - void FixedSelected(mitk::DataNode::Pointer fixedImage); - - /*! - * sets the moving Image according to TreeNodeSelector widget - */ - void MovingSelected(mitk::DataNode::Pointer movingImage); - - /*! - * checks if registration is possible - */ - bool CheckCalculate(); - - /*! - * stores whether the image will be shown in grayvalues or in red for fixed image and green for moving image - * @param show if true, then images will be shown in red and green - */ - void ShowRedGreen(bool show); - - /*! - * set the selected opacity for moving image - * @param opacity the selected opacity - */ - void OpacityUpdate(float opacity); - - /*! - \brief Sets the selected opacity for moving image - - @param opacity the selected opacity - */ - void OpacityUpdate(int opacity); - - /*! - * sets the images to grayvalues or fixed image to red and moving image to green - * @param redGreen if true, then images will be shown in red and green - */ - void SetImageColor(bool redGreen); - - /*! - \brief Checks whether the registration can be performed. - */ - void CheckCalculateEnabled(); - - /*! - \brief Performs the registration. - */ - void Calculate(); - - /*! - * Prints the values of the deformationfield - */ - void ApplyDeformationField(); - - void SetImagesVisible(berry::ISelection::ConstPointer selection); - - void TabChanged(int index); - - void SwitchImages(); - - protected: - - QWidget* m_Parent; - - QScopedPointer m_SelListener; - berry::IStructuredSelection::ConstPointer m_CurrentSelection; - - /*! - * control widget to make all changes for Deformable registration - */ - Ui::QmitkDeformableRegistrationViewControls m_Controls; - mitk::DataNode::Pointer m_MovingNode; - mitk::DataNode::Pointer m_FixedNode; - bool m_ShowRedGreen; - float m_Opacity; - float m_OriginalOpacity; - mitk::Color m_FixedColor; - mitk::Color m_MovingColor; - bool m_Deactivated; -}; - -#endif //QMITKDEFORMABLEREGISTRATION_H diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkDeformableRegistrationViewControls.ui b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkDeformableRegistrationViewControls.ui deleted file mode 100644 index b6bbe23cb8..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkDeformableRegistrationViewControls.ui +++ /dev/null @@ -1,487 +0,0 @@ - - - QmitkDeformableRegistrationViewControls - - - - 0 - 0 - 382 - 431 - - - - - 0 - 0 - - - - - 0 - 0 - - - - DeformableRegistrationViewControls - - - - - - - - - - - 255 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 255 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 118 - 116 - 108 - - - - - - - 118 - 116 - 108 - - - - - - - 118 - 116 - 108 - - - - - - - - - 8 - - - - - - - You have to select two images from Data Manager using CTRL + left click! - - - - - - - - - - - - 8 - - - - Fixed Image: - - - - - - - - 10 - - - - - - - false - - - - - - - - 8 - - - - Moving Image : - - - - - - - - 10 - - - - - - - false - - - - - - - - - Switch fixed and moving image - - - - - - - - - - - - 0 - 0 - - - - Moving Image Opacity: - - - false - - - - - - - 0% - - - - - - - - 0 - 0 - - - - 100 - - - 50 - - - Qt::Horizontal - - - - - - - 100% - - - - - - - - - - 0 - 0 - - - - Show Images Red/Green - - - - - - - - 0 - 0 - - - - QTabWidget::North - - - QTabWidget::Triangular - - - 0 - - - Qt::ElideNone - - - - Demons - - - - - B-Spline - - - - - 30 - 20 - 271 - 291 - - - - - 0 - 0 - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 10 - 0 - 242 - 10 - - - - - 0 - 0 - - - - - - - - - true - - - - 0 - 0 - - - - - 150 - 0 - - - - Register - - - - :/QmitkDeformableRegistrationView/DeformableRegistration.xpm:/QmitkDeformableRegistrationView/DeformableRegistration.xpm - - - false - - - - - - - Apply deformation field - - - - QFormLayout::AllNonFixedFieldsGrow - - - 0 - - - 0 - - - 0 - - - 3 - - - 0 - - - 0 - - - - - This deformation field is applied to the selected image. - - - - - - - This image is transformed with the selected deformation field. - - - - - - - Image: - - - - - - - Deformation field: - - - - - - - Apply deformation field. - - - Warp image - - - - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 1 - - - - - - - - - - QmitkDemonsRegistrationView - QWidget -
QmitkDemonsRegistrationView.h
- 1 -
- - QmitkBSplineRegistrationView - QWidget -
QmitkBSplineRegistrationView.h
- 1 -
- - QmitkDataStorageComboBox - QComboBox -
QmitkDataStorageComboBox.h
-
-
- - mitkDataNode.h - mitkBaseData.h - - - - - -
diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkLoadPresetDialog.cpp b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkLoadPresetDialog.cpp deleted file mode 100644 index 406eb801d0..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkLoadPresetDialog.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkLoadPresetDialog.h" - -#include -#include -#include -#include - -QmitkLoadPresetDialog::QmitkLoadPresetDialog(QWidget* parent, Qt::WindowFlags f, const char* name, std::list presets) -:QDialog(parent, f) -{ - QDialog::setMinimumSize(250, 300); - this->setObjectName(name); - - QBoxLayout * verticalLayout = new QVBoxLayout( this ); - verticalLayout->setMargin(5); - verticalLayout->setSpacing(5); - - // list of all presets - lblPrompt = new QLabel( "Which preset do you want to load?", this ); - verticalLayout->addWidget( lblPrompt ); - lstPresets = new QListWidget( this ); - verticalLayout->addWidget( lstPresets ); - - std::list::iterator iter; - for( iter = presets.begin(); iter != presets.end(); iter++ ) - { - std::string preset = *iter; - new QListWidgetItem(preset.c_str(), lstPresets); - } - - lstPresets->setCurrentItem(nullptr); // select first Item by default (might turn out to be a stupid descision) - - connect( lstPresets, SIGNAL(itemDoubleClicked (QListWidgetItem *)), this, SLOT(onPresetImmediatelySelected(QListWidgetItem *)) ); - - // buttons for closing the dialog - btnOk = new QPushButton( tr("Ok"), this); - btnOk->setObjectName("btnOk" ); - btnOk->setDefault(true); - connect( btnOk, SIGNAL(clicked()), this, SLOT(accept()) ); - - QPushButton* btnCancel = new QPushButton( tr("Cancel"), this); - btnCancel->setObjectName("btnCancel" ); - connect( btnCancel, SIGNAL(clicked()), this, SLOT(reject()) ); - - auto buttonWidget = new QWidget(this); - QBoxLayout * horizontalLayout = new QHBoxLayout( buttonWidget ); - horizontalLayout->setSpacing(5); - horizontalLayout->addStretch(); - horizontalLayout->addWidget( btnOk ); - horizontalLayout->addWidget( btnCancel ); - verticalLayout->addWidget(buttonWidget); -} - -QmitkLoadPresetDialog::~QmitkLoadPresetDialog() -{ -} - -std::string QmitkLoadPresetDialog::GetPresetName() -{ - std::string presetName = std::string(lstPresets->currentItem()->text().toLatin1()); - return presetName; -} - -void QmitkLoadPresetDialog::onPresetImmediatelySelected(QListWidgetItem * ) -{ - if ( (signed)(lstPresets->row(lstPresets->currentItem())) != (signed)(lstPresets->count()-1) ) - { - accept(); // close - } - else - { - // dont close - } -} - diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkLoadPresetDialog.h b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkLoadPresetDialog.h deleted file mode 100644 index 1dd44cf4fa..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkLoadPresetDialog.h +++ /dev/null @@ -1,66 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkLoadPresetDialog_h_Included -#define QmitkLoadPresetDialog_h_Included - -#include -#include -#include - -class QLabel; -class QLineEdit; -class QListWidget; -class QPushButton; - -#include - -/** - \brief Dialog for QmitkRigidRegistration. - - \ingroup RigidRegistration - - This dialog is used to ask a user about a preset with transform, metric, optimizer and interpolator parameters to load. -*/ -class QmitkLoadPresetDialog : public QDialog -{ - Q_OBJECT - - public: - - QmitkLoadPresetDialog(QWidget* parent, Qt::WindowFlags f, const char* name, std::list presets); - virtual ~QmitkLoadPresetDialog(); - - std::string GetPresetName(); - - signals: - - public slots: - - protected slots: - - void onPresetImmediatelySelected(QListWidgetItem * item); - - protected: - - QLabel* lblPrompt; - QListWidget* lstPresets; - - QPushButton* btnOk; -}; - -#endif - diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkPointBasedRegistrationView.cpp b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkPointBasedRegistrationView.cpp deleted file mode 100644 index b0c6ef38e7..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkPointBasedRegistrationView.cpp +++ /dev/null @@ -1,1344 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "QmitkPointBasedRegistrationView.h" -#include "ui_QmitkPointBasedRegistrationViewControls.h" -#include "QmitkPointListWidget.h" - -#include -#include -#include -#include "vtkPolyData.h" - -#include -#include "qradiobutton.h" -#include "qapplication.h" -#include -#include -#include -#include -#include "qmessagebox.h" - -#include -#include "mitkLandmarkWarping.h" -#include -#include "mitkOperationEvent.h" -#include "mitkUndoController.h" -#include "mitkNodePredicateDataType.h" -#include "mitkNodePredicateProperty.h" -#include "mitkNodePredicateAnd.h" -#include "mitkNodePredicateNot.h" -#include -#include - -#include - -#include - -#include "mitkDataNodeObject.h" - -#include "berryIWorkbenchWindow.h" -#include "berryISelectionService.h" - -#include - - -const std::string QmitkPointBasedRegistrationView::VIEW_ID = "org.mitk.views.pointbasedregistration"; - -using namespace berry; - -struct SelListenerPointBasedRegistration : ISelectionListener -{ - berryObjectMacro(SelListenerPointBasedRegistration); - - SelListenerPointBasedRegistration(QmitkPointBasedRegistrationView* view) - { - m_View = view; - } - - void DoSelectionChanged(ISelection::ConstPointer selection) - { - // if(!m_View->IsVisible()) - // return; - // save current selection in member variable - m_View->m_CurrentSelection = selection.Cast(); - - // do something with the selected items - if(m_View->m_CurrentSelection) - { - if (m_View->m_CurrentSelection->Size() != 2) - { - if (m_View->m_FixedNode.IsNull() || m_View->m_MovingNode.IsNull()) - { - m_View->m_Controls.m_StatusLabel->show(); - m_View->m_Controls.TextLabelFixed->hide(); - m_View->m_Controls.m_FixedLabel->hide(); - m_View->m_Controls.line2->hide(); - m_View->m_Controls.m_FixedPointListWidget->hide(); - m_View->m_Controls.TextLabelMoving->hide(); - m_View->m_Controls.m_MovingLabel->hide(); - m_View->m_Controls.line1->hide(); - m_View->m_Controls.m_MovingPointListWidget->hide(); - m_View->m_Controls.m_OpacityLabel->hide(); - m_View->m_Controls.m_OpacitySlider->hide(); - m_View->m_Controls.label->hide(); - m_View->m_Controls.label_2->hide(); - m_View->m_Controls.m_SwitchImages->hide(); - m_View->m_Controls.m_ShowRedGreenValues->setEnabled(false); - } - } - else - { - m_View->m_Controls.m_StatusLabel->hide(); - bool foundFixedNode = false; - mitk::DataNode::Pointer fixedNode; - // iterate selection - for (IStructuredSelection::iterator i = m_View->m_CurrentSelection->Begin(); - i != m_View->m_CurrentSelection->End(); ++i) - { - // extract datatree node - if (mitk::DataNodeObject::Pointer nodeObj = i->Cast()) - { - mitk::TNodePredicateDataType::Pointer isBaseData(mitk::TNodePredicateDataType::New()); - mitk::TNodePredicateDataType::Pointer isPointSet(mitk::TNodePredicateDataType::New()); - mitk::NodePredicateNot::Pointer notPointSet = mitk::NodePredicateNot::New(isPointSet); - mitk::TNodePredicateDataType::Pointer isPlaneGeometryData(mitk::TNodePredicateDataType::New()); - mitk::NodePredicateNot::Pointer notPlaneGeometryData = mitk::NodePredicateNot::New(isPlaneGeometryData); - mitk::NodePredicateAnd::Pointer notPointSetAndNotPlaneGeometryData = mitk::NodePredicateAnd::New( notPointSet, notPlaneGeometryData ); - mitk::NodePredicateAnd::Pointer predicate = mitk::NodePredicateAnd::New( isBaseData, notPointSetAndNotPlaneGeometryData ); - - - mitk::DataStorage::SetOfObjects::ConstPointer setOfObjects = m_View->GetDataStorage()->GetSubset(predicate); - - mitk::DataNode::Pointer node = nodeObj->GetDataNode(); - - // only look at interesting types - for (mitk::DataStorage::SetOfObjects::ConstIterator nodeIt = setOfObjects->Begin() - ; nodeIt != setOfObjects->End(); ++nodeIt) // for each node - { - if(nodeIt->Value().GetPointer() == node.GetPointer()) - { - // was - compare() - // use contain to allow other Image types to be selected, i.e. a diffusion image - if ( (QString( node->GetData()->GetNameOfClass() ).contains("Image") ) - || (QString( node->GetData()->GetNameOfClass() ).contains("Surface") ) ) - { - // verify that the node selected by name is really an image or derived class - mitk::BaseData* _basedata = dynamic_cast( node->GetData() ); - - // one of the data - if (_basedata != nullptr ) - { - if( _basedata->GetTimeSteps() > 3 ) - { - m_View->m_Controls.m_StatusLabel->show(); - QMessageBox::information( NULL, "PointBasedRegistration", "Only 2D or 3D objects can be processed.", QMessageBox::Ok ); - return; - } - - // for first, allow image and surfaces to be selected - mitk::Image::Pointer input_image = dynamic_cast(node->GetData()); - mitk::Surface::Pointer input_surface = dynamic_cast(node->GetData()); - - if ( ( input_image.IsNotNull() || input_surface.IsNotNull() ) && foundFixedNode == false ) - { - fixedNode = node; - foundFixedNode = true; - } - else - { - // method deleted, for more information see bug-18492 - // m_View->SetImagesVisible(selection); - m_View->FixedSelected(fixedNode); - m_View->MovingSelected(node); - m_View->m_Controls.m_StatusLabel->hide(); - m_View->m_Controls.TextLabelFixed->show(); - m_View->m_Controls.m_FixedLabel->show(); - m_View->m_Controls.line2->show(); - m_View->m_Controls.m_FixedPointListWidget->show(); - m_View->m_Controls.TextLabelMoving->show(); - m_View->m_Controls.m_MovingLabel->show(); - m_View->m_Controls.line1->show(); - m_View->m_Controls.m_MovingPointListWidget->show(); - m_View->m_Controls.m_OpacityLabel->show(); - m_View->m_Controls.m_OpacitySlider->show(); - m_View->m_Controls.label->show(); - m_View->m_Controls.label_2->show(); - m_View->m_Controls.m_SwitchImages->show(); - m_View->m_Controls.m_ShowRedGreenValues->setEnabled(true); - } - } - } - - else - { - m_View->m_Controls.m_StatusLabel->show(); - return; - } - - } - } - } - } - if (m_View->m_FixedNode.IsNull() || m_View->m_MovingNode.IsNull()) - { - m_View->m_Controls.m_StatusLabel->show(); - } - } - } - else if (m_View->m_FixedNode.IsNull() || m_View->m_MovingNode.IsNull()) - { - m_View->m_Controls.m_StatusLabel->show(); - } - } - - void SelectionChanged(const IWorkbenchPart::Pointer& part, - const ISelection::ConstPointer& selection) override - { - // check, if selection comes from datamanager - if (part) - { - QString partname = part->GetPartName(); - if(partname == "Data Manager") - { - // apply selection - DoSelectionChanged(selection); - } - } - } - - QmitkPointBasedRegistrationView* m_View; -}; - - -QmitkPointBasedRegistrationView::QmitkPointBasedRegistrationView(QObject * /*parent*/, const char * /*name*/) -: QmitkAbstractView(), m_FixedLandmarks(NULL), m_MovingLandmarks(NULL), m_MovingNode(NULL), -m_FixedNode(NULL), m_ShowRedGreen(false), m_Opacity(0.5), m_OriginalOpacity(1.0), m_Transformation(0), m_LastTransformMatrix(nullptr), m_HideFixedImage(false), m_HideMovingImage(false), -m_OldFixedLabel(""), m_OldMovingLabel(""), m_Deactivated (false), m_CurrentFixedLandmarksObserverID(0), m_CurrentMovingLandmarksObserverID(0) -{ - m_FixedLandmarksChangedCommand = itk::SimpleMemberCommand::New(); - m_FixedLandmarksChangedCommand->SetCallbackFunction(this, &QmitkPointBasedRegistrationView::updateFixedLandmarksList); - m_MovingLandmarksChangedCommand = itk::SimpleMemberCommand::New(); - m_MovingLandmarksChangedCommand->SetCallbackFunction(this, &QmitkPointBasedRegistrationView::updateMovingLandmarksList); - - this->GetDataStorage()->RemoveNodeEvent.AddListener(mitk::MessageDelegate1 ( this, &QmitkPointBasedRegistrationView::DataNodeHasBeenRemoved )); - -} - -QmitkPointBasedRegistrationView::~QmitkPointBasedRegistrationView() -{ - if(m_SelListener) - { - berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService(); - if(s) s->RemovePostSelectionListener(m_SelListener.data()); - } - if (m_FixedPointSetNode.IsNotNull()) - { - m_Controls.m_FixedPointListWidget->DeactivateInteractor(true); - m_FixedPointSetNode->SetProperty("label", mitk::StringProperty::New(m_OldFixedLabel)); - } - if (m_MovingPointSetNode.IsNotNull()) - { - m_Controls.m_MovingPointListWidget->DeactivateInteractor(true); - m_MovingPointSetNode->SetProperty("label", mitk::StringProperty::New(m_OldMovingLabel)); - } - m_Controls.m_FixedPointListWidget->SetPointSetNode(NULL); - m_Controls.m_MovingPointListWidget->SetPointSetNode(NULL); -} - -void QmitkPointBasedRegistrationView::CreateQtPartControl(QWidget* parent) -{ - m_Parent = parent; - m_Controls.setupUi(parent); - m_Parent->setEnabled(false); - m_Controls.m_MeanErrorLCD->hide(); - m_Controls.m_MeanError->hide(); - m_Controls.TextLabelFixed->hide(); - m_Controls.line2->hide(); - m_Controls.m_FixedPointListWidget->hide(); - m_Controls.m_FixedLabel->hide(); - m_Controls.TextLabelMoving->hide(); - m_Controls.m_MovingLabel->hide(); - m_Controls.line1->hide(); - m_Controls.m_MovingPointListWidget->hide(); - m_Controls.m_OpacityLabel->hide(); - m_Controls.m_OpacitySlider->hide(); - m_Controls.label->hide(); - m_Controls.label_2->hide(); - m_Controls.m_SwitchImages->hide(); - m_Controls.m_ShowRedGreenValues->setEnabled(false); - - this->CreateConnections(); - - // let the point set widget know about the multi widget (cross hair updates) - if (auto renderWindowPart = this->GetRenderWindowPart()) - { - mitk::SliceNavigationController* axialSnc = renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController(); - mitk::SliceNavigationController* sagittalSnc = renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController(); - mitk::SliceNavigationController* coronalSnc = renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController(); - m_Controls.m_FixedPointListWidget->AddSliceNavigationController(axialSnc); - m_Controls.m_FixedPointListWidget->AddSliceNavigationController(sagittalSnc); - m_Controls.m_FixedPointListWidget->AddSliceNavigationController(coronalSnc); - m_Controls.m_MovingPointListWidget->AddSliceNavigationController(axialSnc); - m_Controls.m_MovingPointListWidget->AddSliceNavigationController(sagittalSnc); - m_Controls.m_MovingPointListWidget->AddSliceNavigationController(coronalSnc); - } -} - -void QmitkPointBasedRegistrationView::SetFocus() -{ - m_Controls.m_SwitchImages->setFocus(); -} - -void QmitkPointBasedRegistrationView::RenderWindowPartActivated(mitk::IRenderWindowPart* renderWindowPart) -{ - m_Parent->setEnabled(true); - if (auto linkedRenderWindowPart = dynamic_cast(renderWindowPart)) - { - linkedRenderWindowPart->EnableSlicingPlanes(true); - } - mitk::SliceNavigationController* axialSnc = renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController(); - mitk::SliceNavigationController* sagittalSnc = renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController(); - mitk::SliceNavigationController* coronalSnc = renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController(); - m_Controls.m_FixedPointListWidget->AddSliceNavigationController(axialSnc); - m_Controls.m_FixedPointListWidget->AddSliceNavigationController(sagittalSnc); - m_Controls.m_FixedPointListWidget->AddSliceNavigationController(coronalSnc); - m_Controls.m_MovingPointListWidget->AddSliceNavigationController(axialSnc); - m_Controls.m_MovingPointListWidget->AddSliceNavigationController(sagittalSnc); - m_Controls.m_MovingPointListWidget->AddSliceNavigationController(coronalSnc); -} - -void QmitkPointBasedRegistrationView::RenderWindowPartDeactivated(mitk::IRenderWindowPart* renderWindowPart) -{ - m_Parent->setEnabled(false); -// if (auto linkedRenderWindowPart = dynamic_cast(renderWindowPart)) -// { -// linkedRenderWindowPart->EnableSlicingPlanes(false); -// } - mitk::SliceNavigationController* axialSnc = renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController(); - mitk::SliceNavigationController* sagittalSnc = renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController(); - mitk::SliceNavigationController* coronalSnc = renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController(); - m_Controls.m_FixedPointListWidget->RemoveSliceNavigationController(axialSnc); - m_Controls.m_FixedPointListWidget->RemoveSliceNavigationController(sagittalSnc); - m_Controls.m_FixedPointListWidget->RemoveSliceNavigationController(coronalSnc); - m_Controls.m_MovingPointListWidget->RemoveSliceNavigationController(axialSnc); - m_Controls.m_MovingPointListWidget->RemoveSliceNavigationController(sagittalSnc); - m_Controls.m_MovingPointListWidget->RemoveSliceNavigationController(coronalSnc); -} - -void QmitkPointBasedRegistrationView::CreateConnections() -{ - connect( (QObject*)(m_Controls.m_FixedPointListWidget), SIGNAL(EditPointSets(bool)), (QObject*)(m_Controls.m_MovingPointListWidget), SLOT(DeactivateInteractor(bool))); - connect( (QObject*)(m_Controls.m_MovingPointListWidget), SIGNAL(EditPointSets(bool)), (QObject*)(m_Controls.m_FixedPointListWidget), SLOT(DeactivateInteractor(bool))); - connect( (QObject*)(m_Controls.m_FixedPointListWidget), SIGNAL(EditPointSets(bool)), this, SLOT(HideMovingImage(bool))); - connect( (QObject*)(m_Controls.m_MovingPointListWidget), SIGNAL(EditPointSets(bool)), this, SLOT(HideFixedImage(bool))); - connect( (QObject*)(m_Controls.m_FixedPointListWidget), SIGNAL(PointListChanged()), this, SLOT(updateFixedLandmarksList())); - connect( (QObject*)(m_Controls.m_MovingPointListWidget), SIGNAL(PointListChanged()), this, SLOT(updateMovingLandmarksList())); - connect((QObject*)(m_Controls.m_Calculate),SIGNAL(clicked()),this,SLOT(calculate())); - connect((QObject*)(m_Controls.m_SwitchImages),SIGNAL(clicked()),this,SLOT(SwitchImages())); - connect((QObject*)(m_Controls.m_UndoTransformation),SIGNAL(clicked()),this,SLOT(UndoTransformation())); - connect((QObject*)(m_Controls.m_RedoTransformation),SIGNAL(clicked()),this,SLOT(RedoTransformation())); - connect((QObject*)(m_Controls.m_ShowRedGreenValues),SIGNAL(toggled(bool)),this,SLOT(showRedGreen(bool))); - connect((QObject*)(m_Controls.m_OpacitySlider),SIGNAL(valueChanged(int)),this,SLOT(OpacityUpdate(int))); - connect((QObject*)(m_Controls.m_SelectedTransformationClass),SIGNAL(activated(int)), this,SLOT(transformationChanged(int))); - connect((QObject*)(m_Controls.m_UseICP),SIGNAL(toggled(bool)), this,SLOT(checkCalculateEnabled())); - connect((QObject*)(m_Controls.m_UseICP),SIGNAL(toggled(bool)), this,SLOT(checkLandmarkError())); - connect((QObject*)(m_Controls.m_SaveLastTransformPushButton), SIGNAL(clicked()), this, SLOT(OnExportTransformButtonPushed() ) ); -} - -void QmitkPointBasedRegistrationView::Activated() -{ - - m_Deactivated = false; - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - this->clearTransformationLists(); - if (m_SelListener.isNull()) - { - m_SelListener.reset(new SelListenerPointBasedRegistration(this)); - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener(/*"org.mitk.views.datamanager",*/ m_SelListener.data()); - berry::ISelection::ConstPointer sel( - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager")); - m_CurrentSelection = sel.Cast(); - static_cast(m_SelListener.data())->DoSelectionChanged(sel); - } - this->OpacityUpdate(m_Controls.m_OpacitySlider->value()); - this->showRedGreen(m_Controls.m_ShowRedGreenValues->isChecked()); - - - -} - -void QmitkPointBasedRegistrationView::Visible() -{ - -} - -void QmitkPointBasedRegistrationView::Deactivated() -{ - - m_Deactivated = true; - if (m_FixedPointSetNode.IsNotNull()) - m_FixedPointSetNode->SetProperty("label", mitk::StringProperty::New(m_OldFixedLabel)); - m_Controls.m_FixedPointListWidget->SetPointSetNode(NULL); - m_Controls.m_FixedPointListWidget->DeactivateInteractor(true); - if (m_MovingPointSetNode.IsNotNull()) - m_MovingPointSetNode->SetProperty("label", mitk::StringProperty::New(m_OldMovingLabel)); - m_Controls.m_MovingPointListWidget->SetPointSetNode(NULL); - m_Controls.m_MovingPointListWidget->DeactivateInteractor(true); - this->setImageColor(false); - if (m_FixedNode.IsNotNull()) - m_FixedNode->SetOpacity(1.0); - if (m_MovingNode.IsNotNull()) - { - m_MovingNode->SetOpacity(m_OriginalOpacity); - } - this->clearTransformationLists(); - if (m_FixedPointSetNode.IsNotNull() && m_FixedLandmarks.IsNotNull() && m_FixedLandmarks->GetSize() == 0) - { - this->GetDataStorage()->Remove(m_FixedPointSetNode); - } - if (m_MovingPointSetNode.IsNotNull() && m_MovingLandmarks.IsNotNull() && m_MovingLandmarks->GetSize() == 0) - { - this->GetDataStorage()->Remove(m_MovingPointSetNode); - } - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - m_FixedNode = NULL; - m_MovingNode = NULL; - if(m_FixedLandmarks.IsNotNull()) - m_FixedLandmarks->RemoveObserver(m_CurrentFixedLandmarksObserverID); - m_FixedLandmarks = NULL; - if(m_MovingLandmarks.IsNotNull()) - m_MovingLandmarks->RemoveObserver(m_CurrentMovingLandmarksObserverID); - m_MovingLandmarks = NULL; - m_FixedPointSetNode = NULL; - m_MovingPointSetNode = NULL; - m_Controls.m_FixedLabel->hide(); - m_Controls.TextLabelFixed->hide(); - m_Controls.line2->hide(); - m_Controls.m_FixedPointListWidget->hide(); - m_Controls.m_MovingLabel->hide(); - m_Controls.TextLabelMoving->hide(); - m_Controls.line1->hide(); - m_Controls.m_MovingPointListWidget->hide(); - m_Controls.m_OpacityLabel->hide(); - m_Controls.m_OpacitySlider->hide(); - m_Controls.label->hide(); - m_Controls.label_2->hide(); - m_Controls.m_SwitchImages->hide(); - berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService(); - if(s) s->RemovePostSelectionListener(m_SelListener.data()); - m_SelListener.reset(); - -} - -void QmitkPointBasedRegistrationView::Hidden() -{ -} - - -void QmitkPointBasedRegistrationView::DataNodeHasBeenRemoved(const mitk::DataNode* node) -{ - if(node == m_FixedNode || node == m_MovingNode) - { - m_Controls.m_StatusLabel->show(); - m_Controls.TextLabelFixed->hide(); - m_Controls.m_FixedLabel->hide(); - m_Controls.line2->hide(); - m_Controls.m_FixedPointListWidget->hide(); - m_Controls.TextLabelMoving->hide(); - m_Controls.m_MovingLabel->hide(); - m_Controls.line1->hide(); - m_Controls.m_MovingPointListWidget->hide(); - m_Controls.m_OpacityLabel->hide(); - m_Controls.m_OpacitySlider->hide(); - m_Controls.label->hide(); - m_Controls.label_2->hide(); - m_Controls.m_SwitchImages->hide(); - m_Controls.m_ShowRedGreenValues->setEnabled(false); - } - -} - -void QmitkPointBasedRegistrationView::FixedSelected(mitk::DataNode::Pointer fixedImage) -{ - if(m_FixedLandmarks.IsNotNull()) - m_FixedLandmarks->RemoveObserver(m_CurrentFixedLandmarksObserverID); - if (fixedImage.IsNotNull()) - { - if (m_FixedNode != fixedImage) - { - // remove changes on previous selected node - if (m_FixedNode.IsNotNull()) - { - this->setImageColor(false); - m_FixedNode->SetOpacity(1.0); - if (m_FixedPointSetNode.IsNotNull()) - { - m_FixedPointSetNode->SetProperty("label", mitk::StringProperty::New(m_OldFixedLabel)); - } - } - - // get selected node - m_FixedNode = fixedImage; - - - // force opacity 1.0 for surfaces, otherwise the point picking/interaction does not work properly - if( QString(m_FixedNode->GetData()->GetNameOfClass() ).contains("Surface") ) - m_FixedNode->SetOpacity(1.0); - else - m_FixedNode->SetOpacity(0.5); - - m_FixedNode->SetVisibility(true); - m_Controls.m_FixedLabel->setText(QString::fromStdString(m_FixedNode->GetName())); - m_Controls.m_FixedLabel->show(); - m_Controls.m_SwitchImages->show(); - m_Controls.TextLabelFixed->show(); - m_Controls.line2->show(); - m_Controls.m_FixedPointListWidget->show(); - mitk::ColorProperty::Pointer colorProperty; - colorProperty = dynamic_cast(m_FixedNode->GetProperty("color")); - if ( colorProperty.IsNotNull() ) - { - m_FixedColor = colorProperty->GetColor(); - } - this->setImageColor(m_ShowRedGreen); - - bool hasPointSetNode = false; - mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_FixedNode); - unsigned long size; - size = children->Size(); - for (unsigned long i = 0; i < size; ++i) - { - mitk::StringProperty::Pointer nameProp = dynamic_cast(children->GetElement(i)->GetProperty("name")); - if(nameProp.IsNotNull() && nameProp->GetValueAsString()=="PointBasedRegistrationNode") - { - m_FixedPointSetNode=children->GetElement(i); - m_FixedLandmarks = dynamic_cast (m_FixedPointSetNode->GetData()); - this->GetDataStorage()->Remove(m_FixedPointSetNode); - hasPointSetNode = true; - break; - } - } - if (!hasPointSetNode) - { - m_FixedLandmarks = mitk::PointSet::New(); - m_FixedPointSetNode = mitk::DataNode::New(); - m_FixedPointSetNode->SetData(m_FixedLandmarks); - m_FixedPointSetNode->SetProperty("name", mitk::StringProperty::New("PointBasedRegistrationNode")); - } - m_FixedPointSetNode->GetStringProperty("label", m_OldFixedLabel); - m_FixedPointSetNode->SetProperty("label", mitk::StringProperty::New("F ")); - m_FixedPointSetNode->SetProperty("color", mitk::ColorProperty::New(0.0f, 1.0f, 1.0f)); - m_FixedPointSetNode->SetVisibility(true); - m_Controls.m_FixedPointListWidget->SetPointSetNode(m_FixedPointSetNode); - this->GetDataStorage()->Add(m_FixedPointSetNode, m_FixedNode); - - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - } - if (m_FixedPointSetNode.IsNull()) - { - m_FixedLandmarks = mitk::PointSet::New(); - m_FixedPointSetNode = mitk::DataNode::New(); - m_FixedPointSetNode->SetData(m_FixedLandmarks); - m_FixedPointSetNode->SetProperty("name", mitk::StringProperty::New("PointBasedRegistrationNode")); - - m_FixedPointSetNode->GetStringProperty("label", m_OldFixedLabel); - m_FixedPointSetNode->SetProperty("label", mitk::StringProperty::New("F ")); - m_FixedPointSetNode->SetProperty("color", mitk::ColorProperty::New(0.0f, 1.0f, 1.0f)); - m_FixedPointSetNode->SetVisibility(true); - m_Controls.m_FixedPointListWidget->SetPointSetNode(m_FixedPointSetNode); - this->GetDataStorage()->Add(m_FixedPointSetNode, m_FixedNode); - - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - } - } - else - { - m_FixedNode = NULL; - if (m_FixedPointSetNode.IsNotNull()) - m_FixedPointSetNode->SetProperty("label", mitk::StringProperty::New(m_OldFixedLabel)); - m_FixedPointSetNode = NULL; - m_FixedLandmarks = NULL; - m_Controls.m_FixedPointListWidget->SetPointSetNode(m_FixedPointSetNode); - m_Controls.m_FixedLabel->hide(); - m_Controls.TextLabelFixed->hide(); - m_Controls.line2->hide(); - m_Controls.m_FixedPointListWidget->hide(); - m_Controls.m_SwitchImages->hide(); - } - if(m_FixedLandmarks.IsNotNull()) - m_CurrentFixedLandmarksObserverID = m_FixedLandmarks->AddObserver(itk::ModifiedEvent(), m_FixedLandmarksChangedCommand); -} - -void QmitkPointBasedRegistrationView::MovingSelected(mitk::DataNode::Pointer movingImage) -{ - if(m_MovingLandmarks.IsNotNull()) - m_MovingLandmarks->RemoveObserver(m_CurrentMovingLandmarksObserverID); - if (movingImage.IsNotNull()) - { - if (m_MovingNode != movingImage) - { - if (m_MovingNode.IsNotNull()) - { - m_MovingNode->SetOpacity(m_OriginalOpacity); - if (m_FixedNode == m_MovingNode) - m_FixedNode->SetOpacity(0.5); - this->setImageColor(false); - if (m_MovingNode != m_FixedNode) - { - m_MovingPointSetNode->SetProperty("label", mitk::StringProperty::New(m_OldMovingLabel)); - } - else - { - m_OldFixedLabel = m_OldMovingLabel; - } - } - if (m_MovingPointSetNode.IsNotNull()) - m_MovingPointSetNode->SetProperty("label", mitk::StringProperty::New(m_OldMovingLabel)); - m_MovingNode = movingImage; - m_MovingNode->SetVisibility(true); - - - // force opacity 1.0 for surfaces, otherwise the point picking/interaction does not work properly - if( QString(m_MovingNode->GetData()->GetNameOfClass() ).contains("Surface") ) - m_Opacity = 1.0; - - - m_Controls.m_MovingLabel->setText(QString::fromStdString(m_MovingNode->GetName())); - m_Controls.m_MovingLabel->show(); - m_Controls.TextLabelMoving->show(); - m_Controls.line1->show(); - m_Controls.m_MovingPointListWidget->show(); - m_Controls.m_OpacityLabel->show(); - m_Controls.m_OpacitySlider->show(); - m_Controls.label->show(); - m_Controls.label_2->show(); - mitk::ColorProperty::Pointer colorProperty; - colorProperty = dynamic_cast(m_MovingNode->GetProperty("color")); - if ( colorProperty.IsNotNull() ) - { - m_MovingColor = colorProperty->GetColor(); - } - this->setImageColor(m_ShowRedGreen); - m_MovingNode->GetFloatProperty("opacity", m_OriginalOpacity); - this->OpacityUpdate(m_Opacity); - bool hasPointSetNode = false; - mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode); - unsigned long size; - size = children->Size(); - for (unsigned long i = 0; i < size; ++i) - { - mitk::StringProperty::Pointer nameProp = dynamic_cast(children->GetElement(i)->GetProperty("name")); - if(nameProp.IsNotNull() && nameProp->GetValueAsString()=="PointBasedRegistrationNode") - { - m_MovingPointSetNode=children->GetElement(i); - m_MovingLandmarks = dynamic_cast (m_MovingPointSetNode->GetData()); - this->GetDataStorage()->Remove(m_MovingPointSetNode); - hasPointSetNode = true; - break; - } - } - if (!hasPointSetNode) - { - m_MovingLandmarks = mitk::PointSet::New(); - m_MovingPointSetNode = mitk::DataNode::New(); - m_MovingPointSetNode->SetData(m_MovingLandmarks); - m_MovingPointSetNode->SetProperty("name", mitk::StringProperty::New("PointBasedRegistrationNode")); - } - this->GetDataStorage()->Add(m_MovingPointSetNode, m_MovingNode); - m_MovingPointSetNode->GetStringProperty("label", m_OldMovingLabel); - m_MovingPointSetNode->SetProperty("label", mitk::StringProperty::New("M ")); - m_MovingPointSetNode->SetProperty("color", mitk::ColorProperty::New(1.0f, 1.0f, 0.0f)); - m_MovingPointSetNode->SetVisibility(true); - m_Controls.m_MovingPointListWidget->SetPointSetNode(m_MovingPointSetNode); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - this->clearTransformationLists(); - this->OpacityUpdate(m_Opacity); - } - if (m_MovingPointSetNode.IsNull()) - { - m_MovingLandmarks = mitk::PointSet::New(); - m_MovingPointSetNode = mitk::DataNode::New(); - m_MovingPointSetNode->SetData(m_MovingLandmarks); - m_MovingPointSetNode->SetProperty("name", mitk::StringProperty::New("PointBasedRegistrationNode")); - - m_MovingPointSetNode->GetStringProperty("label", m_OldMovingLabel); - m_MovingPointSetNode->SetProperty("label", mitk::StringProperty::New("M ")); - m_MovingPointSetNode->SetProperty("color", mitk::ColorProperty::New(1.0f, 1.0f, 0.0f)); - m_MovingPointSetNode->SetVisibility(true); - m_Controls.m_MovingPointListWidget->SetPointSetNode(m_MovingPointSetNode); - this->GetDataStorage()->Add(m_MovingPointSetNode, m_MovingNode); - - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - - } - - - - - } - else - { - m_MovingNode = NULL; - if (m_MovingPointSetNode.IsNotNull()) - m_MovingPointSetNode->SetProperty("label", mitk::StringProperty::New(m_OldMovingLabel)); - m_MovingPointSetNode = NULL; - m_MovingLandmarks = NULL; - m_Controls.m_MovingPointListWidget->SetPointSetNode(m_MovingPointSetNode); - m_Controls.m_MovingLabel->hide(); - m_Controls.TextLabelMoving->hide(); - m_Controls.line1->hide(); - m_Controls.m_MovingPointListWidget->hide(); - m_Controls.m_OpacityLabel->hide(); - m_Controls.m_OpacitySlider->hide(); - m_Controls.label->hide(); - m_Controls.label_2->hide(); - } - if(m_MovingLandmarks.IsNotNull()) - m_CurrentMovingLandmarksObserverID = m_MovingLandmarks->AddObserver(itk::ModifiedEvent(), m_MovingLandmarksChangedCommand); -} - -void QmitkPointBasedRegistrationView::updateMovingLandmarksList() -{ - m_MovingLandmarks = dynamic_cast(m_MovingPointSetNode->GetData()); - - this->checkLandmarkError(); - this->CheckCalculate(); -} - -void QmitkPointBasedRegistrationView::updateFixedLandmarksList() -{ - m_FixedLandmarks = dynamic_cast(m_FixedPointSetNode->GetData()); - - this->checkLandmarkError(); - this->CheckCalculate(); -} - -void QmitkPointBasedRegistrationView::HideFixedImage(bool hide) -{ - m_HideFixedImage = hide; - if(m_FixedNode.IsNotNull()) - { - m_FixedNode->SetVisibility(!hide); - } - - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -void QmitkPointBasedRegistrationView::HideMovingImage(bool hide) -{ - m_HideMovingImage = hide; - - if(m_MovingNode.IsNotNull()) - { - m_MovingNode->SetVisibility(!hide); - } - - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -bool QmitkPointBasedRegistrationView::CheckCalculate() -{ - if(( m_MovingPointSetNode.IsNull() )|| - ( m_FixedPointSetNode.IsNull()||m_FixedLandmarks.IsNull()||m_MovingLandmarks.IsNull()) ) - return false; - - if(m_MovingNode==m_FixedNode) - return false; - - return this->checkCalculateEnabled(); -} - -void QmitkPointBasedRegistrationView::UndoTransformation() -{ - if(!m_UndoPointsGeometryList.empty()) - { - mitk::BaseGeometry::Pointer movingLandmarksGeometry = m_MovingLandmarks->GetGeometry(0)->Clone(); - m_RedoPointsGeometryList.push_back(movingLandmarksGeometry.GetPointer()); - m_MovingLandmarks->SetGeometry(m_UndoPointsGeometryList.back()); - m_UndoPointsGeometryList.pop_back(); - //\FIXME when geometry is substituted the matrix referenced by the actor created by the mapper - //is still pointing to the old one. Workaround: delete mapper - m_MovingPointSetNode->SetMapper(1, NULL); - - mitk::BaseData::Pointer movingData = m_MovingNode->GetData(); - mitk::BaseGeometry::Pointer movingGeometry = movingData->GetGeometry(0)->Clone(); - m_RedoGeometryList.push_back(movingGeometry.GetPointer()); - movingData->SetGeometry(m_UndoGeometryList.back()); - m_UndoGeometryList.pop_back(); - //\FIXME when geometry is substituted the matrix referenced by the actor created by the mapper - //is still pointing to the old one. Workaround: delete mapper - m_MovingNode->SetMapper(1, NULL); - this->GetRenderWindowPart()->GetQmitkRenderWindow("3d")->GetRenderer()->RequestUpdate(); - - movingData->GetTimeGeometry()->Update(); - m_MovingLandmarks->GetTimeGeometry()->Update(); - m_Controls.m_RedoTransformation->setEnabled(true); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - this->checkLandmarkError(); - } - if(!m_UndoPointsGeometryList.empty()) - { - m_Controls.m_UndoTransformation->setEnabled(true); - m_Controls.m_SaveLastTransformPushButton->setEnabled(true); - } - else - { - m_Controls.m_UndoTransformation->setEnabled(false); - m_Controls.m_SaveLastTransformPushButton->setEnabled(false); - } -} - -void QmitkPointBasedRegistrationView::RedoTransformation() -{ - if(!m_RedoPointsGeometryList.empty()) - { - mitk::BaseGeometry::Pointer movingLandmarksGeometry = m_MovingLandmarks->GetGeometry(0)->Clone(); - m_UndoPointsGeometryList.push_back(movingLandmarksGeometry.GetPointer()); - m_MovingLandmarks->SetGeometry(m_RedoPointsGeometryList.back()); - m_RedoPointsGeometryList.pop_back(); - //\FIXME when geometry is substituted the matrix referenced by the actor created by the mapper - //is still pointing to the old one. Workaround: delete mapper - m_MovingPointSetNode->SetMapper(1, NULL); - - mitk::BaseData::Pointer movingData = m_MovingNode->GetData(); - mitk::BaseGeometry::Pointer movingGeometry = movingData->GetGeometry(0)->Clone(); - m_UndoGeometryList.push_back(movingGeometry.GetPointer()); - movingData->SetGeometry(m_RedoGeometryList.back()); - m_RedoGeometryList.pop_back(); - //\FIXME when geometry is substituted the matrix referenced by the actor created by the mapper - //is still pointing to the old one. Workaround: delete mapper - m_MovingNode->SetMapper(1, NULL); - this->GetRenderWindowPart()->GetQmitkRenderWindow("3d")->GetRenderer()->RequestUpdate(); - - movingData->GetTimeGeometry()->Update(); - m_MovingLandmarks->GetTimeGeometry()->Update(); - m_Controls.m_UndoTransformation->setEnabled(true); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - this->checkLandmarkError(); - } - if(!m_RedoPointsGeometryList.empty()) - { - m_Controls.m_RedoTransformation->setEnabled(true); - } - else - { - m_Controls.m_RedoTransformation->setEnabled(false); - } -} - -void QmitkPointBasedRegistrationView::showRedGreen(bool redGreen) -{ - m_ShowRedGreen = redGreen; - this->setImageColor(m_ShowRedGreen); -} - -void QmitkPointBasedRegistrationView::setImageColor(bool redGreen) -{ - if (!redGreen && m_FixedNode.IsNotNull()) - { - m_FixedNode->SetColor(m_FixedColor); - } - if (!redGreen && m_MovingNode.IsNotNull()) - { - m_MovingNode->SetColor(m_MovingColor); - } - if (redGreen && m_FixedNode.IsNotNull()) - { - m_FixedNode->SetColor(1.0f, 0.0f, 0.0f); - } - if (redGreen && m_MovingNode.IsNotNull()) - { - m_MovingNode->SetColor(0.0f, 1.0f, 0.0f); - } - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -void QmitkPointBasedRegistrationView::OpacityUpdate(float opacity) -{ - if (opacity > 1) - { - opacity = opacity/100.0f; - } - m_Opacity = opacity; - if (m_MovingNode.IsNotNull()) - { - m_MovingNode->SetOpacity(m_Opacity); - } - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -void QmitkPointBasedRegistrationView::OpacityUpdate(int opacity) -{ - float fValue = ((float)opacity)/100.0f; - this->OpacityUpdate(fValue); -} - -void QmitkPointBasedRegistrationView::clearTransformationLists() -{ - m_Controls.m_UndoTransformation->setEnabled(false); - m_Controls.m_RedoTransformation->setEnabled(false); - m_Controls.m_SaveLastTransformPushButton->setEnabled(false); - m_Controls.m_MeanErrorLCD->hide(); - m_Controls.m_MeanError->hide(); - m_UndoGeometryList.clear(); - m_UndoPointsGeometryList.clear(); - m_RedoGeometryList.clear(); - m_RedoPointsGeometryList.clear(); -} - -void QmitkPointBasedRegistrationView::checkLandmarkError() -{ - double totalDist = 0, dist = 0, dist2 = 0; - mitk::Point3D point1, point2, point3; - double p1[3], p2[3]; - if(m_Transformation < 3) - { - if (m_Controls.m_UseICP->isChecked()) - { - if (m_MovingLandmarks.IsNotNull() && m_FixedLandmarks.IsNotNull()&& m_MovingLandmarks->GetSize() != 0 && m_FixedLandmarks->GetSize() != 0) - { - for(int pointId = 0; pointId < m_MovingLandmarks->GetSize(); ++pointId) - { - point1 = m_MovingLandmarks->GetPoint(pointId); - point2 = m_FixedLandmarks->GetPoint(0); - p1[0] = point1[0]; p1[1] = point1[1]; p1[2] = point1[2]; - p2[0] = point2[0]; p2[1] = point2[1]; p2[2] = point2[2]; - dist = vtkMath::Distance2BetweenPoints(p1, p2); - for(int pointId2 = 1; pointId2 < m_FixedLandmarks->GetSize(); ++pointId2) - { - point2 = m_FixedLandmarks->GetPoint(pointId2); - p1[0] = point1[0]; p1[1] = point1[1]; p1[2] = p1[2]; - p2[0] = point2[0]; p2[1] = point2[1]; p2[2] = p2[2]; - dist2 = vtkMath::Distance2BetweenPoints(p1, p2); - if (dist2 < dist) - { - dist = dist2; - } - } - totalDist += dist; - } - m_Controls.m_MeanErrorLCD->display(sqrt(totalDist/m_FixedLandmarks->GetSize())); - m_Controls.m_MeanErrorLCD->show(); - m_Controls.m_MeanError->show(); - } - else - { - m_Controls.m_MeanErrorLCD->hide(); - m_Controls.m_MeanError->hide(); - } - } - else - { - if (m_MovingLandmarks.IsNotNull() && m_FixedLandmarks.IsNotNull() && m_MovingLandmarks->GetSize() != 0 && m_FixedLandmarks->GetSize() != 0 && m_MovingLandmarks->GetSize() == m_FixedLandmarks->GetSize()) - { - for(int pointId = 0; pointId < m_MovingLandmarks->GetSize(); ++pointId) - { - point1 = m_MovingLandmarks->GetPoint(pointId); - point2 = m_FixedLandmarks->GetPoint(pointId); - p1[0] = point1[0]; p1[1] = point1[1]; p1[2] = point1[2]; - p2[0] = point2[0]; p2[1] = point2[1]; p2[2] = point2[2]; - totalDist += vtkMath::Distance2BetweenPoints(p1, p2); - } - m_Controls.m_MeanErrorLCD->display(sqrt(totalDist/m_FixedLandmarks->GetSize())); - m_Controls.m_MeanErrorLCD->show(); - m_Controls.m_MeanError->show(); - } - else - { - m_Controls.m_MeanErrorLCD->hide(); - m_Controls.m_MeanError->hide(); - } - } - } - else - { - if (m_MovingLandmarks.IsNotNull() && m_FixedLandmarks.IsNotNull() && m_MovingLandmarks->GetSize() != 0 && m_FixedLandmarks->GetSize() != 0 && m_MovingLandmarks->GetSize() == m_FixedLandmarks->GetSize()) - { - for(int pointId = 0; pointId < m_MovingLandmarks->GetSize(); ++pointId) - { - point1 = m_MovingLandmarks->GetPoint(pointId); - point2 = m_FixedLandmarks->GetPoint(pointId); - p1[0] = point1[0]; p1[1] = point1[1]; p1[2] = point1[2]; - p2[0] = point2[0]; p2[1] = point2[1]; p2[2] = point2[2]; - totalDist += vtkMath::Distance2BetweenPoints(p1, p2); - } - m_Controls.m_MeanErrorLCD->display(sqrt(totalDist/m_FixedLandmarks->GetSize())); - m_Controls.m_MeanErrorLCD->show(); - m_Controls.m_MeanError->show(); - } - else - { - m_Controls.m_MeanErrorLCD->hide(); - m_Controls.m_MeanError->hide(); - } - } -} - -void QmitkPointBasedRegistrationView::transformationChanged(int transform) -{ - m_Transformation = transform; - this->checkCalculateEnabled(); - this->checkLandmarkError(); -} - -// ICP with vtkLandmarkTransformation -void QmitkPointBasedRegistrationView::calculateLandmarkbasedWithICP() -{ - if(CheckCalculate()) - { - mitk::BaseGeometry::Pointer pointsGeometry = m_MovingLandmarks->GetGeometry(0); - mitk::BaseGeometry::Pointer movingLandmarksGeometry = m_MovingLandmarks->GetGeometry(0)->Clone(); - m_UndoPointsGeometryList.push_back(movingLandmarksGeometry.GetPointer()); - - mitk::BaseData::Pointer originalData = m_MovingNode->GetData(); - mitk::BaseGeometry::Pointer originalDataGeometry = originalData->GetGeometry(0)->Clone(); - m_UndoGeometryList.push_back(originalDataGeometry.GetPointer()); - - vtkIdType pointId; - vtkPoints* vPointsSource=vtkPoints::New(); - vtkCellArray* vCellsSource=vtkCellArray::New(); - for(pointId=0; pointIdGetSize();++pointId) - { - mitk::Point3D pointSource=m_MovingLandmarks->GetPoint(pointId); - vPointsSource->InsertNextPoint(pointSource[0],pointSource[1],pointSource[2]); - vCellsSource->InsertNextCell(1, &pointId); - } - - vtkPoints* vPointsTarget=vtkPoints::New(); - vtkCellArray* vCellsTarget = vtkCellArray::New(); - for(pointId=0; pointIdGetSize();++pointId) - { - mitk::Point3D pointTarget=m_FixedLandmarks->GetPoint(pointId); - vPointsTarget->InsertNextPoint(pointTarget[0],pointTarget[1],pointTarget[2]); - vCellsTarget->InsertNextCell(1, &pointId); - } - - vtkPolyData* vPointSetSource=vtkPolyData::New(); - vtkPolyData* vPointSetTarget=vtkPolyData::New(); - - vPointSetTarget->SetPoints(vPointsTarget); - vPointSetTarget->SetVerts(vCellsTarget); - vPointSetSource->SetPoints(vPointsSource); - vPointSetSource->SetVerts(vCellsSource); - - vtkIterativeClosestPointTransform * icp=vtkIterativeClosestPointTransform::New(); - icp->SetCheckMeanDistance(1); - icp->SetSource(vPointSetSource); - icp->SetTarget(vPointSetTarget); - icp->SetMaximumNumberOfIterations(50); - icp->StartByMatchingCentroidsOn(); - vtkLandmarkTransform * transform=icp->GetLandmarkTransform(); - if(m_Transformation==0) - { - transform->SetModeToRigidBody(); - } - if(m_Transformation==1) - { - transform->SetModeToSimilarity(); - } - if(m_Transformation==2) - { - transform->SetModeToAffine(); - } - - vtkMatrix4x4 * matrix=icp->GetMatrix(); - - double determinant = fabs(matrix->Determinant()); - if((determinant < mitk::eps) || (determinant > 100) || (determinant < 0.01) - || (determinant==itk::NumericTraits::infinity()) - || (determinant==itk::NumericTraits::quiet_NaN()) - || (determinant==itk::NumericTraits::signaling_NaN()) - || (determinant==-itk::NumericTraits::infinity()) - || (determinant==-itk::NumericTraits::quiet_NaN()) - || (determinant==-itk::NumericTraits::signaling_NaN()) - || (!(determinant <= 0) && !(determinant > 0))) - { - QMessageBox msgBox; - msgBox.setText("Suspicious determinant of matrix calculated by ICP.\n" - "Please select more points or other points!" ); - msgBox.exec(); - return; - } - - pointsGeometry->Compose(matrix); - m_MovingLandmarks->GetTimeGeometry()->Update(); - - mitk::BaseData::Pointer movingData = m_MovingNode->GetData(); - mitk::BaseGeometry::Pointer movingGeometry = movingData->GetGeometry(0); - movingGeometry->Compose(matrix); - movingData->GetTimeGeometry()->Update(); - m_Controls.m_UndoTransformation->setEnabled(true); - m_Controls.m_RedoTransformation->setEnabled(false); - m_Controls.m_SaveLastTransformPushButton->setEnabled(true); - m_RedoGeometryList.clear(); - m_RedoPointsGeometryList.clear(); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - this->checkLandmarkError(); - } -} - -// only vtkLandmarkTransformation -void QmitkPointBasedRegistrationView::calculateLandmarkbased() -{ - if(CheckCalculate()) - { - mitk::BaseGeometry::Pointer pointsGeometry = m_MovingLandmarks->GetGeometry(0); - mitk::BaseGeometry::Pointer movingLandmarksGeometry = m_MovingLandmarks->GetGeometry(0)->Clone(); - m_UndoPointsGeometryList.push_back(movingLandmarksGeometry.GetPointer()); - - mitk::BaseData::Pointer originalData = m_MovingNode->GetData(); - mitk::BaseGeometry::Pointer originalDataGeometry = originalData->GetGeometry(0)->Clone(); - m_UndoGeometryList.push_back(originalDataGeometry.GetPointer()); - - vtkIdType pointId; - vtkPoints* vPointsSource=vtkPoints::New(); - for(pointId = 0; pointId < m_MovingLandmarks->GetSize(); ++pointId) - { - mitk::Point3D sourcePoint = m_MovingLandmarks->GetPoint(pointId); - vPointsSource->InsertNextPoint(sourcePoint[0],sourcePoint[1],sourcePoint[2]); - } - vtkPoints* vPointsTarget=vtkPoints::New(); - for(pointId=0; pointIdGetSize();++pointId) - { - mitk::Point3D targetPoint=m_FixedLandmarks->GetPoint(pointId); - vPointsTarget->InsertNextPoint(targetPoint[0],targetPoint[1],targetPoint[2]); - } - - vtkLandmarkTransform * transform= vtkLandmarkTransform::New(); - transform->SetSourceLandmarks(vPointsSource); - transform->SetTargetLandmarks(vPointsTarget); - if(m_Transformation==0) - { - transform->SetModeToRigidBody(); - } - if(m_Transformation==1) - { - transform->SetModeToSimilarity(); - } - if(m_Transformation==2) - { - transform->SetModeToAffine(); - } - vtkMatrix4x4 * matrix=transform->GetMatrix(); - - m_LastTransformMatrix = matrix->NewInstance(); - m_LastTransformMatrix->DeepCopy( matrix ); - - - double determinant = fabs(matrix->Determinant()); - if((determinant < mitk::eps) || (determinant > 100) || (determinant < 0.01) - || (determinant==itk::NumericTraits::infinity()) - || (determinant==itk::NumericTraits::quiet_NaN()) - || (determinant==itk::NumericTraits::signaling_NaN()) - || (determinant==-itk::NumericTraits::infinity()) - || (determinant==-itk::NumericTraits::quiet_NaN()) - || (determinant==-itk::NumericTraits::signaling_NaN()) - || (!(determinant <= 0) && !(determinant > 0))) - { - QMessageBox msgBox; - msgBox.setText("Suspicious determinant of matrix calculated.\n" - "Please select more points or other points!" ); - msgBox.exec(); - return; - } - pointsGeometry->Compose(matrix); - m_MovingLandmarks->GetTimeGeometry()->Update(); - - mitk::BaseData::Pointer movingData = m_MovingNode->GetData(); - mitk::BaseGeometry::Pointer movingGeometry = movingData->GetGeometry(0); - movingGeometry->Compose(matrix); - movingData->GetTimeGeometry()->Update(); - m_Controls.m_UndoTransformation->setEnabled(true); - m_Controls.m_SaveLastTransformPushButton->setEnabled(true); - m_Controls.m_RedoTransformation->setEnabled(false); - m_RedoGeometryList.clear(); - m_RedoPointsGeometryList.clear(); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - this->checkLandmarkError(); - } -} - -void QmitkPointBasedRegistrationView::calculateLandmarkWarping() -{ - mitk::LandmarkWarping* registration = new mitk::LandmarkWarping(); - - mitk::LandmarkWarping::FixedImageType::Pointer fixedImage = mitk::LandmarkWarping::FixedImageType::New(); - mitk::Image::Pointer fimage = dynamic_cast(m_FixedNode->GetData()); - mitk::LandmarkWarping::MovingImageType::Pointer movingImage = mitk::LandmarkWarping::MovingImageType::New(); - mitk::Image::Pointer mimage = dynamic_cast(m_MovingNode->GetData()); - if (fimage.IsNotNull() && /*fimage->GetDimension() == 2 || */ fimage->GetDimension() == 3 && mimage.IsNotNull() && mimage->GetDimension() == 3) - { - mitk::CastToItkImage(fimage, fixedImage); - mitk::CastToItkImage(mimage, movingImage); - - registration->SetFixedImage(fixedImage); - registration->SetMovingImage(movingImage); - unsigned int pointId; - mitk::Point3D sourcePoint, targetPoint; - mitk::LandmarkWarping::LandmarkContainerType::Pointer fixedLandmarks = mitk::LandmarkWarping::LandmarkContainerType::New(); - mitk::LandmarkWarping::LandmarkPointType point; - for(pointId = 0; pointId < (unsigned int)m_FixedLandmarks->GetSize(); ++pointId) - { - fimage->GetGeometry(0)->WorldToItkPhysicalPoint(m_FixedLandmarks->GetPoint(pointId), point); - fixedLandmarks->InsertElement( pointId, point); - } - mitk::LandmarkWarping::LandmarkContainerType::Pointer movingLandmarks = mitk::LandmarkWarping::LandmarkContainerType::New(); - for(pointId = 0; pointId < (unsigned int)m_MovingLandmarks->GetSize(); ++pointId) - { - mitk::BaseData::Pointer fixedData = m_FixedNode->GetData(); - mitk::BaseGeometry::Pointer fixedGeometry = fixedData->GetGeometry(0); - fixedGeometry->WorldToItkPhysicalPoint(m_MovingLandmarks->GetPoint(pointId), point); - movingLandmarks->InsertElement( pointId, point); - } - registration->SetLandmarks(fixedLandmarks.GetPointer(), movingLandmarks.GetPointer()); - mitk::LandmarkWarping::MovingImageType::Pointer output = registration->Register(); - if (output.IsNotNull()) - { - mitk::Image::Pointer image = mitk::Image::New(); - mitk::CastToMitkImage(output, image); - m_MovingNode->SetData(image); - mitk::LevelWindowProperty::Pointer levWinProp = mitk::LevelWindowProperty::New(); - mitk::LevelWindow levelWindow; - levelWindow.SetAuto( image ); - levWinProp->SetLevelWindow(levelWindow); - m_MovingNode->GetPropertyList()->SetProperty("levelwindow",levWinProp); - movingLandmarks = registration->GetTransformedTargetLandmarks(); - mitk::PointSet::PointDataIterator it; - it = m_MovingLandmarks->GetPointSet()->GetPointData()->Begin(); - for(pointId=0; pointIdSize();++pointId, ++it) - { - int position = it->Index(); - mitk::PointSet::PointType pt = m_MovingLandmarks->GetPoint(position); - mitk::Point3D undoPoint = ( pt ); - point = movingLandmarks->GetElement(pointId); - fimage->GetGeometry(0)->ItkPhysicalPointToWorld(point, pt); - mitk::PointOperation* doOp = new mitk::PointOperation(mitk::OpMOVE, pt, position); - //undo operation - mitk::PointOperation* undoOp = new mitk::PointOperation(mitk::OpMOVE, undoPoint, position); - mitk::OperationEvent* operationEvent = new mitk::OperationEvent(m_MovingLandmarks, doOp, undoOp, "Move point"); - mitk::OperationEvent::IncCurrObjectEventId(); - mitk::UndoController::GetCurrentUndoModel()->SetOperationEvent(operationEvent); - //execute the Operation - m_MovingLandmarks->ExecuteOperation(doOp); - } - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - this->clearTransformationLists(); - this->checkLandmarkError(); - } - } -} - -bool QmitkPointBasedRegistrationView::checkCalculateEnabled() -{ - if (m_FixedLandmarks.IsNotNull() && m_MovingLandmarks.IsNotNull()) - { - int fixedPoints = m_FixedLandmarks->GetSize(); - int movingPoints = m_MovingLandmarks->GetSize(); - if (m_Transformation == 0 || m_Transformation == 1 || m_Transformation == 2) - { - if (m_Controls.m_UseICP->isChecked()) - { - if((movingPoints > 0 && fixedPoints > 0)) - { - m_Controls.m_Calculate->setEnabled(true); - return true; - } - else - { - m_Controls.m_Calculate->setEnabled(false); - return false; - } - } - else - { - if ((movingPoints == fixedPoints) && movingPoints > 0) - { - m_Controls.m_Calculate->setEnabled(true); - return true; - } - else - { - m_Controls.m_Calculate->setEnabled(false); - return false; - } - } - } - else - { - m_Controls.m_Calculate->setEnabled(true); - return true; - } - } - else - { - return false; - } -} - -void QmitkPointBasedRegistrationView::calculate() -{ - if (m_Transformation == 0 || m_Transformation == 1 || m_Transformation == 2) - { - if (m_Controls.m_UseICP->isChecked()) - { - if (m_MovingLandmarks->GetSize() == 1 && m_FixedLandmarks->GetSize() == 1) - { - this->calculateLandmarkbased(); - } - else - { - this->calculateLandmarkbasedWithICP(); - } - } - else - { - this->calculateLandmarkbased(); - } - } - else - { - this->calculateLandmarkWarping(); - } -} - -void QmitkPointBasedRegistrationView::SwitchImages() -{ - mitk::DataNode::Pointer newMoving = m_FixedNode; - mitk::DataNode::Pointer newFixed = m_MovingNode; - this->FixedSelected(newFixed); - this->MovingSelected(newMoving); -} - -void QmitkPointBasedRegistrationView::OnExportTransformButtonPushed() -{ - // handle transform export - QString filename = QFileDialog::getSaveFileName(0, "Save transform file as plain matrix", "", ".txt"); - QFile f( filename ); - f.open( QIODevice::WriteOnly ); - - // write out text - QTextStream outstream(&f); - outstream << "# Plain text transform matrix " << "\n" << "# Saved from the PointBasedRegistration Plugin \n"; - - std::stringstream matrix_ss; - m_LastTransformMatrix->Print( matrix_ss ); - outstream << matrix_ss.str().c_str(); - - f.close(); -} - diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkPointBasedRegistrationView.h b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkPointBasedRegistrationView.h deleted file mode 100644 index b4c821ffa7..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkPointBasedRegistrationView.h +++ /dev/null @@ -1,254 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#if !defined(QMITK_POINTBASEDREGISTRATION_H__INCLUDED) -#define QMITK_POINTBASEDREGISTRATION_H__INCLUDED - -#include -#include -#include - -#include "berryISelectionListener.h" -#include "berryIStructuredSelection.h" - -//#include "mitkTestingConfig.h" // IMPORTANT: this defines or undefines BUILD_TESTING ! - -#include -#include -#include -//#include "QmitkMessageBoxHelper.h" -#include "ui_QmitkPointBasedRegistrationViewControls.h" - -#include - -/*! -\brief The PointBasedRegistration view is used to perform point based registration. - -This view allows you to register 2D as well as 3D images in a rigid and deformable manner via corresponding -PointSets. Register means to align two images, so that they become as similar as possible. -Therefore you have to set corresponding points in both images, which will be matched. The movement, which has to be -performed on the points to align them will be performed on the moving image as well. The result is shown in the multi-widget. - -For more informations see: \ref QmitkPointBasedRegistrationUserManual - -\ingroup PointBasedRegistration -*/ - -class REGISTRATION_EXPORT QmitkPointBasedRegistrationView : public QmitkAbstractView, public mitk::ILifecycleAwarePart, public mitk::IRenderWindowPartListener -{ - - friend struct SelListenerPointBasedRegistration; - - Q_OBJECT - -public: - - static const std::string VIEW_ID; - - /*! - \brief Default constructor - */ - QmitkPointBasedRegistrationView(QObject *parent=0, const char *name=0); - - /*! - \brief Default destructor - */ - virtual ~QmitkPointBasedRegistrationView(); - - /*! - \brief method for creating the applications main widget - */ - virtual void CreateQtPartControl(QWidget *parent) override; - - /// - /// Sets the focus to an internal widget. - /// - virtual void SetFocus() override; - - virtual void RenderWindowPartActivated(mitk::IRenderWindowPart* renderWindowPart) override; - - virtual void RenderWindowPartDeactivated(mitk::IRenderWindowPart* renderWindowPart) override; - - /*! - \brief Method for creating the connections of main and control widget - */ - virtual void CreateConnections(); - - virtual void Activated() override; - virtual void Deactivated() override; - virtual void Visible() override; - virtual void Hidden() override; - - void DataNodeHasBeenRemoved(const mitk::DataNode* node); - - protected slots: - - /*! - \brief Sets the fixed Image according to TreeNodeSelector widget - */ - void FixedSelected(mitk::DataNode::Pointer fixedImage); - - /*! - \brief Sets the moving Image according to TreeNodeSelector widget - */ - void MovingSelected(mitk::DataNode::Pointer movingImage); - - /*! - \brief Calculates registration with vtkLandmarkTransform - */ - void calculateLandmarkbased(); - - /*! - \brief Calculates registration with itkLandmarkWarping - */ - void calculateLandmarkWarping(); - - /*! - \brief Calculates registration with ICP and vtkLandmarkTransform - */ - void calculateLandmarkbasedWithICP(); - - /*! - \brief lets the fixed image become invisible and the moving image visible - */ - void HideMovingImage(bool hide); - - /*! - \brief lets the moving image become invisible and the fixed image visible - */ - void HideFixedImage(bool hide); - - /*! - \brief Checks if registration is possible - */ - bool CheckCalculate(); - - /*! - \brief Performs an undo for the last transform. - */ - void UndoTransformation(); - - /*! - \brief Performs a redo for the last undo transform. - */ - void RedoTransformation(); - - /*! - \brief Stores whether the image will be shown in grayvalues or in red for fixed image and green for moving image - - @param show if true, then images will be shown in red and green - */ - void showRedGreen(bool show); - - /*! - \brief Sets the selected opacity for moving image - - @param opacity the selected opacity - */ - void OpacityUpdate(float opacity); - - /*! - \brief Sets the selected opacity for moving image - - @param opacity the selected opacity - */ - void OpacityUpdate(int opacity); - - /*! - \brief Updates the moving landmarks - */ - void updateMovingLandmarksList(); - - /*! - \brief Updates the fixed landmarks - */ - void updateFixedLandmarksList(); - - /*! - \brief Sets the images to gray values or fixed image to red and moving image to green - - @param redGreen if true, then images will be shown in red and green - */ - void setImageColor(bool redGreen); - - /*! - \brief Clears the undo and redo transformation lists. - */ - void clearTransformationLists(); - - /*! - \brief Calculates the landmark error for the selected transformation. - */ - void checkLandmarkError(); - - /*! - \brief Changes the transformation type and calls checkLandmarkError(). - */ - void transformationChanged(int transform); - - /*! - \brief Checks whether the registration can be performed. - */ - bool checkCalculateEnabled(); - - /*! - \brief Performs the registration. - */ - void calculate(); - - void SwitchImages(); - - void OnExportTransformButtonPushed(); - -protected: - - QWidget* m_Parent; - - QScopedPointer m_SelListener; - berry::IStructuredSelection::ConstPointer m_CurrentSelection; - - /*! - * control widget to make all changes for point based registration - */ - Ui::QmitkPointBasedRegistrationControls m_Controls; - mitk::PointSet::Pointer m_FixedLandmarks; - mitk::PointSet::Pointer m_MovingLandmarks; - mitk::DataNode::Pointer m_MovingPointSetNode; - mitk::DataNode::Pointer m_FixedPointSetNode; - mitk::DataNode::Pointer m_MovingNode; - mitk::DataNode::Pointer m_FixedNode; - std::list m_UndoGeometryList; - std::list m_UndoPointsGeometryList; - std::list m_RedoGeometryList; - std::list m_RedoPointsGeometryList; - bool m_ShowRedGreen; - float m_Opacity; - float m_OriginalOpacity; - mitk::Color m_FixedColor; - mitk::Color m_MovingColor; - int m_Transformation; - vtkMatrix4x4 * m_LastTransformMatrix; - bool m_HideFixedImage; - bool m_HideMovingImage; - std::string m_OldFixedLabel; - std::string m_OldMovingLabel; - bool m_Deactivated; - int m_CurrentFixedLandmarksObserverID; - int m_CurrentMovingLandmarksObserverID; - itk::SimpleMemberCommand::Pointer m_FixedLandmarksChangedCommand; - itk::SimpleMemberCommand::Pointer m_MovingLandmarksChangedCommand; -}; -#endif // !defined(QMITK_POINTBASEDREGISTRATION_H__INCLUDED) diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkPointBasedRegistrationViewControls.ui b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkPointBasedRegistrationViewControls.ui deleted file mode 100644 index 60243b102d..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkPointBasedRegistrationViewControls.ui +++ /dev/null @@ -1,711 +0,0 @@ - - - QmitkPointBasedRegistrationControls - - - - 0 - 0 - 506 - 914 - - - - - 0 - 0 - - - - - 0 - 0 - - - - PointBasedRegistration - - - - - - - - - - - 255 - 0 - 0 - - - - - - - - - 255 - 0 - 0 - - - - - - - - - 118 - 116 - 108 - - - - - - - - - - - You have to select two images from Data Manager using CTRL + left click! - - - - - - - Switch fixed and moving image - - - - - - - - 0 - 0 - - - - - 75 - true - - - - Fixed Data - - - true - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - 50 - false - - - - Dataset: - - - false - - - - - - - - - - - - - - - - QFrame::HLine - - - QFrame::Sunken - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - - - - - - - - 75 - true - - - - Moving Data - - - true - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - 50 - false - - - - Dataset: - - - false - - - - - - - - - - - - - - - - - - - 50 - false - - - - Moving Image Opacity: - - - false - - - - - - - - 50 - false - - - - 0% - - - - - - - - 0 - 0 - - - - 100 - - - 50 - - - Qt::Horizontal - - - - - - - - 50 - false - - - - 100% - - - - - - - - - QFrame::HLine - - - QFrame::Sunken - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - - - - - - - - 75 - true - - - - Display Options - - - true - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 50 - false - - - - Show Images Red/Green - - - - - - - - - - - 75 - true - - - - Registration - - - true - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - 50 - false - - - - Method: - - - false - - - - - - - - 0 - 0 - - - - - 50 - false - - - - - Rigid - - - - - Similarity - - - - - Affine - - - - - LandmarkWarping - - - - - - - - - - - 50 - false - - - - Use ICP (order of landmarks doesn't matter) - - - - - - - false - - - - 0 - 0 - - - - - 150 - 0 - - - - - 50 - false - - - - Register - - - - :/QmitkPointBasedRegistrationView/PointBasedRegistration.xpm:/QmitkPointBasedRegistrationView/PointBasedRegistration.xpm - - - - - - - - - - 0 - 0 - - - - - 50 - false - - - - Error between Landmarks (RMS): - - - false - - - - - - - - 0 - 0 - - - - - 50 - false - - - - QFrame::NoFrame - - - QFrame::Raised - - - false - - - 9 - - - QLCDNumber::Flat - - - 0.000000000000000 - - - 0 - - - - - - - - - - - false - - - - 0 - 0 - - - - - 50 - false - - - - Undo Transformation - - - - :/org.mitk.gui.qt.ext/edit-undo.png:/org.mitk.gui.qt.ext/edit-undo.png - - - - - - - false - - - - 0 - 0 - - - - - 50 - false - - - - Redo Transformation - - - - :/org.mitk.gui.qt.ext/edit-redo.png:/org.mitk.gui.qt.ext/edit-redo.png - - - - - - - - - 10 - - - - - - 50 - false - - - - Export last registration matrix: - - - - - - - false - - - - 50 - false - - - - Save Transform - - - - - - - - - Qt::Horizontal - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - QSizePolicy::Ignored - - - - 20 - 40 - - - - - - - - - - QmitkPointListWidget - QWidget -
QmitkPointListWidget.h
-
-
- - mitkDataNode.h - mitkPointSet.h - mitkInteractionConst.h - mitkBaseData.h - - - - - -
diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationSelector.ui b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationSelector.ui deleted file mode 100644 index 0fb5fd08a2..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationSelector.ui +++ /dev/null @@ -1,379 +0,0 @@ - - - QmitkRigidRegistrationSelector - - - - 0 - 0 - 130 - 302 - - - - - 0 - 0 - - - - QmitkRigidRegistrationSelector - - - - 0 - - - 0 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - - 75 - true - - - - Transform - - - true - - - true - - - false - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - false - - - - - - - true - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - - - - - - - - - - - - - 75 - true - - - - Metric - - - true - - - true - - - false - - - - - - true - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - false - - - - - - - - - - - - - - - - - - - 75 - true - - - - Optimizer - - - true - - - true - - - false - - - - 6 - - - 9 - - - - - true - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - false - - - - - - - 0 - - - - - - - - - - - - - - - 75 - true - - - - Qt::StrongFocus - - - Interpolator - - - true - - - true - - - false - - - - 6 - - - 9 - - - - - true - - - QFrame::StyledPanel - - - QFrame::Raised - - - 1 - - - - 0 - - - 0 - - - - - true - - - - 0 - 20 - - - - - 50 - false - - - - false - - - - Linear - - - - - NearestNeighbor - - - - - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - - - - - - - - - - - - mitkDataNode.h - mitkImageRegistrationMethod.h - mitkRenderingManager.h - mitkRigidRegistrationPreset.h - - - - diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationSelectorView.cpp b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationSelectorView.cpp deleted file mode 100644 index 920786aaee..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationSelectorView.cpp +++ /dev/null @@ -1,773 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkImageTimeSelector.h" -#include -#include -#include -#include "mitkMatrixConvert.h" -#include -#include -#include "QmitkLoadPresetDialog.h" -#include -#include "mitkRigidRegistrationPreset.h" - -#include "mitkProgressBar.h" - -#include "QmitkRigidRegistrationSelectorView.h" - -#include "QmitkTranslationTransformView.h" -#include "QmitkScaleTransformView.h" -#include "QmitkScaleLogarithmicTransformView.h" -#include "QmitkAffineTransformView.h" -#include "QmitkFixedCenterOfRotationAffineTransformView.h" -#include "QmitkEuler3DTransformView.h" -#include "QmitkCenteredEuler3DTransformView.h" -#include "QmitkQuaternionRigidTransformView.h" -#include "QmitkVersorTransformView.h" -#include "QmitkVersorRigid3DTransformView.h" -#include "QmitkScaleSkewVersor3DTransformView.h" -#include "QmitkSimilarity3DTransformView.h" -#include "QmitkRigid2DTransformView.h" -#include "QmitkCenteredRigid2DTransformView.h" -#include "QmitkEuler2DTransformView.h" -#include "QmitkSimilarity2DTransformView.h" -#include "QmitkCenteredSimilarity2DTransformView.h" - -#include "QmitkMeanSquaresMetricView.h" -#include "QmitkNormalizedCorrelationMetricView.h" -#include "QmitkGradientDifferenceMetricView.h" -#include "QmitkKullbackLeiblerCompareHistogramMetricView.h" -#include "QmitkCorrelationCoefficientHistogramMetricView.h" -#include "QmitkMeanSquaresHistogramMetricView.h" -#include "QmitkMutualInformationHistogramMetricView.h" -#include "QmitkNormalizedMutualInformationHistogramMetricView.h" -#include "QmitkMattesMutualInformationMetricView.h" -#include "QmitkMeanReciprocalSquareDifferenceMetricView.h" -#include "QmitkMutualInformationMetricView.h" -#include "QmitkMatchCardinalityMetricView.h" -#include "QmitkKappaStatisticMetricView.h" - -#include "QmitkExhaustiveOptimizerView.h" -#include "QmitkGradientDescentOptimizerView.h" -#include "QmitkQuaternionRigidTransformGradientDescentOptimizerView.h" -#include "QmitkLBFGSBOptimizerView.h" -#include "QmitkOnePlusOneEvolutionaryOptimizerView.h" -#include "QmitkPowellOptimizerView.h" -#include "QmitkFRPROptimizerView.h" -#include "QmitkRegularStepGradientDescentOptimizerView.h" -#include "QmitkVersorTransformOptimizerView.h" -#include "QmitkAmoebaOptimizerView.h" -#include "QmitkConjugateGradientOptimizerView.h" -#include "QmitkLBFGSOptimizerView.h" -#include "QmitkSPSAOptimizerView.h" -#include "QmitkVersorRigid3DTransformOptimizerView.h" - -QmitkRigidRegistrationSelectorView::QmitkRigidRegistrationSelectorView(QWidget* parent, Qt::WindowFlags f ) : QWidget( parent, f ), -m_FixedNode(nullptr), m_FixedMaskNode(nullptr), m_MovingNode(nullptr), m_MovingMaskNode(nullptr), m_FixedDimension(0), m_MovingDimension(0), -m_StopOptimization(false), m_GeometryItkPhysicalToWorldTransform(nullptr), m_GeometryWorldToItkPhysicalTransform(nullptr), -m_MovingGeometry(nullptr), m_ImageGeometry(nullptr) -{ - m_Controls.setupUi(parent); - - this->AddTransform(new QmitkTranslationTransformView(this, f)); - this->AddTransform(new QmitkScaleTransformView(this, f)); - this->AddTransform(new QmitkScaleLogarithmicTransformView(this, f)); - this->AddTransform(new QmitkAffineTransformView(this, f)); - this->AddTransform(new QmitkFixedCenterOfRotationAffineTransformView(this, f)); - this->AddTransform(new QmitkEuler3DTransformView(this, f)); - this->AddTransform(new QmitkCenteredEuler3DTransformView(this, f)); - this->AddTransform(new QmitkQuaternionRigidTransformView(this, f)); - this->AddTransform(new QmitkVersorTransformView(this, f)); - this->AddTransform(new QmitkVersorRigid3DTransformView(this, f)); - this->AddTransform(new QmitkScaleSkewVersor3DTransformView(this, f)); - this->AddTransform(new QmitkSimilarity3DTransformView(this, f)); - this->AddTransform(new QmitkRigid2DTransformView(this, f)); - this->AddTransform(new QmitkCenteredRigid2DTransformView(this, f)); - this->AddTransform(new QmitkEuler2DTransformView(this, f)); - this->AddTransform(new QmitkSimilarity2DTransformView(this, f)); - this->AddTransform(new QmitkCenteredSimilarity2DTransformView(this, f)); - - this->AddMetric(new QmitkMeanSquaresMetricView(this, f)); - this->AddMetric(new QmitkNormalizedCorrelationMetricView(this, f)); - this->AddMetric(new QmitkGradientDifferenceMetricView(this, f)); - this->AddMetric(new QmitkKullbackLeiblerCompareHistogramMetricView(this, f)); - this->AddMetric(new QmitkCorrelationCoefficientHistogramMetricView(this, f)); - this->AddMetric(new QmitkMeanSquaresHistogramMetricView(this, f)); - this->AddMetric(new QmitkMutualInformationHistogramMetricView(this, f)); - this->AddMetric(new QmitkNormalizedMutualInformationHistogramMetricView(this, f)); - this->AddMetric(new QmitkMattesMutualInformationMetricView(this, f)); - this->AddMetric(new QmitkMeanReciprocalSquareDifferenceMetricView(this, f)); - this->AddMetric(new QmitkMutualInformationMetricView(this, f)); - this->AddMetric(new QmitkMatchCardinalityMetricView(this, f)); - this->AddMetric(new QmitkKappaStatisticMetricView(this, f)); - - this->AddOptimizer(new QmitkExhaustiveOptimizerView(this, f)); - this->AddOptimizer(new QmitkGradientDescentOptimizerView(this, f)); - this->AddOptimizer(new QmitkQuaternionRigidTransformGradientDescentOptimizerView(this, f)); - this->AddOptimizer(new QmitkLBFGSBOptimizerView(this, f)); - this->AddOptimizer(new QmitkOnePlusOneEvolutionaryOptimizerView(this, f)); - this->AddOptimizer(new QmitkPowellOptimizerView(this, f)); - this->AddOptimizer(new QmitkFRPROptimizerView(this, f)); - this->AddOptimizer(new QmitkRegularStepGradientDescentOptimizerView(this, f)); - this->AddOptimizer(new QmitkVersorTransformOptimizerView(this, f)); - this->AddOptimizer(new QmitkAmoebaOptimizerView(this, f)); - this->AddOptimizer(new QmitkConjugateGradientOptimizerView(this, f)); - this->AddOptimizer(new QmitkLBFGSOptimizerView(this, f)); - this->AddOptimizer(new QmitkSPSAOptimizerView(this, f)); - this->AddOptimizer(new QmitkVersorRigid3DTransformOptimizerView(this, f)); - - m_Observer = mitk::RigidRegistrationObserver::New(); - m_Controls.m_TransformFrame->setEnabled(true); - m_Controls.m_MetricFrame->setEnabled(true); - m_Controls.m_OptimizerFrame->setEnabled(true); - m_Controls.m_InterpolatorFrame->setEnabled(true); - - m_Controls.m_TransformFrame->hide(); - m_Controls.m_MetricFrame->hide(); - m_Controls.m_OptimizerFrame->hide(); - m_Controls.m_InterpolatorFrame->hide(); - m_Controls.m_TransformBox->setCurrentIndex(0); - m_Controls.m_MetricBox->setCurrentIndex(0); - m_Controls.m_OptimizerBox->setCurrentIndex(0); - m_Controls.m_TransformWidgetStack->setCurrentIndex(0); - m_Controls.m_MetricWidgetStack->setCurrentIndex(0); - m_Controls.m_OptimizerWidgetStack->setCurrentIndex(0); - /// and show the selected views - this->TransformSelected(m_Controls.m_TransformBox->currentIndex()); - this->MetricSelected(m_Controls.m_MetricBox->currentIndex()); - this->OptimizerSelected(m_Controls.m_OptimizerBox->currentIndex()); - - - //// create connections - connect( m_Controls.m_TransformGroup, SIGNAL(clicked(bool)), m_Controls.m_TransformFrame, SLOT(setVisible(bool))); - connect( m_Controls.m_TransformBox, SIGNAL(activated(int)), m_Controls.m_TransformWidgetStack, SLOT(setCurrentIndex(int))); - connect( m_Controls.m_TransformBox, SIGNAL(activated(int)), this, SLOT(TransformSelected(int))); - connect( m_Controls.m_MetricBox, SIGNAL(activated(int)), this, SLOT(MetricSelected(int))); - connect( m_Controls.m_OptimizerBox, SIGNAL(activated(int)), this, SLOT(OptimizerSelected(int))); - connect( m_Controls.m_MetricGroup, SIGNAL(clicked(bool)), m_Controls.m_MetricFrame, SLOT(setVisible(bool))); - connect( m_Controls.m_MetricBox, SIGNAL(activated(int)), m_Controls.m_MetricWidgetStack, SLOT(setCurrentIndex(int))); - connect( m_Controls.m_OptimizerGroup, SIGNAL(clicked(bool)), m_Controls.m_OptimizerFrame, SLOT(setVisible(bool))); - connect( m_Controls.m_OptimizerBox, SIGNAL(activated(int)), m_Controls.m_OptimizerWidgetStack, SLOT(setCurrentIndex(int))); - connect( m_Controls.m_InterpolatorGroup, SIGNAL(toggled(bool)), m_Controls.m_InterpolatorFrame, SLOT(setVisible(bool))); - - m_Preset = new mitk::RigidRegistrationPreset(); - m_Preset->LoadPreset(); - - this->DoLoadRigidRegistrationPreset("Affine3D_MattesMutualInf_LinearInterp"); -} - -QmitkRigidRegistrationSelectorView::~QmitkRigidRegistrationSelectorView() -{ -} - -/// this method starts the registration process -void QmitkRigidRegistrationSelectorView::CalculateTransformation(unsigned int timestep) -{ - if (m_FixedNode.IsNotNull() && m_MovingNode.IsNotNull()) - { - emit AddNewTransformationToUndoList(); - - mitk::Image::Pointer fimage = dynamic_cast(m_FixedNode->GetData())->Clone(); - mitk::Image::Pointer mimage = dynamic_cast(m_MovingNode->GetData())->Clone(); - mitk::Image::Pointer mmimage = nullptr; - mitk::Image::Pointer fmimage = nullptr; - if (m_MovingMaskNode.IsNotNull()) - { - mmimage = dynamic_cast(m_MovingMaskNode->GetData()); - } - if (m_FixedMaskNode.IsNotNull()) - { - fmimage = dynamic_cast(m_FixedMaskNode->GetData()); - } - - mitk::ImageTimeSelector::Pointer its = mitk::ImageTimeSelector::New(); - - if(fimage->GetDimension()>3) - { - its->SetInput(fimage); - its->SetTimeNr(timestep); - its->Update(); - fimage = its->GetOutput(); - } - - if(mimage->GetDimension()>3) - { - its->SetInput(mimage); - its->SetTimeNr(timestep); - its->Update(); - mimage = its->GetOutput(); - } - - // Initial moving image geometry - m_ImageGeometry = m_MovingNode->GetData()->GetGeometry()->Clone(); - std::cout << "Moving Image Geometry (IndexToWorldTransform)" << std::endl; - std::cout << m_ImageGeometry->GetIndexToWorldTransform()->GetMatrix(); - mitk::BaseGeometry::TransformType::InputPointType center = m_ImageGeometry->GetIndexToWorldTransform()->GetCenter(); - std::cout << "center " << center[0] << " " << center[1] << " " << center[2] << std::endl; - mitk::BaseGeometry::TransformType::OutputVectorType offset = m_ImageGeometry->GetIndexToWorldTransform()->GetOffset(); - std::cout << "offset " << offset[0] << " " << offset[1] << " " << offset[2] << std::endl; - std::cout << std::endl; - - // Calculate the World to ITK-Physical transform for the moving image - m_MovingGeometry = m_MovingNode->GetData()->GetGeometry(); - - // container that holds all derived moving data, that needs to be transformed with the transformation found by registration - if(m_MovingMaskNode.IsNotNull()) - { - m_ChildNodes.insert(std::pair(m_MovingMaskNode, m_MovingMaskNode->GetData()->GetGeometry()));; - m_ChildNodes2.insert(std::pair(m_MovingMaskNode, m_MovingMaskNode->GetData()->GetGeometry()->Clone())); - } - - if(m_MovingNodeChildren.IsNotNull()) - { - unsigned long size = 0; - size = m_MovingNodeChildren->Size(); - for (unsigned long i = 0; i < size; ++i) - { - m_ChildNodes.insert(std::pair(m_MovingNodeChildren->GetElement(i), m_MovingNodeChildren->GetElement(i)->GetData()->GetGeometry())); - mitk::BaseGeometry::Pointer lopointer = m_MovingNodeChildren->GetElement(i)->GetData()->GetGeometry()->Clone(); - m_ChildNodes2.insert(std::pair(m_MovingNodeChildren->GetElement(i), lopointer)); - } - } - - m_GeometryWorldToItkPhysicalTransform = mitk::BaseGeometry::TransformType::New(); - GetWorldToItkPhysicalTransform(m_MovingGeometry, m_GeometryWorldToItkPhysicalTransform.GetPointer()); - - // Calculate the ITK-Physical to World transform for the fixed image - m_GeometryItkPhysicalToWorldTransform = mitk::BaseGeometry::TransformType::New(); - mitk::BaseGeometry::TransformType::Pointer fixedWorld2Phys = mitk::BaseGeometry::TransformType::New(); - GetWorldToItkPhysicalTransform(m_FixedNode->GetData()->GetGeometry(), fixedWorld2Phys.GetPointer()); - fixedWorld2Phys->GetInverse(m_GeometryItkPhysicalToWorldTransform); - - // init callback - itk::ReceptorMemberCommand::Pointer command = itk::ReceptorMemberCommand::New(); - command->SetCallbackFunction(this, &QmitkRigidRegistrationSelectorView::SetOptimizerValue); - int observer = m_Observer->AddObserver( itk::AnyEvent(), command ); - - std::vector presets; - // init registration method - mitk::ImageRegistrationMethod::Pointer registration = mitk::ImageRegistrationMethod::New(); - - registration->SetNumberOfLevels(3); - - registration->SetObserver(m_Observer); - registration->SetInterpolator(m_Controls.m_InterpolatorBox->currentIndex()); - registration->SetReferenceImage(fimage); - registration->SetInput(mimage); - if (mmimage.IsNotNull()) - { - registration->SetMovingMask(mmimage); - } - if (fmimage.IsNotNull()) - { - registration->SetFixedMask(fmimage); - } - - QmitkRigidRegistrationTransformsGUIBase* current_transform = dynamic_cast(m_Controls.m_TransformWidgetStack->currentWidget()); - QmitkRigidRegistrationMetricsGUIBase* current_metric = dynamic_cast(m_Controls.m_MetricWidgetStack->currentWidget()); - - current_transform->SetFixedImage( dynamic_cast( m_FixedNode->GetData()) ); - current_transform->SetMovingImage( dynamic_cast( m_MovingNode->GetData()) ); - registration->SetOptimizerScales( current_transform->GetScales() ); - registration->SetTransform( current_transform->GetTransform() ); - - current_metric->SetMovingImage( dynamic_cast( m_MovingNode->GetData()) ); - registration->SetMetric( current_metric->GetMetric() ); - - registration->SetOptimizer( dynamic_cast(m_Controls.m_OptimizerWidgetStack->currentWidget())->GetOptimizer() ); - - double time(0.0); - double tstart(0.0); - tstart = clock(); - - try - { - registration->Update(); - } - catch (itk::ExceptionObject e) - { - MITK_INFO("Qmitk.RigidRegistration.Selector") << "Caught exception: "<Progress(20); - } - - time += clock() - tstart; - time = time / CLOCKS_PER_SEC; - - //printOut of the Time - MITK_INFO << "Registration Time: " << time; - - m_Observer->RemoveObserver(observer); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - } -} - -void QmitkRigidRegistrationSelectorView::SetFixedNode( mitk::DataNode * fixedNode ) -{ - m_FixedNode = fixedNode; - m_Controls.m_TransformBox->setCurrentIndex(m_Controls.m_TransformBox->currentIndex()); -} - -void QmitkRigidRegistrationSelectorView::SetFixedDimension( int dimension ) -{ - m_FixedDimension = dimension; -} - -void QmitkRigidRegistrationSelectorView::SetMovingNode( mitk::DataNode * movingNode ) -{ - m_MovingNode = movingNode; - this->TransformSelected(m_Controls.m_TransformBox->currentIndex()); -} - -void QmitkRigidRegistrationSelectorView::SetMovingDimension(int dimension ) -{ - m_MovingDimension = dimension; -} - -// this is a callback function that retrieves the current transformation -// parameters after every step of progress in the optimizer. -// depending on the choosen transformation, we construct a vtktransform -// that will be applied to the geometry of the moving image. -// the values are delivered by mitkRigidRgistrationObserver.cpp -void QmitkRigidRegistrationSelectorView::SetOptimizerValue( const itk::EventObject & ) -{ - if (m_StopOptimization) - { - m_Observer->SetStopOptimization(true); - m_StopOptimization = false; - } - - // retreive optimizer value for the current transformation - double value = m_Observer->GetCurrentOptimizerValue(); - - // retreive current parameterset of the transformation - itk::Array transformParams = m_Observer->GetCurrentTranslation(); - - // init an empty affine transformation that will be filled with - // the corresponding transformation parameters in the following - vtkMatrix4x4* vtkmatrix = vtkMatrix4x4::New(); - vtkmatrix->Identity(); - - // init a transform that will be initialized with the vtkmatrix later - vtkTransform* vtktransform = vtkTransform::New(); - - if (m_MovingNode.IsNotNull()) - { - vtktransform = dynamic_cast(m_Controls.m_TransformWidgetStack->currentWidget())->Transform(vtkmatrix, vtktransform, transformParams); - - // the retrieved transform goes from fixed to moving space. - // invert the transform in order to go from moving to fixed space. - vtkMatrix4x4* vtkmatrix_inv = vtkMatrix4x4::New(); - vtktransform->GetInverse(vtkmatrix_inv); - - // now adapt the moving geometry accordingly - m_MovingGeometry->GetIndexToWorldTransform()->SetIdentity(); - - // the next view lines: Phi(Phys2World)*Phi(Result)*Phi(World2Phy)*Phi(Initial) - - // set moving image geometry to registration result - m_MovingGeometry->SetIndexToWorldTransformByVtkMatrix(vtkmatrix_inv); - - /*std::cout << std::endl; - std::cout << m_MovingGeometry->GetIndexToWorldTransform()->GetMatrix(); - mitk::Geometry3D::TransformType::OutputVectorType offset = m_MovingGeometry->GetIndexToWorldTransform()->GetOffset(); - std::cout << "offset " << offset[0] << " " << offset[1] << " " << offset[2] << std::endl;*/ - - -#if !defined(ITK_IMAGE_BEHAVES_AS_ORIENTED_IMAGE) - // the next few lines: Phi(Phys2World)*Phi(Result)*Phi(World2Phy)*Phi(Initial) - // go to itk physical space before applying the registration result - m_MovingGeometry->Compose(m_GeometryWorldToItkPhysicalTransform, 1); - - // right in the beginning, transform by initial moving image geometry - m_MovingGeometry->Compose(m_ImageGeometry->GetIndexToWorldTransform(), 1); - - // in the end, go back to world space - m_MovingGeometry->Compose(m_GeometryItkPhysicalToWorldTransform, 0); - -#else - m_MovingGeometry->Compose(m_ImageGeometry->GetIndexToWorldTransform(), 1); -#endif - - /*std::cout << std::endl << m_MovingGeometry->GetIndexToWorldTransform()->GetMatrix(); - offset = m_MovingGeometry->GetIndexToWorldTransform()->GetOffset(); - std::cout << "offset " << offset[0] << " " << offset[1] << " " << offset[2] << std::endl << std::endl;*/ - - // now adapt all children geometries accordingly if children exist - std::map::iterator iter; - std::map::iterator iter2; - mitk::DataNode::Pointer childNode; - for( iter = m_ChildNodes.begin(); iter != m_ChildNodes.end(); iter++ ) - { - childNode = (*iter).first; - if (childNode.IsNotNull()) - { - mitk::BaseGeometry* childGeometry; - mitk::BaseGeometry::Pointer childImageGeometry; - // Calculate the World to ITK-Physical transform for the moving mask - childGeometry = (*iter).second; - iter2 = m_ChildNodes2.find(childNode); - childImageGeometry = (*iter2).second; - - childGeometry->GetIndexToWorldTransform()->SetIdentity(); - - // the next view lines: Phi(Phys2World)*Phi(Result)*Phi(World2Phy)*Phi(Initial) - - // set moving mask geometry to registration result - childGeometry->SetIndexToWorldTransformByVtkMatrix(vtkmatrix_inv); - -#if !defined(ITK_IMAGE_BEHAVES_AS_ORIENTED_IMAGE) - // the next few lines: Phi(Phys2World)*Phi(Result)*Phi(World2Phy)*Phi(Initial) - // go to itk physical space before applying the registration result - childGeometry->Compose(m_GeometryWorldToItkPhysicalTransform, 1); - - // right in the beginning, transform by initial moving image geometry - childGeometry->Compose(childImageGeometry->GetIndexToWorldTransform(), 1); - - // in the end, go back to world space - childGeometry->Compose(m_GeometryItkPhysicalToWorldTransform, 0); - -#else - childGeometry->Compose(childImageGeometry->GetIndexToWorldTransform(), 1); -#endif - } - } - - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - } - emit OptimizerChanged(value); -} - -/// this method is called whenever the combobox with the selectable transforms changes -/// responsible for showing the selected transform parameters -void QmitkRigidRegistrationSelectorView::TransformSelected( int transform ) -{ - if (m_FixedNode.IsNotNull()) - { - dynamic_cast(m_Controls.m_TransformWidgetStack->widget(transform))->SetFixedImage(dynamic_cast(m_FixedNode->GetData())); - } - if (m_MovingNode.IsNotNull()) - { - dynamic_cast(m_Controls.m_TransformWidgetStack->widget(transform))->SetMovingImage(dynamic_cast(m_MovingNode->GetData())); - } - int numberOfTransformParameters = dynamic_cast(m_Controls.m_TransformWidgetStack->widget(transform))->GetNumberOfTransformParameters(); - dynamic_cast(m_Controls.m_OptimizerWidgetStack->currentWidget())->SetNumberOfTransformParameters(numberOfTransformParameters); - - //set fixed height - m_Controls.m_TransformWidgetStack->setFixedHeight( dynamic_cast(m_Controls.m_TransformWidgetStack->widget(transform))->minimumSizeHint().height() ); - this->OptimizerSelected(m_Controls.m_OptimizerWidgetStack->currentIndex()); -} - -/// this method is called whenever the combobox with the selectable metrics changes -/// responsible for showing the selected metric parameters -void QmitkRigidRegistrationSelectorView::MetricSelected( int metric ) -{ - if (m_FixedNode.IsNotNull()) - { - dynamic_cast(m_Controls.m_MetricWidgetStack->widget(metric))->SetMovingImage(dynamic_cast(m_MovingNode->GetData())); - } - - //set fixed height - m_Controls.m_MetricWidgetStack->setFixedHeight( dynamic_cast(m_Controls.m_MetricWidgetStack->widget(metric))->minimumSizeHint().height() ); -} - -/// this method is called whenever the combobox with the selectable optimizers changes -/// responsible for showing the selected optimizer parameters -void QmitkRigidRegistrationSelectorView::OptimizerSelected( int optimizer ) -{ - int numberOfTransformParameters = dynamic_cast(m_Controls.m_TransformWidgetStack->currentWidget())->GetNumberOfTransformParameters(); - dynamic_cast(m_Controls.m_OptimizerWidgetStack->widget(optimizer))->SetNumberOfTransformParameters(numberOfTransformParameters); - - //set fixed height - m_Controls.m_OptimizerWidgetStack->setFixedHeight( dynamic_cast(m_Controls.m_OptimizerWidgetStack->widget(optimizer))->minimumSizeHint().height() ); -} - -void QmitkRigidRegistrationSelectorView::LoadRigidRegistrationParameter() -{ - this->DoLoadRigidRegistrationParameter(); -} - -void QmitkRigidRegistrationSelectorView::DoLoadRigidRegistrationParameter() -{ - std::map > existingPresets; - existingPresets = m_Preset->getTransformValuesPresets(); - - std::map >::iterator iter; - std::list presets; - for( iter = existingPresets.begin(); iter != existingPresets.end(); iter++ ) - { - presets.push_back( (*iter).first ); - } - if (presets.empty()) - { - QMessageBox::warning( nullptr, "RigidRegistrationParameters.xml", "RigidRegistrationParameters.xml is empty/does not exist. There are no presets to select."); - return; - } - presets.sort(); - // ask about the name to load a preset - QmitkLoadPresetDialog dialog( this, nullptr, "Load Preset", presets ); // needs a QWidget as parent - int dialogReturnValue = dialog.exec(); - if ( dialogReturnValue == QDialog::Rejected ) return; // user clicked cancel or pressed Esc or something similar - - this->DoLoadRigidRegistrationPreset(dialog.GetPresetName()); -} - -void QmitkRigidRegistrationSelectorView::LoadRigidRegistrationPresetParameter(QString preset_name) -{ - this->DoLoadRigidRegistrationPreset(preset_name.toStdString() ); -} - -void QmitkRigidRegistrationSelectorView::DoLoadRigidRegistrationPreset(std::string presetName) -{ - itk::Array transformValues; - transformValues = m_Preset->getTransformValues(presetName); - - if( transformValues.size() == 0 ) - { - MITK_ERROR("RigidRegistration.Selector.View") << "Failed to load preset : " << presetName; - return; - } - - m_Controls.m_TransformGroup->setChecked(true); - m_Controls.m_TransformFrame->setVisible(true); - m_Controls.m_TransformBox->setCurrentIndex((int)transformValues[0]); - m_Controls.m_TransformWidgetStack->setCurrentIndex((int)transformValues[0]); - this->TransformSelected((int)transformValues[0]); - itk::Array transformValuesForGUI; - transformValuesForGUI.SetSize(transformValues.Size()); - transformValuesForGUI.fill(0); - for (unsigned int i = 1; i < transformValues.Size(); i++) - { - transformValuesForGUI[i-1] = transformValues[i]; - } - dynamic_cast(m_Controls.m_TransformWidgetStack->currentWidget())->SetTransformParameters(transformValuesForGUI); - - itk::Array metricValues; - metricValues = m_Preset->getMetricValues(presetName); - - m_Controls.m_MetricGroup->setChecked(true); - m_Controls.m_MetricFrame->setVisible(true); - m_Controls.m_MetricBox->setCurrentIndex((int)metricValues[0]); - m_Controls.m_MetricWidgetStack->setCurrentIndex((int)metricValues[0]); - this->MetricSelected((int)metricValues[0]); - itk::Array metricValuesForGUI; - metricValuesForGUI.SetSize(metricValues.Size()); - metricValuesForGUI.fill(0); - for (unsigned int i = 1; i < metricValues.Size(); i++) - { - metricValuesForGUI[i-1] = metricValues[i]; - } - dynamic_cast(m_Controls.m_MetricWidgetStack->currentWidget())->SetMetricParameters(metricValuesForGUI); - - itk::Array optimizerValues; - optimizerValues = m_Preset->getOptimizerValues(presetName); - - m_Controls.m_OptimizerGroup->setChecked(true); - m_Controls.m_OptimizerFrame->setVisible(true); - m_Controls.m_OptimizerBox->setCurrentIndex((int)optimizerValues[0]); - m_Controls.m_OptimizerWidgetStack->setCurrentIndex((int)optimizerValues[0]); - this->OptimizerSelected((int)optimizerValues[0]); - itk::Array optimizerValuesForGUI; - optimizerValuesForGUI.SetSize(optimizerValues.Size()); - optimizerValuesForGUI.fill(0); - for (unsigned int i = 1; i < optimizerValues.Size(); i++) - { - optimizerValuesForGUI[i-1] = optimizerValues[i]; - } - dynamic_cast(m_Controls.m_OptimizerWidgetStack->currentWidget())->SetOptimizerParameters(optimizerValuesForGUI); - - itk::Array interpolatorValues; - interpolatorValues = m_Preset->getInterpolatorValues(presetName); - - m_Controls.m_InterpolatorGroup->setChecked(true); - m_Controls.m_InterpolatorFrame->setVisible(true); - m_Controls.m_InterpolatorBox->setCurrentIndex((int)interpolatorValues[0]); -} - -void QmitkRigidRegistrationSelectorView::SaveRigidRegistrationParameter() -{ - this->DoSaveRigidRegistrationParameter(); -} - - -void QmitkRigidRegistrationSelectorView::DoSaveRigidRegistrationParameter() -{ - bool ok; - QString text = QInputDialog::getText(this, - "Save Parameter Preset", "Enter name for preset:", QLineEdit::Normal, - QString::null, &ok ); - if ( ok ) - { - std::map > existingPresets; - existingPresets = m_Preset->getTransformValuesPresets(); - - auto iter = existingPresets.find(std::string((const char*)text.toLatin1())); - if (iter != existingPresets.end()) - { - QMessageBox::critical( this, "Preset definition", - "Presetname already exists."); - return; - } - if (text.isEmpty()) - { - QMessageBox::critical( this, "Preset definition", - "Presetname has to be set.\n" - "You have to enter a Presetname." ); - return; - } - itk::Array transformValues; - transformValues.SetSize(25); - transformValues.fill(0); - transformValues[0] = m_Controls.m_TransformBox->currentIndex(); - - itk::Array transformValuesFromGUI = dynamic_cast(m_Controls.m_TransformWidgetStack->currentWidget())->GetTransformParameters(); - for (unsigned int i = 0; i < transformValuesFromGUI.Size(); i++) - { - transformValues[i+1] = transformValuesFromGUI[i]; - } - - std::map > transformMap; - transformMap = m_Preset->getTransformValuesPresets(); - - transformMap[std::string((const char*)text.toLatin1())] = transformValues; - - itk::Array metricValues; - metricValues.SetSize(25); - metricValues.fill(0); - metricValues[0] = m_Controls.m_MetricBox->currentIndex(); - itk::Array metricValuesFromGUI = dynamic_cast(m_Controls.m_MetricWidgetStack->currentWidget())->GetMetricParameters(); - for (unsigned int i = 0; i < metricValuesFromGUI.Size(); i++) - { - metricValues[i+1] = metricValuesFromGUI[i]; - } - - std::map > metricMap; - metricMap = m_Preset->getMetricValuesPresets(); - - metricMap[std::string((const char*)text.toLatin1())] = metricValues; - - itk::Array optimizerValues; - optimizerValues.SetSize(25); - optimizerValues.fill(0); - optimizerValues[0] = m_Controls.m_OptimizerBox->currentIndex(); - itk::Array optimizerValuesFromGUI = dynamic_cast(m_Controls.m_OptimizerWidgetStack->currentWidget())->GetOptimizerParameters(); - for (unsigned int i = 0; i < optimizerValuesFromGUI.Size(); i++) - { - optimizerValues[i+1] = optimizerValuesFromGUI[i]; - } - - std::map > optimizerMap; - optimizerMap = m_Preset->getOptimizerValuesPresets(); - - optimizerMap[std::string((const char*)text.toLatin1())] = optimizerValues; - - itk::Array interpolatorValues; - interpolatorValues.SetSize(25); - interpolatorValues.fill(0); - interpolatorValues[0] = m_Controls.m_InterpolatorBox->currentIndex(); - - std::map > interpolatorMap; - interpolatorMap = m_Preset->getInterpolatorValuesPresets(); - - interpolatorMap[std::string((const char*)text.toLatin1())] = interpolatorValues; - - m_Preset->newPresets(transformMap, metricMap, optimizerMap, interpolatorMap); - - } - else - { - // user pressed Cancel - } -} - -void QmitkRigidRegistrationSelectorView::StopOptimization(bool stopOptimization) -{ - m_StopOptimization = stopOptimization; -} - -int QmitkRigidRegistrationSelectorView::GetSelectedTransform() -{ - return m_Controls.m_TransformBox->currentIndex(); -} - -void QmitkRigidRegistrationSelectorView::SetFixedMaskNode( mitk::DataNode * fixedMaskNode ) -{ - m_FixedMaskNode = fixedMaskNode; - this->TransformSelected(m_Controls.m_TransformBox->currentIndex()); -} - -void QmitkRigidRegistrationSelectorView::SetMovingMaskNode( mitk::DataNode * movingMaskNode ) -{ - m_MovingMaskNode = movingMaskNode; - this->TransformSelected(m_Controls.m_TransformBox->currentIndex()); -} - -void QmitkRigidRegistrationSelectorView::SetMovingNodeChildren(mitk::DataStorage::SetOfObjects::ConstPointer children) -{ - m_MovingNodeChildren = children; -} - -void QmitkRigidRegistrationSelectorView::AddTransform(QmitkRigidRegistrationTransformsGUIBase* transform) -{ - m_Controls.m_TransformBox->addItem(transform->GetName()); - int i = 0; - if (!dynamic_cast(m_Controls.m_TransformWidgetStack->widget(i))) - { - m_Controls.m_TransformWidgetStack->addWidget(transform); - m_Controls.m_TransformWidgetStack->removeWidget(m_Controls.m_TransformWidgetStack->widget(i)); - transform->SetupUI(m_Controls.m_TransformWidgetStack->widget(i)); - } - else - { - i = m_Controls.m_TransformWidgetStack->addWidget(transform); - transform->SetupUI(m_Controls.m_TransformWidgetStack->widget(i)); - } -} - -void QmitkRigidRegistrationSelectorView::AddMetric(QmitkRigidRegistrationMetricsGUIBase* metric) -{ - m_Controls.m_MetricBox->addItem(metric->GetName()); - int i = 0; - if (!dynamic_cast(m_Controls.m_MetricWidgetStack->widget(i))) - { - m_Controls.m_MetricWidgetStack->addWidget(metric); - m_Controls.m_MetricWidgetStack->removeWidget(m_Controls.m_MetricWidgetStack->widget(i)); - metric->SetupUI(m_Controls.m_MetricWidgetStack->widget(i)); - } - else - { - i = m_Controls.m_MetricWidgetStack->addWidget(metric); - metric->SetupUI(m_Controls.m_MetricWidgetStack->widget(i)); - } -} - -void QmitkRigidRegistrationSelectorView::AddOptimizer(QmitkRigidRegistrationOptimizerGUIBase* optimizer) -{ - m_Controls.m_OptimizerBox->addItem(optimizer->GetName()); - int i = 0; - if (!dynamic_cast(m_Controls.m_OptimizerWidgetStack->widget(i))) - { - m_Controls.m_OptimizerWidgetStack->addWidget(optimizer); - m_Controls.m_OptimizerWidgetStack->removeWidget(m_Controls.m_OptimizerWidgetStack->widget(i)); - optimizer->SetupUI(m_Controls.m_OptimizerWidgetStack->widget(i)); - } - else - { - i = m_Controls.m_OptimizerWidgetStack->addWidget(optimizer); - optimizer->SetupUI(m_Controls.m_OptimizerWidgetStack->widget(i)); - } -} diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationSelectorView.h b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationSelectorView.h deleted file mode 100644 index 13406db5e7..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationSelectorView.h +++ /dev/null @@ -1,111 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QmitkRigidRegistrationSelectorViewWidgetHIncluded -#define QmitkRigidRegistrationSelectorViewWidgetHIncluded - -#include "mitkDataNode.h" -#include "mitkDataStorage.h" -#include "ui_QmitkRigidRegistrationSelector.h" -#include "qobject.h" -#include -#include "QmitkRigidRegistrationTransformsGUIBase.h" -#include "QmitkRigidRegistrationMetricsGUIBase.h" -#include "QmitkRigidRegistrationOptimizerGUIBase.h" - - -/*! -* \brief Widget for rigid registration -* -* Displays options for rigid registration. -*/ -class REGISTRATION_EXPORT QmitkRigidRegistrationSelectorView : public QWidget -{ - Q_OBJECT - -public: - - QmitkRigidRegistrationSelectorView( QWidget* parent = nullptr, Qt::WindowFlags f = nullptr ); - ~QmitkRigidRegistrationSelectorView(); - - signals: - void TransformChanged(); - void OptimizerChanged(double value); - void AddNewTransformationToUndoList(); - - public slots: - void SetFixedNode( mitk::DataNode * fixedNode ); - void SetFixedMaskNode(mitk::DataNode * fixedMaskNode ); - void SetFixedDimension( int dimension ); - void SetMovingNode( mitk::DataNode * movingNode ); - void SetMovingNodeChildren(mitk::DataStorage::SetOfObjects::ConstPointer children); - void SetMovingMaskNode(mitk::DataNode * movingMaskNode ); - void SetMovingDimension(int dimension ); - int GetSelectedTransform(); - void CalculateTransformation(unsigned int timestep = 0); - void StopOptimization(bool stopOptimization); - - protected slots: - // this is a callback function that retrieves the current transformation - // parameters after every step of progress in the optimizer. - // depending on the choosen transformation, we construct a vtktransform - // that will be applied to the geometry of the moving image. - // the values are delivered by mitkRigidRgistrationObserver.cpp - void SetOptimizerValue( const itk::EventObject & ); - /// this method is called whenever the combobox with the selectable transforms changes - /// responsible for showing the selected transformparameters - void TransformSelected( int transform ); - /// this method is called whenever the combobox with the selectable metrics changes - /// responsible for showing the selected metricparameters - void MetricSelected( int metric ); - /// this method is called whenever the combobox with the selectable optimizer changes - /// responsible for showing the selected optimizerparameters - void OptimizerSelected( int optimizer ); - - void LoadRigidRegistrationParameter(); - void SaveRigidRegistrationParameter(); - //void LoadRigidRegistrationTestParameter(); - //void SaveRigidRegistrationTestParameter(); - void DoLoadRigidRegistrationParameter(); - void DoLoadRigidRegistrationPreset(std::string presetName); - void DoSaveRigidRegistrationParameter(); - void AddTransform(QmitkRigidRegistrationTransformsGUIBase* transform); - void AddMetric(QmitkRigidRegistrationMetricsGUIBase* metric); - void AddOptimizer(QmitkRigidRegistrationOptimizerGUIBase* optimizer); - - void LoadRigidRegistrationPresetParameter(QString preset_name); -protected: - - Ui::QmitkRigidRegistrationSelector m_Controls; - mitk::DataNode::Pointer m_FixedNode; - mitk::DataNode::Pointer m_FixedMaskNode; - mitk::DataNode::Pointer m_MovingNode; - mitk::DataNode::Pointer m_MovingMaskNode; - int m_FixedDimension; - int m_MovingDimension; - bool m_StopOptimization; - mitk::RigidRegistrationPreset* m_Preset; - mitk::BaseGeometry::TransformType::Pointer m_GeometryItkPhysicalToWorldTransform; - mitk::BaseGeometry::TransformType::Pointer m_GeometryWorldToItkPhysicalTransform; - mitk::BaseGeometry* m_MovingGeometry; - mitk::BaseGeometry::Pointer m_ImageGeometry; - mitk::RigidRegistrationObserver::Pointer m_Observer; - mitk::DataStorage::SetOfObjects::ConstPointer m_MovingNodeChildren; - std::map m_ChildNodes; - std::map m_ChildNodes2; -}; - -#endif diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationView.cpp b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationView.cpp deleted file mode 100644 index 8a309d2c4b..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationView.cpp +++ /dev/null @@ -1,1559 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -// Qmitk includes -#include "QmitkRigidRegistrationView.h" - -// MITK includes -#include "mitkDataNodeObject.h" -#include -#include "mitkManualSegmentationToSurfaceFilter.h" -#include -#include -#include -#include "mitkNodePredicateDataType.h" -#include "mitkNodePredicateAnd.h" -#include "mitkNodePredicateProperty.h" - -// QT includes -#include "qinputdialog.h" -#include "qmessagebox.h" -#include "qcursor.h" -#include "qapplication.h" -#include "qradiobutton.h" -#include "qslider.h" -#include "qtooltip.h" - -// VTK includes -#include - -// ITK includes -#include - -// BlueBerry includes -#include "berryIWorkbenchWindow.h" -#include "berryISelectionService.h" - -const std::string QmitkRigidRegistrationView::VIEW_ID = "org.mitk.views.rigidregistration"; - -using namespace berry; - -struct SelListenerRigidRegistration : ISelectionListener -{ - berryObjectMacro(SelListenerRigidRegistration); - - SelListenerRigidRegistration(QmitkRigidRegistrationView* view) - { - m_View = view; - } - - void DoSelectionChanged(ISelection::ConstPointer selection) - { - // save current selection in member variable - m_View->m_CurrentSelection = selection.Cast(); - - // do something with the selected items - if(m_View->m_CurrentSelection) - { - if (m_View->m_CurrentSelection->Size() != 2) - { - if (m_View->m_FixedNode.IsNull() || m_View->m_MovingNode.IsNull()) - { - m_View->m_Controls.m_StatusLabel->show(); - m_View->m_Controls.TextLabelFixed->hide(); - m_View->m_Controls.m_FixedLabel->hide(); - m_View->m_Controls.TextLabelMoving->hide(); - m_View->m_Controls.m_MovingLabel->hide(); - m_View->m_Controls.m_UseMaskingCB->hide(); - m_View->m_Controls.m_OpacityLabel->setEnabled(false); - m_View->m_Controls.m_OpacitySlider->setEnabled(false); - m_View->m_Controls.label->setEnabled(false); - m_View->m_Controls.label_2->setEnabled(false); - m_View->m_Controls.m_ShowRedGreenValues->setEnabled(false); - m_View->m_Controls.m_SwitchImages->hide(); - } - } - else - { - m_View->m_Controls.m_StatusLabel->hide(); - bool foundFixedImage = false; - mitk::DataNode::Pointer fixedNode; - // iterate selection - for (IStructuredSelection::iterator i = m_View->m_CurrentSelection->Begin(); - i != m_View->m_CurrentSelection->End(); ++i) - { - // extract datatree node - if (mitk::DataNodeObject::Pointer nodeObj = i->Cast()) - { - mitk::DataNode::Pointer node = nodeObj->GetDataNode(); - // only look at interesting types - if(QString("Image").compare(node->GetData()->GetNameOfClass())==0) - { - if (dynamic_cast(node->GetData())->GetDimension() == 4) - { - m_View->m_Controls.m_StatusLabel->show(); - QMessageBox::information( NULL, "RigidRegistration", "Only 2D or 3D images can be processed.", QMessageBox::Ok ); - return; - } - if (foundFixedImage == false) - { - fixedNode = node; - foundFixedImage = true; - } - else - { - // m_View->SetImagesVisible(selection); - m_View->FixedSelected(fixedNode); - m_View->MovingSelected(node); - m_View->m_Controls.m_StatusLabel->hide(); - m_View->m_Controls.TextLabelFixed->show(); - m_View->m_Controls.m_FixedLabel->show(); - m_View->m_Controls.TextLabelMoving->show(); - m_View->m_Controls.m_MovingLabel->show(); - m_View->m_Controls.m_UseMaskingCB->show(); - m_View->m_Controls.m_OpacityLabel->setEnabled(true); - m_View->m_Controls.m_OpacitySlider->setEnabled(true); - m_View->m_Controls.label->setEnabled(true); - m_View->m_Controls.label_2->setEnabled(true); - m_View->m_Controls.m_ShowRedGreenValues->setEnabled(true); - } - } - else - { - m_View->m_Controls.m_StatusLabel->show(); - return; - } - } - } - } - } - else if (m_View->m_FixedNode.IsNull() || m_View->m_MovingNode.IsNull()) - { - m_View->m_Controls.m_StatusLabel->show(); - } - } - - void SelectionChanged(const IWorkbenchPart::Pointer& part, - const ISelection::ConstPointer& selection) override - { - // check, if selection comes from datamanager - if (part) - { - QString partname = part->GetPartName(); - if(partname == "Data Manager") - { - // apply selection - DoSelectionChanged(selection); - } - } - } - - QmitkRigidRegistrationView* m_View; -}; - -QmitkRigidRegistrationView::QmitkRigidRegistrationView(QObject * /*parent*/, const char * /*name*/) -: QmitkAbstractView(), - m_MovingNode(NULL), - m_MovingMaskNode(NULL), - m_FixedNode(NULL), - m_FixedMaskNode(NULL), - m_ShowRedGreen(false), - m_Opacity(0.5), - m_OriginalOpacity(1.0), - m_Deactivated(false), - m_FixedDimension(0), - m_MovingDimension(0), - m_PresetSelected(false), - m_PresetNotLoaded(false) -{ - m_TranslateSliderPos[0] = 0; - m_TranslateSliderPos[1] = 0; - m_TranslateSliderPos[2] = 0; - - m_RotateSliderPos[0] = 0; - m_RotateSliderPos[1] = 0; - m_RotateSliderPos[2] = 0; - - m_ScaleSliderPos[0] = 0; - m_ScaleSliderPos[1] = 0; - m_ScaleSliderPos[2] = 0; - - translationParams = new int[3]; - rotationParams = new int[3]; - scalingParams = new int[3]; - - m_PresetSelected = false; - - m_TimeStepperAdapter = NULL; - - this->GetDataStorage()->RemoveNodeEvent.AddListener(mitk::MessageDelegate1 ( this, &QmitkRigidRegistrationView::DataNodeHasBeenRemoved )); -} - -QmitkRigidRegistrationView::~QmitkRigidRegistrationView() -{ - if(m_SelListener) - { - berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService(); - if(s) s->RemovePostSelectionListener(m_SelListener.data()); - } - - this->GetDataStorage()->RemoveNodeEvent.RemoveListener(mitk::MessageDelegate1 ( this, &QmitkRigidRegistrationView::DataNodeHasBeenRemoved )); -} - -void QmitkRigidRegistrationView::CreateQtPartControl(QWidget* parent) -{ - m_Parent = parent; - m_Controls.setupUi(parent); - m_Controls.m_ManualFrame->hide(); - m_Controls.timeSlider->hide(); - m_Controls.TextLabelFixed->hide(); - m_Controls.m_FixedLabel->hide(); - m_Controls.TextLabelMoving->hide(); - m_Controls.m_MovingLabel->hide(); - m_Controls.m_UseMaskingCB->hide(); - m_Controls.m_OpacityLabel->setEnabled(false); - m_Controls.m_OpacitySlider->setEnabled(false); - m_Controls.label->setEnabled(false); - m_Controls.label_2->setEnabled(false); - m_Controls.m_ShowRedGreenValues->setEnabled(false); - m_Controls.m_SwitchImages->hide(); - if (m_Controls.m_RigidTransform->currentIndex() == 1) - { - m_Controls.frame->show(); - } - else - { - m_Controls.frame->hide(); - } - m_Controls.m_ManualFrame->setEnabled(false); - m_Parent->setEnabled(false); - - this->m_Controls.m_RigidTransform->removeTab(1); - - mitk::NodePredicateAnd::Pointer andPred = // we want binary images in the selectors - mitk::NodePredicateAnd::New(mitk::NodePredicateDataType::New("Image"), - mitk::NodePredicateProperty::New("binary", mitk::BoolProperty::New(true))); - - m_Controls.m_FixedImageCB->SetPredicate(andPred); - m_Controls.m_FixedImageCB->SetDataStorage(this->GetDataStorage()); - m_Controls.m_FixedImageCB->hide(); - m_Controls.m_FixedMaskLB->hide(); - - m_Controls.m_MovingImageCB->SetPredicate(andPred); - m_Controls.m_MovingImageCB->SetDataStorage(this->GetDataStorage()); - m_Controls.m_MovingImageCB->hide(); - m_Controls.m_MovingMaskLB->hide(); - - this->CreateConnections(); - this->CheckCalculateEnabled(); - - mitk::RigidRegistrationPreset* preset = new mitk::RigidRegistrationPreset(); - preset->LoadPreset(); - - this->FillPresetComboBox( preset->getAvailablePresets() ); - this->m_Controls.m_LoadRigidRegistrationParameter->setEnabled(false); -} - -void QmitkRigidRegistrationView::SetFocus() -{ - m_Controls.m_SwitchImages->setFocus(); -} - -void QmitkRigidRegistrationView::FillPresetComboBox( const std::list< std::string>& presets) -{ - this->m_Controls.m_RigidRegistrationPresetBox->addItem( QString("== select a registration configuration ==") ); - for( const std::string &preset : presets ) - { - this->m_Controls.m_RigidRegistrationPresetBox->addItem( QString(preset.c_str()) ); - } -} - -void QmitkRigidRegistrationView::PresetSelectionChanged() -{ - // first item is blank == no preset selected - bool validPresetSelected = (this->m_Controls.m_RigidRegistrationPresetBox->currentIndex() > 0); - - if (validPresetSelected) - { - this->m_Controls.m_LoadRigidRegistrationParameter->setEnabled(true); - - // selection chaged, disable unter the preset is loaded - this->m_PresetNotLoaded = true; - this->m_Controls.m_CalculateTransformation->setEnabled(false); - } - else - { - // reset preset view - this->m_Controls.m_LoadRigidRegistrationParameter->setEnabled(false); - // THE QT5 solution : this->m_Controls.m_RigidRegistrationPresetBox->currentIndexChanged(0); - this->m_Controls.m_RigidRegistrationPresetBox->setCurrentIndex(0); - this->m_PresetNotLoaded = true; - - // disable calculate button - this->m_Controls.m_CalculateTransformation->setEnabled(false); - - } - -} - -void QmitkRigidRegistrationView::LoadSelectedPreset() -{ - this->m_Controls.m_LoadRigidRegistrationParameter->setEnabled(false); - - QString current_item = this->m_Controls.m_RigidRegistrationPresetBox->currentText(); - emit PresetSelected(current_item); - - // first item is blank == no preset selected - m_PresetSelected = ( this->m_Controls.m_RigidRegistrationPresetBox->currentIndex() > 0 ); - m_PresetNotLoaded = false; - - this->CheckCalculateEnabled(); -} - -void QmitkRigidRegistrationView::RenderWindowPartActivated(mitk::IRenderWindowPart* renderWindowPart) -{ - m_Parent->setEnabled(true); - if (auto linkedRenderWindowPart = dynamic_cast(renderWindowPart)) - { - linkedRenderWindowPart->EnableSlicingPlanes(true); - } -} - -void QmitkRigidRegistrationView::RenderWindowPartDeactivated(mitk::IRenderWindowPart* renderWindowPart) -{ - m_Parent->setEnabled(false); -} - -void QmitkRigidRegistrationView::CreateConnections() -{ - connect( m_Controls.m_ManualRegistrationCheckbox, SIGNAL(toggled(bool)), this, SLOT(ShowManualRegistrationFrame(bool))); - connect((QObject*)(m_Controls.m_SwitchImages),SIGNAL(clicked()),this,SLOT(SwitchImages())); - connect(m_Controls.m_ShowRedGreenValues, SIGNAL(toggled(bool)), this, SLOT(ShowRedGreen(bool))); - connect(m_Controls.m_ShowContour, SIGNAL(toggled(bool)), this, SLOT(EnableContour(bool))); - //connect(m_Controls.m_UseFixedImageMask, SIGNAL(toggled(bool)), this, SLOT(UseFixedMaskImageChecked(bool))); - //connect(m_Controls.m_UseMovingImageMask, SIGNAL(toggled(bool)), this, SLOT(UseMovingMaskImageChecked(bool))); - connect(m_Controls.m_RigidTransform, SIGNAL(currentChanged(int)), this, SLOT(TabChanged(int))); - connect(m_Controls.m_OpacitySlider, SIGNAL(valueChanged(int)), this, SLOT(OpacityUpdate(int))); - connect(m_Controls.m_ContourSlider, SIGNAL(sliderReleased()), this, SLOT(ShowContour())); - - connect(m_Controls.m_CalculateTransformation, SIGNAL(clicked()), this, SLOT(Calculate())); - connect(m_Controls.m_UndoTransformation,SIGNAL(clicked()),this,SLOT(UndoTransformation())); - connect(m_Controls.m_RedoTransformation,SIGNAL(clicked()),this,SLOT(RedoTransformation())); - connect(m_Controls.m_AutomaticTranslation,SIGNAL(clicked()),this,SLOT(AlignCenters())); - connect(m_Controls.m_StopOptimization,SIGNAL(clicked()), this , SLOT(StopOptimizationClicked())); - connect(m_Controls.m_XTransSlider, SIGNAL(valueChanged(int)), this, SLOT(xTrans_valueChanged(int))); - connect(m_Controls.m_YTransSlider, SIGNAL(valueChanged(int)), this, SLOT(yTrans_valueChanged(int))); - connect(m_Controls.m_ZTransSlider, SIGNAL(valueChanged(int)), this, SLOT(zTrans_valueChanged(int))); - connect(m_Controls.m_XRotSlider, SIGNAL(valueChanged(int)), this, SLOT(xRot_valueChanged(int))); - connect(m_Controls.m_YRotSlider, SIGNAL(valueChanged(int)), this, SLOT(yRot_valueChanged(int))); - connect(m_Controls.m_ZRotSlider, SIGNAL(valueChanged(int)), this, SLOT(zRot_valueChanged(int))); - connect(m_Controls.m_XScaleSlider, SIGNAL(valueChanged(int)), this, SLOT(xScale_valueChanged(int))); - connect(m_Controls.m_YScaleSlider, SIGNAL(valueChanged(int)), this, SLOT(yScale_valueChanged(int))); - connect(m_Controls.m_ZScaleSlider, SIGNAL(valueChanged(int)), this, SLOT(zScale_valueChanged(int))); - - /*connect(m_Controls.m_LoadRigidRegistrationParameter, SIGNAL(clicked()), m_Controls.qmitkRigidRegistrationSelector1, SLOT(LoadRigidRegistrationParameter())); - connect(m_Controls.m_SaveRigidRegistrationParameter, SIGNAL(clicked()), m_Controls.qmitkRigidRegistrationSelector1, SLOT(SaveRigidRegistrationParameter())); - connect(m_Controls.m_LoadRigidRegistrationTestParameter, SIGNAL(clicked()), m_Controls.qmitkRigidRegistrationSelector1, SLOT(LoadRigidRegistrationTestParameter())); - connect(m_Controls.m_SaveRigidRegistrationTestParameter, SIGNAL(clicked()), m_Controls.qmitkRigidRegistrationSelector1, SLOT(SaveRigidRegistrationTestParameter()));*/ - connect(this, SIGNAL(PresetSelected(QString)), m_Controls.qmitkRigidRegistrationSelector1, SLOT(LoadRigidRegistrationPresetParameter(QString) ) ); - connect(m_Controls.m_LoadRigidRegistrationParameter, SIGNAL(clicked()), this, SLOT(LoadSelectedPreset()) ); - connect(m_Controls.m_RigidRegistrationPresetBox, SIGNAL(activated(int)), this, SLOT(PresetSelectionChanged()) ); - - - connect(m_Controls.qmitkRigidRegistrationSelector1,SIGNAL(OptimizerChanged(double)),this,SLOT(SetOptimizerValue( double ))); - connect(m_Controls.qmitkRigidRegistrationSelector1,SIGNAL(TransformChanged()),this,SLOT(CheckCalculateEnabled())); - connect(m_Controls.qmitkRigidRegistrationSelector1,SIGNAL(AddNewTransformationToUndoList()),this,SLOT(AddNewTransformationToUndoList())); - connect(m_Controls.m_UseMaskingCB, SIGNAL(stateChanged(int)),this,SLOT(OnUseMaskingChanged(int))); - connect(m_Controls.m_FixedImageCB, SIGNAL(OnSelectionChanged(const mitk::DataNode*)),this,SLOT(OnFixedMaskImageChanged(const mitk::DataNode*))); - connect(m_Controls.m_MovingImageCB, SIGNAL(OnSelectionChanged(const mitk::DataNode*)),this,SLOT(OnMovingMaskImageChanged(const mitk::DataNode*))); -} - -void QmitkRigidRegistrationView::Activated() -{ - m_Deactivated = false; - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - - if (m_SelListener.isNull()) - { - m_SelListener.reset(new SelListenerRigidRegistration(this)); - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener(/*"org.mitk.views.datamanager",*/ m_SelListener.data()); - berry::ISelection::ConstPointer sel( - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager")); - m_CurrentSelection = sel.Cast(); - static_cast(m_SelListener.data())->DoSelectionChanged(sel); - } - this->OpacityUpdate(m_Controls.m_OpacitySlider->value()); - this->ShowRedGreen(m_Controls.m_ShowRedGreenValues->isChecked()); - this->ClearTransformationLists(); - this->CheckCalculateEnabled(); - /* - m_Deactivated = false; - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - if (m_SelListener.IsNull()) - { - m_SelListener = berry::ISelectionListener::Pointer(new SelListenerRigidRegistration(this)); - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener(/ *"org.mitk.views.datamanager",* / m_SelListener); - berry::ISelection::ConstPointer sel( - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager")); - m_CurrentSelection = sel.Cast(); - m_SelListener.Cast()->DoSelectionChanged(sel); - } - this->OpacityUpdate(m_Controls.m_OpacitySlider->value()); - this->ShowRedGreen(m_Controls.m_ShowRedGreenValues->isChecked()); - this->ClearTransformationLists(); - this->CheckCalculateEnabled();*/ -} - -void QmitkRigidRegistrationView::Visible() -{ - /* - m_Deactivated = false; - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - if (m_SelListener.IsNull()) - { - m_SelListener = berry::ISelectionListener::Pointer(new SelListenerRigidRegistration(this)); - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener("org.mitk.views.datamanager", m_SelListener); - berry::ISelection::ConstPointer sel( - this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager")); - m_CurrentSelection = sel.Cast(); - m_SelListener.Cast()->DoSelectionChanged(sel); - } - this->OpacityUpdate(m_Controls.m_OpacitySlider->value()); - this->ShowRedGreen(m_Controls.m_ShowRedGreenValues->isChecked()); - this->ClearTransformationLists(); - this->CheckCalculateEnabled();*/ -} - -void QmitkRigidRegistrationView::Deactivated() -{ - m_Deactivated = true; - this->SetImageColor(false); - if (m_FixedNode.IsNotNull()) - m_FixedNode->SetOpacity(1.0); - m_FixedNode = NULL; - m_MovingNode = NULL; - this->ClearTransformationLists(); - berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService(); - if(s) s->RemovePostSelectionListener(m_SelListener.data()); - m_SelListener.reset(); - /* - m_Deactivated = true; - this->SetImageColor(false); - m_FixedNode = NULL; - m_MovingNode = NULL; - this->ClearTransformationLists(); - berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService(); - if(s) - s->RemovePostSelectionListener(m_SelListener); - m_SelListener = NULL; - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - */ -} - -void QmitkRigidRegistrationView::Hidden() -{ - /*m_Deactivated = true; - this->SetImageColor(false); - m_FixedNode = NULL; - m_MovingNode = NULL; - this->ClearTransformationLists(); - berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService(); - if(s) - s->RemovePostSelectionListener(m_SelListener); - m_SelListener = NULL; - //mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - */ -} - -void QmitkRigidRegistrationView::DataNodeHasBeenRemoved(const mitk::DataNode* node) -{ - if(node == m_FixedNode || node == m_MovingNode) - { - m_Controls.m_StatusLabel->show(); - m_Controls.TextLabelFixed->hide(); - m_Controls.m_FixedLabel->hide(); - m_Controls.TextLabelMoving->hide(); - m_Controls.m_MovingLabel->hide(); - m_Controls.m_OpacityLabel->setEnabled(false); - m_Controls.m_OpacitySlider->setEnabled(false); - m_Controls.label->setEnabled(false); - m_Controls.label_2->setEnabled(false); - m_Controls.m_ShowRedGreenValues->setEnabled(false); - m_Controls.m_SwitchImages->hide(); - } - - else if(node == m_ContourHelperNode) - { - // can this cause a memory leak? - m_ContourHelperNode = NULL; - } -} - -void QmitkRigidRegistrationView::FixedSelected(mitk::DataNode::Pointer fixedImage) -{ - if (m_FixedNode.IsNotNull()) - { - this->SetImageColor(false); - m_FixedNode->SetOpacity(1.0); - } - m_FixedNode = fixedImage; - if (m_FixedNode.IsNotNull()) - { - m_FixedNode->SetOpacity(0.5); - m_FixedNode->SetVisibility(true); - m_Controls.TextLabelFixed->setText(QString::fromStdString(m_FixedNode->GetName())); - m_Controls.m_FixedLabel->show(); - m_Controls.TextLabelFixed->show(); - m_Controls.m_SwitchImages->show(); - mitk::ColorProperty::Pointer colorProperty; - colorProperty = dynamic_cast(m_FixedNode->GetProperty("color")); - if ( colorProperty.IsNotNull() ) - { - m_FixedColor = colorProperty->GetColor(); - } - this->SetImageColor(m_ShowRedGreen); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - if (dynamic_cast(m_FixedNode->GetData())) - { - m_FixedDimension = dynamic_cast(m_FixedNode->GetData())->GetDimension(); - m_Controls.qmitkRigidRegistrationSelector1->SetFixedDimension(m_FixedDimension); - m_Controls.qmitkRigidRegistrationSelector1->SetFixedNode(m_FixedNode); - } - - // what's about masking? - m_Controls.m_UseMaskingCB->show(); - - // Modify slider range - mitk::Image::Pointer image = dynamic_cast(m_FixedNode->GetData()); - int min = (int)image->GetStatistics()->GetScalarValueMin(); - int max = (int)image->GetStatistics()->GetScalarValueMax(); - m_Controls.m_ContourSlider->setRange(min, max); - - // Set slider to a default value - int avg = (min+max) / 2; - m_Controls.m_ContourSlider->setSliderPosition(avg); - m_Controls.m_ThresholdLabel->setText(QString::number(avg)); - } - else - { - m_Controls.m_FixedLabel->hide(); - m_Controls.TextLabelFixed->hide(); - m_Controls.m_SwitchImages->hide(); - } - this->CheckCalculateEnabled(); - if (auto renderWindowPart = this->GetRenderWindowPart(OPEN)) - { - m_TimeStepperAdapter = new QmitkStepperAdapter((QObject*) m_Controls.timeSlider, renderWindowPart->GetTimeNavigationController()->GetTime(), "sliceNavigatorTimeFromRigidRegistration"); - connect( m_TimeStepperAdapter, SIGNAL( Refetch() ), this, SLOT( UpdateTimestep() ) ); - } -} - -void QmitkRigidRegistrationView::MovingSelected(mitk::DataNode::Pointer movingImage) -{ - if (m_MovingNode.IsNotNull()) - { - m_MovingNode->SetOpacity(m_OriginalOpacity); - if (m_FixedNode == m_MovingNode) - m_FixedNode->SetOpacity(0.5); - this->SetImageColor(false); - } - - // selection did not change - do onot reset - if( m_MovingNode.IsNotNull() && m_MovingNode == movingImage) - { - - } - else - { - - m_MovingNode = movingImage; - if (m_MovingNode.IsNotNull()) - { - m_MovingNode->SetVisibility(true); - m_Controls.TextLabelMoving->setText(QString::fromStdString(m_MovingNode->GetName())); - m_Controls.m_MovingLabel->show(); - m_Controls.TextLabelMoving->show(); - mitk::ColorProperty::Pointer colorProperty; - colorProperty = dynamic_cast(m_MovingNode->GetProperty("color")); - if ( colorProperty.IsNotNull() ) - { - m_MovingColor = colorProperty->GetColor(); - } - this->SetImageColor(m_ShowRedGreen); - m_MovingNode->GetFloatProperty("opacity", m_OriginalOpacity); - this->OpacityUpdate(m_Opacity); - - // what's about masking? - m_Controls.m_UseMaskingCB->show(); - } - else - { - m_Controls.m_MovingLabel->hide(); - m_Controls.TextLabelMoving->hide(); - m_Controls.m_UseMaskingCB->hide(); - } - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - this->MovingImageChanged(); - this->CheckCalculateEnabled(); - } -} - -bool QmitkRigidRegistrationView::CheckCalculate() -{ - if(m_MovingNode==m_FixedNode || !this->m_PresetNotLoaded ) - return false; - - return true; -} - -void QmitkRigidRegistrationView::AddNewTransformationToUndoList() -{ - mitk::BaseData::Pointer movingData = m_MovingNode->GetData(); - m_UndoGeometryList.push_back(static_cast(movingData->GetGeometry()->Clone().GetPointer())); - - GeometryMapType childGeometries = GeometryMapType(); - if(m_MovingMaskNode.IsNotNull()) - { - childGeometries.insert(std::pair(m_MovingMaskNode, - static_cast(m_MovingMaskNode->GetData()->GetGeometry()->Clone().GetPointer()))); - } - - mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode); - if(children.IsNotNull() && children->Size() != 0) - { - unsigned long size; - size = children->Size(); - for (unsigned long i = 0; i < size; ++i) - { - childGeometries.insert(std::pair(children->GetElement(i), - static_cast(children->GetElement(i)->GetData()->GetGeometry()->Clone().GetPointer()))); - } - } - m_UndoChildGeometryList.push_back(childGeometries); - m_RedoGeometryList.clear(); - m_RedoChildGeometryList.clear(); - this->SetUndoEnabled(true); - this->SetRedoEnabled(false); -} - -void QmitkRigidRegistrationView::UndoTransformation() -{ - if(!m_UndoGeometryList.empty()) - { - mitk::BaseData::Pointer movingData = m_MovingNode->GetData(); - m_RedoGeometryList.push_back(static_cast(movingData->GetGeometry(0)->Clone().GetPointer())); - - unsigned long size = 0; - GeometryMapType childGeometries = GeometryMapType(); - if(m_MovingMaskNode.IsNotNull()) - { - ++size; - } - - mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode); - size += children->Size(); - - for (unsigned long i = 0; i < size; ++i) - { - if(i==0) - { - childGeometries.insert(std::pair(m_MovingMaskNode, - static_cast(m_MovingMaskNode->GetData()->GetGeometry()->Clone().GetPointer()))); - } - else - { - childGeometries.insert(std::pair(children->GetElement(i), - static_cast(children->GetElement(i)->GetData()->GetGeometry()->Clone().GetPointer()))); - } - } - - m_RedoChildGeometryList.push_back(childGeometries); - - movingData->SetGeometry(m_UndoGeometryList.back()); - m_UndoGeometryList.pop_back(); - GeometryMapType oldChildGeometries; - oldChildGeometries = m_UndoChildGeometryList.back(); - m_UndoChildGeometryList.pop_back(); - - GeometryMapType::iterator iter; - for (unsigned long j = 0; j < size; ++j) - { - if(j == 0) // we have put the geometry for the moving mask at position one - { - iter = oldChildGeometries.find(m_MovingMaskNode); - mitk::Geometry3D* geo = static_cast((*iter).second); - m_MovingMaskNode->GetData()->SetGeometry(geo); - m_MovingMaskNode->GetData()->GetTimeGeometry()->Update(); - } - else - { - iter = oldChildGeometries.find(children->GetElement(j)); - children->GetElement(j)->GetData()->SetGeometry((*iter).second); - } - } - - //\FIXME when geometry is substituted the matrix referenced by the actor created by the mapper - //is still pointing to the old one. Workaround: delete mapper - - //m_MovingNode->SetMapper(1, NULL); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - - this->SetRedoEnabled(true); - } - if(!m_UndoGeometryList.empty()) - { - this->SetUndoEnabled(true); - } - else - { - this->SetUndoEnabled(false); - } - this->CheckCalculateEnabled(); -} - -void QmitkRigidRegistrationView::RedoTransformation() -{ - if(!m_RedoGeometryList.empty()) - { - mitk::BaseData::Pointer movingData = m_MovingNode->GetData(); - m_UndoGeometryList.push_back(static_cast(movingData->GetGeometry(0)->Clone().GetPointer())); - - unsigned long size = 0; - GeometryMapType childGeometries = GeometryMapType(); - if(m_MovingMaskNode.IsNotNull()) - { - ++size; - } - - mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode); - size += children->Size(); - - for (unsigned long i = 0; i < size; ++i) - { - if(i == 0) - { - childGeometries.insert(std::pair(m_MovingMaskNode, - static_cast(m_MovingMaskNode->GetData()->GetGeometry()->Clone().GetPointer()))); - } - else - { - childGeometries.insert(std::pair(children->GetElement(i), - static_cast(children->GetElement(i)->GetData()->GetGeometry()->Clone().GetPointer()))); - } - } - - m_UndoChildGeometryList.push_back(childGeometries); - - movingData->SetGeometry(m_RedoGeometryList.back()); - m_RedoGeometryList.pop_back(); - - GeometryMapType oldChildGeometries; - oldChildGeometries = m_RedoChildGeometryList.back(); - m_RedoChildGeometryList.pop_back(); - GeometryMapType::iterator iter; - for (unsigned long j = 0; j < size; ++j) - { - if(j == 0) - { - iter = oldChildGeometries.find(m_MovingMaskNode); - m_MovingMaskNode->GetData()->SetGeometry((*iter).second); - } - else - { - iter = oldChildGeometries.find(children->GetElement(j)); - children->GetElement(j)->GetData()->SetGeometry((*iter).second); - } - } - - movingData->GetTimeGeometry()->Update(); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - - this->SetUndoEnabled(true); - } - if(!m_RedoGeometryList.empty()) - { - this->SetRedoEnabled(true); - } - else - { - this->SetRedoEnabled(false); - } -} - -void QmitkRigidRegistrationView::ShowRedGreen(bool redGreen) -{ - m_ShowRedGreen = redGreen; - this->SetImageColor(m_ShowRedGreen); -} - -void QmitkRigidRegistrationView::EnableContour(bool show) -{ - if(show) - ShowContour(); - - // Can happen when the m_ContourHelperNode was deleted before and now the show contour checkbox is turned off - if(m_ContourHelperNode.IsNull()) - return; - - m_Controls.m_ContourSlider->setEnabled(show); - m_ContourHelperNode->SetProperty("visible", mitk::BoolProperty::New(show)); - - mitk::RenderingManager::GetInstance()->ForceImmediateUpdateAll(); -} - -void QmitkRigidRegistrationView::ShowContour() -{ - int threshold = m_Controls.m_ContourSlider->value(); - - bool show = m_Controls.m_ShowContour->isChecked(); - - if(m_FixedNode.IsNull() || !show) - return; - - - // Update the label next to the slider - m_Controls.m_ThresholdLabel->setText(QString::number(threshold)); - - mitk::Image::Pointer image = dynamic_cast(m_FixedNode->GetData()); - - typedef itk::Image FloatImageType; - typedef itk::Image ShortImageType; - - // Create a binary image using the given treshold - typedef itk::BinaryThresholdImageFilter ThresholdFilterType; - - FloatImageType::Pointer floatImage = FloatImageType::New(); - mitk::CastToItkImage(image, floatImage); - - - ThresholdFilterType::Pointer thresholdFilter = ThresholdFilterType::New(); - thresholdFilter->SetInput(floatImage); - thresholdFilter->SetLowerThreshold(threshold); - thresholdFilter->SetUpperThreshold((int)image->GetStatistics()->GetScalarValueMax()); - thresholdFilter->SetInsideValue(1); - thresholdFilter->SetOutsideValue(0); - thresholdFilter->Update(); - - ShortImageType::Pointer binaryImage = thresholdFilter->GetOutput(); - mitk::Image::Pointer mitkBinaryImage = mitk::Image::New(); - mitk::CastToMitkImage(binaryImage, mitkBinaryImage); - - - - - // Create a contour from the binary image - mitk::ManualSegmentationToSurfaceFilter::Pointer surfaceFilter = mitk::ManualSegmentationToSurfaceFilter::New(); - surfaceFilter->SetInput( mitkBinaryImage ); - surfaceFilter->SetThreshold( 1 ); //expects binary image with zeros and ones - surfaceFilter->SetUseGaussianImageSmooth(false); // apply gaussian to thresholded image ? - surfaceFilter->SetMedianFilter3D(false); // apply median to segmentation before marching cubes ? - surfaceFilter->SetDecimate( mitk::ImageToSurfaceFilter::NoDecimation ); - - surfaceFilter->UpdateLargestPossibleRegion(); - - // calculate normals for nicer display - mitk::Surface::Pointer surface = surfaceFilter->GetOutput(); - - - if(m_ContourHelperNode.IsNull()) - { - m_ContourHelperNode = mitk::DataNode::New(); - m_ContourHelperNode->SetData(surface); - m_ContourHelperNode->SetProperty("opacity", mitk::FloatProperty::New(1.0) ); - m_ContourHelperNode->SetProperty("line width", mitk::IntProperty::New(2) ); - m_ContourHelperNode->SetProperty("scalar visibility", mitk::BoolProperty::New(false) ); - m_ContourHelperNode->SetProperty( "name", mitk::StringProperty::New("surface") ); - m_ContourHelperNode->SetProperty("color", mitk::ColorProperty::New(1.0, 0.0, 0.0)); - m_ContourHelperNode->SetBoolProperty("helper object", true); - this->GetDataStorage()->Add(m_ContourHelperNode); - } - else - { - m_ContourHelperNode->SetData(surface); - } - - - mitk::RenderingManager::GetInstance()->ForceImmediateUpdateAll(); -} - - -void QmitkRigidRegistrationView::SetImageColor(bool redGreen) -{ - if (!redGreen && m_FixedNode.IsNotNull()) - { - m_FixedNode->SetColor(m_FixedColor); - } - if (!redGreen && m_MovingNode.IsNotNull()) - { - m_MovingNode->SetColor(m_MovingColor); - } - if (redGreen && m_FixedNode.IsNotNull()) - { - m_FixedNode->SetColor(1.0f, 0.0f, 0.0f); - } - if (redGreen && m_MovingNode.IsNotNull()) - { - m_MovingNode->SetColor(0.0f, 1.0f, 0.0f); - } - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -void QmitkRigidRegistrationView::OpacityUpdate(float opacity) -{ - m_Opacity = opacity; - if (m_MovingNode.IsNotNull()) - { - m_MovingNode->SetOpacity(m_Opacity); - } - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -void QmitkRigidRegistrationView::OpacityUpdate(int opacity) -{ - float fValue = ((float)opacity)/100.0f; - this->OpacityUpdate(fValue); -} - -void QmitkRigidRegistrationView::ClearTransformationLists() -{ - this->SetUndoEnabled(false); - this->SetRedoEnabled(false); - m_UndoGeometryList.clear(); - m_UndoChildGeometryList.clear(); - m_RedoGeometryList.clear(); - m_RedoChildGeometryList.clear(); -} - -void QmitkRigidRegistrationView::Translate(int* translateVector) -{ - if (m_MovingNode.IsNotNull()) - { - mitk::Vector3D translateVec; - mitk::ScalarType sliderSensitivity = 0.1; - - translateVec[0] = sliderSensitivity * (translateVector[0] - m_TranslateSliderPos[0]); - translateVec[1] = sliderSensitivity * (translateVector[1] - m_TranslateSliderPos[1]); - translateVec[2] = sliderSensitivity * (translateVector[2] - m_TranslateSliderPos[2]); - - m_TranslateSliderPos[0] = translateVector[0]; - m_TranslateSliderPos[1] = translateVector[1]; - m_TranslateSliderPos[2] = translateVector[2]; - - vtkMatrix4x4* translationMatrix = vtkMatrix4x4::New(); - translationMatrix->Identity(); - - double (*transMatrix)[4] = translationMatrix->Element; - - transMatrix[0][3] = -translateVec[0]; - transMatrix[1][3] = -translateVec[1]; - transMatrix[2][3] = -translateVec[2]; - - translationMatrix->Invert(); - - m_MovingNode->GetData()->GetGeometry()->Compose( translationMatrix ); - m_MovingNode->GetData()->Modified(); - mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode); - unsigned long size; - size = children->Size(); - mitk::DataNode::Pointer childNode; - for (unsigned long i = 0; i < size; ++i) - { - childNode = children->GetElement(i); - childNode->GetData()->GetGeometry()->Compose( translationMatrix ); - childNode->GetData()->Modified(); - } - m_RedoGeometryList.clear(); - - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - } -} - -void QmitkRigidRegistrationView::Rotate(int* rotateVector) -{ - if (m_MovingNode.IsNotNull()) - { - mitk::Vector3D rotateVec; - - rotateVec[0] = rotateVector[0] - m_RotateSliderPos[0]; - rotateVec[1] = rotateVector[1] - m_RotateSliderPos[1]; - rotateVec[2] = rotateVector[2] - m_RotateSliderPos[2]; - - m_RotateSliderPos[0] = rotateVector[0]; - m_RotateSliderPos[1] = rotateVector[1]; - m_RotateSliderPos[2] = rotateVector[2]; - - vtkMatrix4x4* rotationMatrix = vtkMatrix4x4::New(); - vtkMatrix4x4* translationMatrix = vtkMatrix4x4::New(); - rotationMatrix->Identity(); - translationMatrix->Identity(); - - double (*rotMatrix)[4] = rotationMatrix->Element; - double (*transMatrix)[4] = translationMatrix->Element; - - mitk::Point3D centerBB = m_MovingNode->GetData()->GetGeometry()->GetCenter(); - - transMatrix[0][3] = centerBB[0]; - transMatrix[1][3] = centerBB[1]; - transMatrix[2][3] = centerBB[2]; - - translationMatrix->Invert(); - - m_MovingNode->GetData()->GetGeometry()->Compose( translationMatrix ); - mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode); - unsigned long size; - size = children->Size(); - mitk::DataNode::Pointer childNode; - for (unsigned long i = 0; i < size; ++i) - { - childNode = children->GetElement(i); - childNode->GetData()->GetGeometry()->Compose( translationMatrix ); - childNode->GetData()->Modified(); - } - - double radianX = rotateVec[0] * vnl_math::pi / 180; - double radianY = rotateVec[1] * vnl_math::pi / 180; - double radianZ = rotateVec[2] * vnl_math::pi / 180; - - if ( rotateVec[0] != 0 ) - { - rotMatrix[1][1] = cos( radianX ); - rotMatrix[1][2] = -sin( radianX ); - rotMatrix[2][1] = sin( radianX ); - rotMatrix[2][2] = cos( radianX ); - } - else if ( rotateVec[1] != 0 ) - { - rotMatrix[0][0] = cos( radianY ); - rotMatrix[0][2] = sin( radianY ); - rotMatrix[2][0] = -sin( radianY ); - rotMatrix[2][2] = cos( radianY ); - } - else if ( rotateVec[2] != 0 ) - { - rotMatrix[0][0] = cos( radianZ ); - rotMatrix[0][1] = -sin( radianZ ); - rotMatrix[1][0] = sin( radianZ ); - rotMatrix[1][1] = cos( radianZ ); - } - - m_MovingNode->GetData()->GetGeometry()->Compose( rotationMatrix ); - for (unsigned long i = 0; i < size; ++i) - { - childNode = children->GetElement(i); - childNode->GetData()->GetGeometry()->Compose( rotationMatrix ); - childNode->GetData()->Modified(); - } - - translationMatrix->Invert(); - - m_MovingNode->GetData()->GetGeometry()->Compose( translationMatrix ); - for (unsigned long i = 0; i < size; ++i) - { - childNode = children->GetElement(i); - childNode->GetData()->GetGeometry()->Compose( translationMatrix ); - childNode->GetData()->Modified(); - } - m_MovingNode->GetData()->Modified(); - m_RedoGeometryList.clear(); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - } -} - -void QmitkRigidRegistrationView::Scale(int* scaleVector) -{ - if (m_MovingNode.IsNotNull()) - { - mitk::Vector3D scaleVec; - - scaleVec[0] = scaleVector[0] - m_ScaleSliderPos[0]; - scaleVec[1] = scaleVector[1] - m_ScaleSliderPos[1]; - scaleVec[2] = scaleVector[2] - m_ScaleSliderPos[2]; - - m_ScaleSliderPos[0] = scaleVector[0]; - m_ScaleSliderPos[1] = scaleVector[1]; - m_ScaleSliderPos[2] = scaleVector[2]; - - vtkMatrix4x4* scalingMatrix = vtkMatrix4x4::New(); - scalingMatrix->Identity(); - - double (*scaleMatrix)[4] = scalingMatrix->Element; - - if (scaleVec[0] >= 0) - { - for(int i = 0; i= 0) - { - for(int i = 0; i= 0) - { - for(int i = 0; iInvert(); - - m_MovingNode->GetData()->GetGeometry()->Compose( scalingMatrix ); - m_MovingNode->GetData()->Modified(); - mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode); - unsigned long size; - size = children->Size(); - mitk::DataNode::Pointer childNode; - for (unsigned long i = 0; i < size; ++i) - { - childNode = children->GetElement(i); - childNode->GetData()->GetGeometry()->Compose( scalingMatrix ); - childNode->GetData()->Modified(); - } - m_RedoGeometryList.clear(); - - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - } -} - -void QmitkRigidRegistrationView::AlignCenters() -{ - if (m_FixedNode.IsNotNull() && m_MovingNode.IsNotNull()) - { - mitk::Point3D fixedPoint = m_FixedNode->GetData()->GetGeometry()->GetCenter(); - mitk::Point3D movingPoint = m_MovingNode->GetData()->GetGeometry()->GetCenter(); - mitk::Vector3D translateVec; - translateVec = fixedPoint - movingPoint; - translateVec *= 10; // account for slider sensitivity - m_Controls.m_XTransSlider->setValue((int)m_Controls.m_XTransSlider->value() + (int)translateVec[0]); - m_Controls.m_YTransSlider->setValue((int)m_Controls.m_YTransSlider->value() + (int)translateVec[1]); - m_Controls.m_ZTransSlider->setValue((int)m_Controls.m_ZTransSlider->value() + (int)translateVec[2]); - } -} - -void QmitkRigidRegistrationView::SetUndoEnabled( bool enable ) -{ - m_Controls.m_UndoTransformation->setEnabled(enable); -} - -void QmitkRigidRegistrationView::SetRedoEnabled( bool enable ) -{ - m_Controls.m_RedoTransformation->setEnabled(enable); -} - -void QmitkRigidRegistrationView::CheckCalculateEnabled() -{ - if (m_FixedNode.IsNotNull() && m_MovingNode.IsNotNull() ) - { - m_Controls.m_ManualFrame->setEnabled(true); - - if( m_PresetSelected && !m_PresetNotLoaded ) - { - m_Controls.m_CalculateTransformation->setEnabled(true); - if ( (m_FixedDimension != m_MovingDimension && std::max(m_FixedDimension, m_MovingDimension) != 4) || m_FixedDimension < 2 /*|| m_FixedDimension > 3*/) - { - m_Controls.m_CalculateTransformation->setEnabled(false); - } - else if (m_Controls.qmitkRigidRegistrationSelector1->GetSelectedTransform() < 5 && (m_FixedDimension < 2) /*|| m_FixedDimension > 3)*/) - { - m_Controls.m_CalculateTransformation->setEnabled(false); - } - else if ((m_Controls.qmitkRigidRegistrationSelector1->GetSelectedTransform() > 4 && m_Controls.qmitkRigidRegistrationSelector1->GetSelectedTransform() < 13) && !(m_FixedDimension > 2)) - { - m_Controls.m_CalculateTransformation->setEnabled(false); - } - else if (m_Controls.qmitkRigidRegistrationSelector1->GetSelectedTransform() > 12 && m_FixedDimension != 2) - { - m_Controls.m_CalculateTransformation->setEnabled(false); - } - } - } - else - { - m_Controls.m_CalculateTransformation->setEnabled(false); - m_Controls.m_ManualFrame->setEnabled(false); - } -} - -void QmitkRigidRegistrationView::xTrans_valueChanged( int v ) -{ - if (m_MovingNode.IsNotNull()) - { - translationParams[0]=v; - translationParams[1]=m_Controls.m_YTransSlider->value(); - translationParams[2]=m_Controls.m_ZTransSlider->value(); - Translate(translationParams); - } - else - { - MovingImageChanged(); - } -} - -void QmitkRigidRegistrationView::yTrans_valueChanged( int v ) -{ - if (m_MovingNode.IsNotNull()) - { - translationParams[0]=m_Controls.m_XTransSlider->value(); - translationParams[1]=v; - translationParams[2]=m_Controls.m_ZTransSlider->value(); - Translate(translationParams); - } - else - { - MovingImageChanged(); - } -} - -void QmitkRigidRegistrationView::zTrans_valueChanged( int v ) -{ - if (m_MovingNode.IsNotNull()) - { - translationParams[0]=m_Controls.m_XTransSlider->value(); - translationParams[1]=m_Controls.m_YTransSlider->value(); - translationParams[2]=v; - Translate(translationParams); - } - else - { - MovingImageChanged(); - } -} - -void QmitkRigidRegistrationView::xRot_valueChanged( int v ) -{ - if (m_MovingNode.IsNotNull()) - { - rotationParams[0]=v; - rotationParams[1]=m_Controls.m_YRotSlider->value(); - rotationParams[2]=m_Controls.m_ZRotSlider->value(); - Rotate(rotationParams); - } - else - { - MovingImageChanged(); - } -} - -void QmitkRigidRegistrationView::yRot_valueChanged( int v ) -{ - if (m_MovingNode.IsNotNull()) - { - rotationParams[0]=m_Controls.m_XRotSlider->value(); - rotationParams[1]=v; - rotationParams[2]=m_Controls.m_ZRotSlider->value(); - Rotate(rotationParams); - } - else - { - MovingImageChanged(); - } -} - -void QmitkRigidRegistrationView::zRot_valueChanged( int v ) -{ - if (m_MovingNode.IsNotNull()) - { - rotationParams[0]=m_Controls.m_XRotSlider->value(); - rotationParams[1]=m_Controls.m_YRotSlider->value(); - rotationParams[2]=v; - Rotate(rotationParams); - } - else - { - MovingImageChanged(); - } -} - -void QmitkRigidRegistrationView::xScale_valueChanged( int v ) -{ - if (m_MovingNode.IsNotNull()) - { - scalingParams[0]=v; - scalingParams[1]=m_Controls.m_YScaleSlider->value(); - scalingParams[2]=m_Controls.m_ZScaleSlider->value(); - Scale(scalingParams); - } - else - { - MovingImageChanged(); - } -} - -void QmitkRigidRegistrationView::yScale_valueChanged( int v ) -{ - if (m_MovingNode.IsNotNull()) - { - scalingParams[0]=m_Controls.m_XScaleSlider->value(); - scalingParams[1]=v; - scalingParams[2]=m_Controls.m_ZScaleSlider->value(); - Scale(scalingParams); - } - else - { - MovingImageChanged(); - } -} - -void QmitkRigidRegistrationView::zScale_valueChanged( int v ) -{ - if (m_MovingNode.IsNotNull()) - { - scalingParams[0]=m_Controls.m_XScaleSlider->value(); - scalingParams[1]=m_Controls.m_YScaleSlider->value(); - scalingParams[2]=v; - Scale(scalingParams); - } - else - { - MovingImageChanged(); - } -} - -void QmitkRigidRegistrationView::MovingImageChanged() -{ - if (dynamic_cast(m_MovingNode->GetData())) - { - m_Controls.m_XTransSlider->setValue(0); - m_Controls.m_YTransSlider->setValue(0); - m_Controls.m_ZTransSlider->setValue(0); - translationParams[0]=0; - translationParams[1]=0; - translationParams[2]=0; - m_Controls.m_XRotSlider->setValue(0); - m_Controls.m_YRotSlider->setValue(0); - m_Controls.m_ZRotSlider->setValue(0); - rotationParams[0]=0; - rotationParams[1]=0; - rotationParams[2]=0; - m_Controls.m_XScaleSlider->setValue(0); - m_Controls.m_YScaleSlider->setValue(0); - m_Controls.m_ZScaleSlider->setValue(0); - scalingParams[0]=0; - scalingParams[1]=0; - scalingParams[2]=0; - m_MovingDimension = dynamic_cast(m_MovingNode->GetData())->GetDimension(); - m_Controls.qmitkRigidRegistrationSelector1->SetMovingDimension(m_MovingDimension); - m_Controls.qmitkRigidRegistrationSelector1->SetMovingNode(m_MovingNode); - this->CheckCalculateEnabled(); - } -} - -void QmitkRigidRegistrationView::Calculate() -{ - m_Controls.qmitkRigidRegistrationSelector1->SetFixedNode(m_FixedNode); - m_Controls.qmitkRigidRegistrationSelector1->SetMovingNode(m_MovingNode); - - if (m_FixedMaskNode.IsNotNull() && m_Controls.m_UseMaskingCB->isChecked()) - { - m_Controls.qmitkRigidRegistrationSelector1->SetFixedMaskNode(m_FixedMaskNode); - } - else - { - m_Controls.qmitkRigidRegistrationSelector1->SetFixedMaskNode(NULL); - } - if (m_MovingMaskNode.IsNotNull() && m_Controls.m_UseMaskingCB->isChecked()) - { - m_Controls.qmitkRigidRegistrationSelector1->SetMovingMaskNode(m_MovingMaskNode); - } - else - { - m_Controls.qmitkRigidRegistrationSelector1->SetMovingMaskNode(NULL); - } - - if(m_Controls.m_cbAlignImageCenters->isChecked() ) - { - this->AlignCenters(); - } - - m_Controls.frame_2->setEnabled(false); - m_Controls.frame_3->setEnabled(false); - m_Controls.m_CalculateTransformation->setEnabled(false); - m_Controls.m_StopOptimization->setEnabled(true); - m_Controls.qmitkRigidRegistrationSelector1->CalculateTransformation(((QmitkSliderNavigatorWidget*)m_Controls.timeSlider)->GetPos()); - m_Controls.m_StopOptimization->setEnabled(false); - m_Controls.frame_2->setEnabled(true); - m_Controls.frame_3->setEnabled(true); - m_Controls.m_CalculateTransformation->setEnabled(true); - m_Controls.qmitkRigidRegistrationSelector1->StopOptimization(false); -} - -void QmitkRigidRegistrationView::SetOptimizerValue( double value ) -{ - m_Controls.m_OptimizerValueLCD->display(value); -} - -void QmitkRigidRegistrationView::StopOptimizationClicked() -{ - m_Controls.qmitkRigidRegistrationSelector1->StopOptimization(true); -} - -void QmitkRigidRegistrationView::UpdateTimestep() -{ - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); -} - -void QmitkRigidRegistrationView::ShowManualRegistrationFrame(bool show) -{ - if (show) - { - m_Controls.m_ManualFrame->show(); - } - else - { - m_Controls.m_ManualFrame->hide(); - } -} - -void QmitkRigidRegistrationView::SetImagesVisible(berry::ISelection::ConstPointer /*selection*/) -{ - if (this->m_CurrentSelection->Size() == 0) - { - // show all images - mitk::DataStorage::SetOfObjects::ConstPointer setOfObjects = this->GetDataStorage()->GetAll(); - for (mitk::DataStorage::SetOfObjects::ConstIterator nodeIt = setOfObjects->Begin() - ; nodeIt != setOfObjects->End(); ++nodeIt) // for each node - { - if ( (nodeIt->Value().IsNotNull()) && (nodeIt->Value()->GetProperty("visible")) && dynamic_cast(nodeIt->Value()->GetData())==NULL) - { - nodeIt->Value()->SetVisibility(true); - } - } - } - else - { - // hide all images - mitk::DataStorage::SetOfObjects::ConstPointer setOfObjects = this->GetDataStorage()->GetAll(); - for (mitk::DataStorage::SetOfObjects::ConstIterator nodeIt = setOfObjects->Begin() - ; nodeIt != setOfObjects->End(); ++nodeIt) // for each node - { - if ( (nodeIt->Value().IsNotNull()) && (nodeIt->Value()->GetProperty("visible")) && dynamic_cast(nodeIt->Value()->GetData())==NULL) - { - nodeIt->Value()->SetVisibility(false); - } - } - } -} - -void QmitkRigidRegistrationView::TabChanged(int index) -{ - if (index == 0) - { - m_Controls.frame->hide(); - } - else - { - m_Controls.frame->show(); - } -} - -void QmitkRigidRegistrationView::SwitchImages() -{ - mitk::DataNode::Pointer newMoving = m_FixedNode; - mitk::DataNode::Pointer newFixed = m_MovingNode; - this->FixedSelected(newFixed); - this->MovingSelected(newMoving); - - if(m_ContourHelperNode.IsNotNull()) - { - // Update the contour - ShowContour(); - } - - if(m_Controls.m_UseMaskingCB->isChecked()) - { - mitk::DataNode::Pointer tempMovingMask = NULL; - mitk::DataNode::Pointer tempFixedMask = NULL; - - if(m_FixedMaskNode.IsNotNull()) // it is initialized - { - tempFixedMask = m_Controls.m_FixedImageCB->GetSelectedNode(); - } - - if(m_MovingMaskNode.IsNotNull()) // it is initialized - { - tempMovingMask = m_Controls.m_MovingImageCB->GetSelectedNode(); - } - m_Controls.m_FixedImageCB->SetSelectedNode(tempMovingMask); - m_Controls.m_MovingImageCB->SetSelectedNode(tempFixedMask); - } -} - -void QmitkRigidRegistrationView::OnUseMaskingChanged( int state ) -{ - if(state == Qt::Checked) - { - m_Controls.m_FixedImageCB->show(); - m_Controls.m_MovingImageCB->show(); - m_Controls.m_MovingMaskLB->show(); - m_Controls.m_FixedMaskLB->show(); - } - else - { - m_Controls.m_FixedImageCB->hide(); - m_Controls.m_MovingImageCB->hide(); - m_Controls.m_MovingMaskLB->hide(); - m_Controls.m_FixedMaskLB->hide(); - - m_FixedMaskNode = NULL; - m_MovingMaskNode = NULL; - } -} - -void QmitkRigidRegistrationView::OnFixedMaskImageChanged( const mitk::DataNode* node ) -{ - if(m_Controls.m_UseMaskingCB->isChecked()) - m_FixedMaskNode = const_cast(node); - else - m_FixedMaskNode = NULL; -} - -void QmitkRigidRegistrationView::OnMovingMaskImageChanged( const mitk::DataNode* node ) -{ - if(m_Controls.m_UseMaskingCB->isChecked()) - m_MovingMaskNode = const_cast(node); - else - m_MovingMaskNode = NULL; -} diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationView.h b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationView.h deleted file mode 100644 index eddb502f91..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationView.h +++ /dev/null @@ -1,327 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef QMITKRIGIDREGISTRATION_H -#define QMITKRIGIDREGISTRATION_H - -#include -#include -#include - -#include "ui_QmitkRigidRegistrationViewControls.h" - -#include "berryISelectionListener.h" -#include "berryIStructuredSelection.h" - -#include - -// Time Slider related -#include - -/*! -\brief This view allows you to register 2D as well as 3D images in a rigid manner. - -Register means to align two images, so that they become as similar as possible. -Therefore you can select from different transforms, metrics and optimizers. -Registration results will directly be applied to the Moving Image. - -\ingroup RigidRegistration - -\author Daniel Stein -*/ - -class REGISTRATION_EXPORT QmitkRigidRegistrationView : public QmitkAbstractView, public mitk::ILifecycleAwarePart, public mitk::IRenderWindowPartListener -{ - - friend struct SelListenerRigidRegistration; - - Q_OBJECT - - public: - - static const std::string VIEW_ID; - - /*! - \brief default constructor - */ - QmitkRigidRegistrationView(QObject *parent=0, const char *name=0); - - /*! - \brief default destructor - */ - virtual ~QmitkRigidRegistrationView(); - - /*! - \brief method for creating the applications main widget - */ - virtual void CreateQtPartControl(QWidget *parent) override; - - /// - /// Sets the focus to an internal widget. - /// - virtual void SetFocus() override; - - virtual void RenderWindowPartActivated(mitk::IRenderWindowPart* renderWindowPart) override; - - virtual void RenderWindowPartDeactivated(mitk::IRenderWindowPart* renderWindowPart) override; - - /*! - \brief method for creating the connections of main and control widget - */ - virtual void CreateConnections(); - - virtual void Activated() override; - - virtual void Deactivated() override; - - virtual void Visible() override; - - virtual void Hidden() override; - - void DataNodeHasBeenRemoved(const mitk::DataNode* node); - - signals: - void PresetSelected( QString preset_name ); - - protected slots: - - /*! - * sets the fixed Image according to TreeNodeSelector widget - */ - void FixedSelected(mitk::DataNode::Pointer fixedImage); - - /*! - * sets the moving Image according to TreeNodeSelector widget - */ - void MovingSelected(mitk::DataNode::Pointer movingImage); - - /*! - * checks if registration is possible - */ - bool CheckCalculate(); - - /** - \brief Load the preset set within the combo box - */ - void LoadSelectedPreset(); - - /*! - * \brief Undo the last registration. - */ - void UndoTransformation(); - - /*! - * \brief Redo the last registration - */ - void RedoTransformation(); - - /*! - * \brief Adds a new Transformation to the undo list and enables the undo button. - */ - void AddNewTransformationToUndoList(); - - /*! - * \brief Translates the moving image in x, y and z direction given by translateVector - * - * @param translateVector Contains the translation in x, y and z direction. - */ - void Translate(int* translateVector); - - /*! - * \brief Rotates the moving image in x, y and z direction given by rotateVector - * - * @param rotateVector Contains the rotation around x, y and z axis. - */ - void Rotate(int* rotateVector); - - /*! - * \brief Scales the moving image in x, y and z direction given by scaleVector - * - * @param scaleVector Contains the scaling around x, y and z axis. - */ - void Scale(int* scaleVector); - - /*! - * \brief Automatically aligns the image centers. - */ - void AlignCenters(); - - /*! - * \brief Stores whether the image will be shown in gray values or in red for fixed image and green for moving image - * @param show if true, then images will be shown in red and green - */ - void ShowRedGreen(bool show); - - /*! - * \brief Draws the contour of the fixed image according to a threshold - * @param show if true, then images will be shown in red and green - */ - void ShowContour(); - - /*! - * \brief Stores whether the contour of the fixed image will be shhown - * @param show if true, the contour of the fixed image is shown - */ - void EnableContour(bool show); - - /*! - * \brief Changes the visibility of the manual registration methods accordingly to the checkbox "Manual Registration" in GUI - * @param show if true, then manual registration methods will be shown - */ - void ShowManualRegistrationFrame(bool show); - - /*! - * \brief Sets the selected opacity for moving image - * @param opacity the selected opacity - */ - void OpacityUpdate(float opacity); - - /*! - \brief Sets the selected opacity for moving image - - @param opacity the selected opacity - */ - void OpacityUpdate(int opacity); - - /*! - * \brief Sets the images to grayvalues or fixed image to red and moving image to green - * @param redGreen if true, then images will be shown in red and green - */ - void SetImageColor(bool redGreen); - - /*! - * \brief Clears the undo and redo lists and sets the undo and redo buttons to disabled. - */ - void ClearTransformationLists(); - - void SetUndoEnabled( bool enable ); - - void SetRedoEnabled( bool enable ); - - void CheckCalculateEnabled(); - - void xTrans_valueChanged( int v ); - - void yTrans_valueChanged( int v ); - - void zTrans_valueChanged( int v ); - - void xRot_valueChanged( int v ); - - void yRot_valueChanged( int v ); - - void zRot_valueChanged( int v ); - - void xScale_valueChanged( int v ); - - void yScale_valueChanged( int v ); - - void zScale_valueChanged( int v ); - - void MovingImageChanged(); - - /*! - * \brief Starts the registration process. - */ - void Calculate(); - - void SetOptimizerValue( double value ); - - void StopOptimizationClicked(); - - void UpdateTimestep(); - - void SetImagesVisible(berry::ISelection::ConstPointer /*selection*/); - - //void CheckForMaskImages(); - - //void UseFixedMaskImageChecked(bool checked); - - //void UseMovingMaskImageChecked(bool checked); - - void TabChanged(int index); - - void SwitchImages(); - - /*! - * indicates if the masking option shall be used. - */ - void OnUseMaskingChanged(int state); - - /*! - * method called if the fixed mask image selector changed. - */ - void OnFixedMaskImageChanged(const mitk::DataNode* node); - /*! - * method called if the moving mask image selector changed. - */ - void OnMovingMaskImageChanged(const mitk::DataNode* node); - - void PresetSelectionChanged(); -protected: - - void FillPresetComboBox(const std::list &preset); - - QScopedPointer m_SelListener; - berry::IStructuredSelection::ConstPointer m_CurrentSelection; - - QWidget* m_Parent; - - /*! - * control widget to make all changes for Deformable registration - */ - Ui::QmitkRigidRegistrationViewControls m_Controls; - mitk::DataNode::Pointer m_MovingNode; - mitk::DataNode::Pointer m_MovingMaskNode; - mitk::DataNode::Pointer m_FixedNode; - mitk::DataNode::Pointer m_FixedMaskNode; - - - - // A node to store the contour of the fixed image in - mitk::DataNode::Pointer m_ContourHelperNode; - - typedef std::map GeometryMapType; - typedef std::list< GeometryMapType > GeometryMapListType; - typedef std::list GeometryListType; - - GeometryListType m_UndoGeometryList; - GeometryMapListType m_UndoChildGeometryList; - GeometryListType m_RedoGeometryList; - GeometryMapListType m_RedoChildGeometryList; - bool m_ShowRedGreen; - float m_Opacity; - float m_OriginalOpacity; - bool m_Deactivated; - int m_FixedDimension; - int m_MovingDimension; - int * translationParams; - int * rotationParams; - int * scalingParams; - mitk::Color m_FixedColor; - mitk::Color m_MovingColor; - int m_TranslateSliderPos[3]; - int m_RotateSliderPos[3]; - int m_ScaleSliderPos[3]; - - bool m_PresetSelected; - - bool m_PresetNotLoaded; - - QmitkStepperAdapter* m_TimeStepperAdapter; -}; - -#endif //QMITKRigidREGISTRATION_H diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationViewControls.ui b/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationViewControls.ui deleted file mode 100644 index cca6a9851d..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/QmitkRigidRegistrationViewControls.ui +++ /dev/null @@ -1,1134 +0,0 @@ - - - QmitkRigidRegistrationViewControls - - - - 0 - 0 - 496 - 973 - - - - - 0 - 0 - - - - RigidRegistrationControls - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QTabWidget::South - - - QTabWidget::Triangular - - - 0 - - - Qt::ElideNone - - - - Automatic Registration - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - Moving Image Mask: - - - - - - - - - - - - - - Load Preset - - - - - - - - - - - Show contour - - - - - - - false - - - Qt::Horizontal - - - - - - - 0 - - - - - - - - - Align Image Centers - - - - - - - - - - - 10 - - - - - - - false - - - - - - - - - 0% - - - - - - - Moving Image Opacity: - - - false - - - - - - - - 0 - 0 - - - - 100 - - - 50 - - - Qt::Horizontal - - - - - - - 100% - - - - - - - - - - 0 - 0 - - - - Show Images Red/Green - - - - - - - - - - - - 255 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 255 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 118 - 116 - 108 - - - - - - - 118 - 116 - 108 - - - - - - - 118 - 116 - 108 - - - - - - - - - 8 - - - - - - - You have to select two images from Data Manager using CTRL + left click! - - - - - - - Initialization Step: - - - - - - - - - Fixed Image Mask: - - - - - - - - - - - - - 8 - - - - Moving Image: - - - - - - - Use Image Masking - - - - - - - Registration method: - - - - - - - - - - Switch fixed and moving image - - - - - - - - 10 - - - - - - - false - - - - - - - - 8 - - - - Fixed Image: - - - - - - - Qt::Horizontal - - - - - - - - - - - - false - - - Stop - - - - - - - false - - - - 0 - 0 - - - - - 0 - 0 - - - - Register - - - - :/QmitkRigidRegistrationView/RigidRegistration.xpm:/QmitkRigidRegistrationView/RigidRegistration.xpm - - - false - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - Optimizer Value: - - - false - - - - - - - QFrame::Raised - - - 10 - - - QLCDNumber::Flat - - - - - - - - - - - false - - - - 0 - 0 - - - - Undo Transformation - - - - :/org.mitk.gui.qt.ext/edit-undo.png:/org.mitk.gui.qt.ext/edit-undo.png - - - - - - - false - - - - 0 - 0 - - - - Redo Transformation - - - - :/org.mitk.gui.qt.ext/edit-redo.png:/org.mitk.gui.qt.ext/edit-redo.png - - - - - - - - - Manual Registration - - - - - - - true - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 50 - false - - - - Align Image Centers - - - - - - - - 75 - true - - - - Interactive Translations - - - true - - - false - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - x-Direction (Frontal): - - - false - - - - - - - - 50 - false - - - - y-Direction (Sagittal): - - - false - - - - - - - - 50 - false - - - - z-Direction (Axial): - - - false - - - - - - - - - - - ArrowCursor - - - - - - -10000 - - - 10000 - - - Qt::Horizontal - - - - - - - -10000 - - - 10000 - - - Qt::Horizontal - - - - - - - -10000 - - - 10000 - - - Qt::Horizontal - - - - - - - - - - - - - - - 75 - true - - - - Interactive Rotations - - - true - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - x-Axis (Frontal): - - - false - - - - - - - - 50 - false - - - - y-Axis (Sagittal): - - - false - - - - - - - - 50 - false - - - - z-Axis (Axial): - - - false - - - - - - - - - - - ArrowCursor - - - - - - -20 - - - 20 - - - Qt::Horizontal - - - - - - - -20 - - - 20 - - - Qt::Horizontal - - - - - - - -20 - - - 20 - - - Qt::Horizontal - - - - - - - - - - - - - - - 75 - true - - - - Interactive Scaling - - - true - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - 50 - false - - - - x-Direction (Frontal): - - - false - - - - - - - - 50 - false - - - - y-Direction (Sagittal): - - - false - - - - - - - - 50 - false - - - - z-Direction (Axial): - - - false - - - - - - - - - - - ArrowCursor - - - - - - -180 - - - 180 - - - 1 - - - 1 - - - Qt::Horizontal - - - false - - - QSlider::NoTicks - - - - - - - -180 - - - 180 - - - 1 - - - Qt::Horizontal - - - - - - - -180 - - - 180 - - - 1 - - - Qt::Horizontal - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - Advanced Mode - - - - - - Load Testpresets - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 10 - 10 - 505 - 712 - - - - - 0 - 0 - - - - - - - - - Save as Testpreset - - - - - - - Save as Preset - - - - - - - - - - - - - QmitkRigidRegistrationSelectorView - QWidget -
src/internal/QmitkRigidRegistrationSelectorView.h
- 1 -
- - QmitkSliderNavigatorWidget - QWidget -
QmitkSliderNavigatorWidget.h
- 1 -
- - QmitkDataStorageComboBox - QComboBox -
QmitkDataStorageComboBox.h
-
-
- - mitkDataNode.h - mitkBaseData.h - - - - - -
diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/mitkLandmarkWarping.cpp b/Plugins/org.mitk.gui.qt.registration/src/internal/mitkLandmarkWarping.cpp deleted file mode 100644 index da2f8ed897..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/mitkLandmarkWarping.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkLandmarkWarping.h" - -mitk::LandmarkWarping::LandmarkWarping() -{ - m_Deformer = DeformationSourceType::New(); - m_LandmarkDeformer = DeformationSourceType::New(); -} - -mitk::LandmarkWarping::~LandmarkWarping() -{ -} - -void mitk::LandmarkWarping::SetFixedImage(FixedImageType::Pointer fixedImage) -{ - m_FixedImage = fixedImage; - m_Deformer->SetOutputSpacing( m_FixedImage->GetSpacing() ); - m_Deformer->SetOutputOrigin( m_FixedImage->GetOrigin() ); - m_Deformer->SetOutputRegion( m_FixedImage->GetLargestPossibleRegion() ); -} - -void mitk::LandmarkWarping::SetMovingImage(MovingImageType::Pointer movingImage) -{ - m_MovingImage = movingImage; - m_LandmarkDeformer->SetOutputSpacing( m_MovingImage->GetSpacing() ); - m_LandmarkDeformer->SetOutputOrigin( m_MovingImage->GetOrigin() ); - m_LandmarkDeformer->SetOutputRegion( m_MovingImage->GetLargestPossibleRegion() ); -} - -void mitk::LandmarkWarping::SetLandmarks(LandmarkContainerType::Pointer source, LandmarkContainerType::Pointer target) -{ - m_SourceLandmarks = source; - m_TargetLandmarks = target; - m_Deformer->SetSourceLandmarks( source ); - m_Deformer->SetTargetLandmarks( target ); - m_LandmarkDeformer->SetSourceLandmarks( target ); - m_LandmarkDeformer->SetTargetLandmarks( source ); -} - -mitk::LandmarkWarping::MovingImageType::Pointer mitk::LandmarkWarping::Register() -{ - try - { - m_Observer = Observer::New(); - unsigned long obs = m_Deformer->AddObserver(itk::ProgressEvent(), m_Observer); - mitk::ProgressBar::GetInstance()->AddStepsToDo(120); - m_Deformer->UpdateLargestPossibleRegion(); - m_Deformer->RemoveObserver(obs); - } - catch( itk::ExceptionObject & excp ) - { - std::cerr << "Exception thrown " << std::endl; - std::cerr << excp << std::endl; - return nullptr; - } - - try - { - unsigned long obs2 = m_LandmarkDeformer->AddObserver(itk::ProgressEvent(), m_Observer); - m_LandmarkDeformer->UpdateLargestPossibleRegion(); - m_LandmarkDeformer->RemoveObserver(obs2); - } - catch( itk::ExceptionObject & excp ) - { - std::cerr << "Exception thrown " << std::endl; - std::cerr << excp << std::endl; - return nullptr; - } - - m_DeformationField = m_Deformer->GetOutput(); - m_InverseDeformationField = m_LandmarkDeformer->GetOutput(); - - m_Warper = FilterType::New(); - - typedef itk::LinearInterpolateImageFunction< - MovingImageType, double > InterpolatorType; - - InterpolatorType::Pointer interpolator = InterpolatorType::New(); - - m_Warper->SetInterpolator( interpolator ); - - - m_Warper->SetOutputSpacing( m_DeformationField->GetSpacing() ); - m_Warper->SetOutputOrigin( m_DeformationField->GetOrigin() ); - - m_Warper->SetDisplacementField( m_DeformationField ); - - m_Warper->SetInput( m_MovingImage ); - - unsigned long obs3 = m_Warper->AddObserver(itk::ProgressEvent(), m_Observer); - m_Warper->UpdateLargestPossibleRegion(); - m_Warper->RemoveObserver(obs3); - - return m_Warper->GetOutput(); -} - -mitk::LandmarkWarping::LandmarkContainerType::Pointer mitk::LandmarkWarping::GetTransformedTargetLandmarks() -{ - LandmarkContainerType::Pointer landmarks = LandmarkContainerType::New(); - LandmarkWarping::LandmarkPointType transformedTargetPoint; - - for(unsigned int pointId=0; pointIdSize();++pointId) - { - LandmarkWarping::LandmarkPointType targetPoint=m_TargetLandmarks->GetElement(pointId); - transformedTargetPoint = m_LandmarkDeformer->GetKernelTransform()->TransformPoint(targetPoint); - landmarks->InsertElement(pointId, transformedTargetPoint ); - } - return landmarks; -} diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/mitkLandmarkWarping.h b/Plugins/org.mitk.gui.qt.registration/src/internal/mitkLandmarkWarping.h deleted file mode 100644 index 7eb75f47f0..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/mitkLandmarkWarping.h +++ /dev/null @@ -1,115 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#ifndef MITKLANDMARKWARPING_H -#define MITKLANDMARKWARPING_H - -#include "itkLandmarkDisplacementFieldSource.h" -#include "itkWarpImageFilter.h" -#include "itkCommand.h" -#include "mitkProgressBar.h" - -namespace mitk -{ - class LandmarkWarping - { - - public: - LandmarkWarping(); - ~LandmarkWarping(); - - static const unsigned int Dimension = 3; - typedef float VectorComponentType; - - typedef itk::Vector< VectorComponentType, Dimension > VectorType; - - typedef itk::Image< VectorType, Dimension > DeformationFieldType; - - - typedef unsigned char PixelType; - typedef itk::Image< PixelType, Dimension > FixedImageType; - typedef itk::Image< PixelType, Dimension > MovingImageType; - typedef itk::LandmarkDisplacementFieldSource< DeformationFieldType > DeformationSourceType; - typedef DeformationSourceType::LandmarkContainerPointer LandmarkContainerPointer; - typedef DeformationSourceType::LandmarkContainer LandmarkContainerType; - typedef DeformationSourceType::LandmarkPointType LandmarkPointType; - typedef itk::WarpImageFilter< MovingImageType, MovingImageType, DeformationFieldType > FilterType; - - FixedImageType::Pointer m_FixedImage; - MovingImageType::Pointer m_MovingImage; - DeformationSourceType::Pointer m_Deformer; - DeformationSourceType::Pointer m_LandmarkDeformer; - LandmarkWarping::LandmarkContainerType::Pointer m_TargetLandmarks; - LandmarkWarping::LandmarkContainerType::Pointer m_SourceLandmarks; - FilterType::Pointer m_Warper; - DeformationFieldType::ConstPointer m_DeformationField; - DeformationFieldType::ConstPointer m_InverseDeformationField; - - - void SetFixedImage(FixedImageType::Pointer fi); - void SetMovingImage(MovingImageType::Pointer mi); - void SetLandmarks(LandmarkContainerType::Pointer source, LandmarkContainerType::Pointer target); - MovingImageType::Pointer Register(); - LandmarkContainerType::Pointer GetTransformedTargetLandmarks(); - - protected: - - // observerclass to react on changes on pointsetnodes - class Observer : public itk::Command - { - public: - typedef Observer Self; - typedef itk::Command Superclass; - typedef itk::SmartPointer Pointer; - - itkFactorylessNewMacro(Self) - itkCloneMacro(Self) - - protected: - Observer() - { - m_Counter = 0; - }; - unsigned int m_Counter; - - public: - - void Execute(itk::Object *object, const itk::EventObject & event) override - { - Execute( (const itk::Object*) object, event ); - } - - void Execute(const itk::Object * object, const itk::EventObject & /*event*/) override - { - const itk::ProcessObject * internalFilter = dynamic_cast( object ); - if (!(internalFilter->GetProgress() == 0 || internalFilter->GetProgress() == 1)) - { - ++m_Counter; - mitk::ProgressBar::GetInstance()->Progress(); - } - if (internalFilter->GetProgress() == 1 && m_Counter > 20 && m_Counter < 120) - { - mitk::ProgressBar::GetInstance()->Progress(120 - m_Counter); - m_Counter = 120; - } - } - }; - - Observer::Pointer m_Observer; - }; -} - -#endif // MITKLANDMARKWARPING_H diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/mitkPluginActivator.cpp b/Plugins/org.mitk.gui.qt.registration/src/internal/mitkPluginActivator.cpp deleted file mode 100644 index 954313b04d..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/mitkPluginActivator.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ - -#include "mitkPluginActivator.h" - -#include "src/internal/QmitkDeformableRegistrationView.h" -#include "src/internal/QmitkPointBasedRegistrationView.h" -#include "src/internal/QmitkRigidRegistrationView.h" - -namespace mitk { - -void PluginActivator::start(ctkPluginContext* context) -{ - BERRY_REGISTER_EXTENSION_CLASS(QmitkDeformableRegistrationView, context) - BERRY_REGISTER_EXTENSION_CLASS(QmitkPointBasedRegistrationView, context) - BERRY_REGISTER_EXTENSION_CLASS(QmitkRigidRegistrationView, context) - //Q_UNUSED(context) -} - -void PluginActivator::stop(ctkPluginContext* context) -{ - Q_UNUSED(context) -} - -} diff --git a/Plugins/org.mitk.gui.qt.registration/src/internal/mitkPluginActivator.h b/Plugins/org.mitk.gui.qt.registration/src/internal/mitkPluginActivator.h deleted file mode 100644 index dcb576ba63..0000000000 --- a/Plugins/org.mitk.gui.qt.registration/src/internal/mitkPluginActivator.h +++ /dev/null @@ -1,39 +0,0 @@ -/*=================================================================== - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center, -Division of Medical and Biological Informatics. -All rights reserved. - -This software is distributed WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. - -See LICENSE.txt or http://www.mitk.org for details. - -===================================================================*/ -#ifndef MITKPLUGINACTIVATOR_H -#define MITKPLUGINACTIVATOR_H - -#include - -namespace mitk { - -class PluginActivator : - public QObject, public ctkPluginActivator -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org_mitk_gui_qt_registration") - Q_INTERFACES(ctkPluginActivator) - -public: - - void start(ctkPluginContext* context) override; - void stop(ctkPluginContext* context) override; - -}; // PluginActivator - -} - -#endif // MITKPLUGINACTIVATOR_H