The Image Processing toolbox toolbox is lacking a key feature I need, namely the support of all data types.
Quick list of the source included:
imhist_thresh.cpp: Generate histogram from data, # of bins based on unique values.
imsmarthist_thresh.cpp: equalize data based on histogram
imsmartstd_thresh.cpp: equalize data based on standard deviation
im_absdiff.cpp: Absolute difference of two images
im_add.cpp: Add two images
im_addelem.cpp: Add a variable to an image
im_complement.cpp: Inverse of an image
im_div.cpp: Divide one image by another (pixel wise, not linear algebra)
im_divelem.cpp: divide an image by an element
im_find.cpp: generate a new image based on conditions, will be booleanish
im_fliplr.cpp: Flip image left right
im_flipud.cpp: Flip image up down
im_hist.cpp: Histogram of image, notes will explain how to display results
im_log10.cpp: Take the log of the image
im_max.cpp: Max value in the image
im_mean.cpp: Mean value of the image
im_median.cpp: Median value of the image
im_min.cpp: Min value of the image
im_mult.cpp: Multiply one image by another
im_multelem.cpp: Multiply an image by a value
im_rgb2bw.cpp: Convert an RGB image to a BW image
im_sobelEdge.cpp: Sobel Edge of a BW image
im_square.cpp: Square of an image
im_stdDev.cpp: Standard deviation pixel wise, generates a new image
im_stdDevVal.cpp: Standard deviation of the image
im_sub.cpp: Subtract one image from another
im_subelem.cpp: Subtract a value from an image
im_transpose.cpp: Transpose an image
Image.hpp: Parent Class, does need to be used with Matlab.
MatlabImage.hpp: Child Class, only matlab specific code
helperTemplates.hpp: As the name explains
matlabIO.hpp: Convenient way to get data in and out of Matlab. Many templates are intuitive, much better than previous versions.
statistics.hpp: Convenient math templates
buildMex.m: A convenient way of building the entire package
Anthony, you're right about the uint64 support. It's not there for many operations. I haven't looked at your code, so I don't have an opinion about it.
So the first driver for this was really type support, I needed uint64 type support and Matlab just didn't have it. The more I worked on this code set the more I wanted to be able to link the same code against other C++ projects, a process that worked really well for me in grad school. Later in the project I was also curious about the speed differences between IPPL and non IPPL compiled code, interestingly enough at least for these tools there wasn't a big difference.
In the process of writing this code I think I made I/O between Mex & Matlab dramatically easier than the published way. I hope people dig it and are able to build upon it. What do you think of it?
I'm curious - at least 15 of the functions you list in your package have Image Processing Toolbox or MATLAB equivalents that handle all data types. Was there something else besides data type support that motivated you to develop this package?
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.