Image Resistration Code Optimization
4 views (last 30 days)
I'm processing large shadowgraphy (rear-illuminated) image sets (10k images) and have recently had to modify my working code to accommodate less-than-ideal exposure settings. Essentially, regions of the background show up darker than regions of interest in the foreground, making thresholding rather difficult. As I have images of just the background, I wrote some code to register each image in a given set with the associated background image, so that I can align the images, divide out the background, and isolate the proper regions of interest. However, implementing this code resulted in a not-insignificant time increase in processing a given image set, largely due to the imregister function, as found using MATLAB's code profiler. Before hand, processing time for a given set was on the order of 10 minutes. Now, processing time is on the order of 2 hours. I should note that I'm doing the bulk of the processing within a parfor-loop, and that the code profiling was done having reverted the parfor-loop to a for-loop. Also, I've played around with various thresholding methods trying to avoid having to register the images, but I can't properly isolate the regions of interest. Also, I know there are some methods built-in to the Computer Vision System Toolbox that can seemingly perform the image registration, but unfortunately, I don't have access to that particular toolbox.
My goal is to use the background image to isolate the regions of interest in a given image from the set. Broad stroke, I'm currently doing this by registering the two images, dividing the aligned image by the background image, thresholding the resulting image, and analyzing the regions of interest. This method works, but it is very slow.
Are there any known ways to improve the speed of imregister ? Or, are there other methods to accomplish the goal that could take less time?