Skip to content

calculate mutual information and mattes mutual information in CUDA

License

Notifications You must be signed in to change notification settings

yge58/mutual_information_cuda

Repository files navigation

Project: 		Image Mutual Information in CUDA

Developer:    		Yan Ge

Time: 	      		March 2017 - May 2017

Source Code based on: [1] CUDA sample histogram 
       	    	      [2] ITK Image Mutual Information sample code.
		      (https://itk.org/Wiki/ITK/Examples/Registration/MutualInformation)

_______________________________________________________________________
I dedicate this project to my mom, in celebration of her 50th birthday!
_______________________________________________________________________

How to use:

[1] Install ITK
    (It takes long, when you type "make", type "make -j 4(# of processors you have in your PC)"
    https://itk.org/ITK/resources/software.html)

    Install CMAKE
    (https://cmake.org/download/)
    


[2] mkdir cudaMutualInformation
    tar -xvzf *.tar
    cd cudaMutualInformation && mkdir build && cmake ../

if cmake failed, the following may help build.

[3] Build using cmake.
    you might need to change a few lines of code in "CMakeList.txt". 
    
    Suggestions:
    <1> build a sample ITK program using cmake
    (ITK/Configuring and Building, https://itk.org/Wiki/ITK/Configuring_and_Building)
    
    <2> build a sample CUDA program using cmake
    (how to use cmake with cuda, https://codeyarns.com/2013/09/13/how-to-build-cuda-programs-using-cmake/)
    
    <3> now combine them, build a ITK CUDA program using my example "CMakeList.txt"
    (please find comment in "CMakeList.txt")


[4] make


[5] Copy any two images to directory "build", I have provided you with a 3D brain image (.nrrd file).
    You may choose any two images, they can be the same, or different, as long as ITK recognize them.


[6] Example command line options:
    <1> use ITK (#_bin), for example
	./ImageMutualInformation ManualRegistrationExample_fixed.nrrd ManualRegistrationExample_fixed.nrrd 0 #_bin

    <2> use CUDA (only 64-bin or 256 bin) 
        ./ImageMutualInformation ManualRegistrationExample_fixed.nrrd ManualRegistrationExample_fixed.nrrd 1 (64 or 256)


Attention: the "double" format in ITK is more precise than CUDA.
	   For eample, if bin count is 42, ITK gives 0.00840947, while CUDA gives 0.008409.
	   
	   
	   
	   Thank you for trying this software, and I certainly welcome any comments.



About

calculate mutual information and mattes mutual information in CUDA

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages