Applying CLAHE to medical images may going to some shaded on each edge side of object. So I have to correct this problem with fast processing in real time.
To make up a prototype correction, I have used same source RAW image, here is a source image in down scaled from 16bit gray scale RAW.
Applied CLAHE with 16×16 in clip limit of 100.0f. And I could recognized shaded areas at each edge of object. Shaded area marked as red boxes in below.
To correct shaded area, generate gaussian blur mask with big radials, but it really heavy to processing in fast time as realtime. So I made it fastest way with my ‘Resize engine’ that made with OpenMP and AVX instructions. To generate fastest blurred mask, down scale with bi-linear filter to 2.5% size. Then doing up scale again with B-Spline filter to original size. And Invert it.
Then calculate to do shade correction with generated shade mask, ins fastest math functions with original image.
To complete image processing, need to fill background areas.
It simply corrected but little bit lacks on details of bone level. But definitely better than hard shaded levels after window leveling. Expect for next will find more improved processing algorithm, and it will be a function of librawprocessor.
By using CLAHE algorithm, there’s some problem occurs by object shapes like this:
Each edge side of object going too darken by window leveling. It is defecting issue of CLAHE. So I tried to make it corrected with shading correction.
Here is source raw image, 14bit gray.
First, I need make a background mask to overriding changed level after CLAHE.
It can generate simply by using my librawprocessor. Then I applied CLAHE, 10×10, 30.0f.
Shadowed or shaded areas occurs after applying CLAHE, it must be corrected. So I made shaded map with my fast resize engine. Down scale to 10% of original image size with Bi-Linear filter, then up scale again with B-Spline filter with inverse.
It is much effective than Gaussian blur. Very fast but similar to Gaussian blurred. almost realtime in 3000×3000 array with floating point levels in AVX and OpenMP optimization.
Now I am just add masked shade map level with exponential to original image.
if ( ( src == NULL ) || ( smap == NULL ) )
if ( src->Width() != smap->Width() )
if ( src->Height() != smap->Height() )
float* datasrc = src->Data();
float* datamap = smap->Data();
#pragma omp parellel for
for( unsigned cnt=0; cnt< src->Size(); cnt++ )
float diffs = datamap[ cnt ];
if ( diffs > 0.0f )
datasrc[ cnt ] += exp( diffs );
Result is :
Shaded object areas seems to enhanced than before. So I continued to applying background mask.
Ok, then I made it to window leveled.
Each edge sides are not seems to much shaded than before. It should be better than applying single CLAHE. I will continue to write more effective image processing with CLAHE.
High dynamic tone mapping is a kind of graphical thesis to indemnify exposure of whole a image specially such as 256 leveled Red, Green, Blue (+Alpha transparency) formats. But high dynamic calculates all pixel levels as an floating point number with luminance ( in case of RGB, it convert each color channels to a luminance level ) to enhance for more dynamic ranged.
Examined all algorithms and refered to Free Image 3 library for how to make it as C++ code. Proceeded to stand-alone codes and finally embedded to my open source project, librawprocessor at my github repository.
As my experimental study, High dynamic tone mapping was enhances low exposed/qulity medical images to fully ranged pixel levels in same min/max range.
Left image is original digital medical chest PA TFT detector image and it could be ranged about 0 to 2700.
Right image is processed Reinhard alogortihm (with parameters : contrast 1.0 and adaptation 0.5) to expand dynamic range.
Pixel levels spreads down to about 6500 without high peak as above image. Every pixel levels be flatten. It will be expected to better for adjust post image processing with less loses.
Also it much better to examine anatomy with no special signal processing. Just doing thresholding window leveling makes good result to check organs.