Could any one please tell me,
is there any Open Source Implementation of
noise-reduction contrast-enhancement algorithm for
medical images?
Thanks and Regards
Alvin
Hi Alvain,
In case you do not get any answer on this newsgroup, I'd suggest you
try on: sci.image.processing. Or itk.org mailing list ->
http://www.itk.org/ITK/help/mailing.html
Good luck
Thanks,
Bill.
My experience with image processing is very very less.
Here is a little background of the exact problem.
Please find two images from following link:
1. http://picasaweb.google.com/alwittta/CTImageTst#5320328480788049106
2. http://picasaweb.google.com/alwittta/CTImageTst#5320328486849287762
Both of these images are of one CT image and it is displayed in two
different Viewers(DicomScope and IPACS).
In second, the image quality is really good.
What I required is also this same quality as in the second image.
I am using win32 , StretchDIBits function to display the image in my
my C++ program.
Could any one please tell me what Image Processing should I apply to
make this image more better,
Thanks and Regards
Alvin
Hi alvin,
I also have problems with winapi StretchDIBits function, sometimes it
does not make good magnification results ( I don't understand it good
but very big magnification results look like no no interpolation was
done), and applying contrast to big mammo images and than decreasing
it's size using StretchDIBits takes long time.
I think it's much better to magnify raw pixel data and then create
bitmap.
I made my own code for downscaling and upscaling 8 and 16 bit data
using very helpful information from http://www.leptonica.com/local-sources.html.
Read articles and see the code, you will very easily adapt it to your
needs.
If you have any question I well be happy to help.
Could you please tell me, in your experience, which would be the best
Magnification algorithm in this source code?
Thanks and Regards
Alvin
Hi Alvin,
Magnification is simpler case - i would recommend general case
scaleGrayLILow, it works on 8bit data and uses linear interpolation.
The code uses macro GET_DATA_BYTE and SET_DATA_BYTE. I created
additional macros:
/*--------------------------------------------------*
* 16 bit access *
*--------------------------------------------------*/
#define GET_DATA_TWO_BYTES(pdata, n) \
(*((uint16_t *)(pdata) + (n)))
#define SET_DATA_TWO_BYTES(pdata, n, val) \
(*((uint16_t *)(pdata) + (n)) = (val))
It's very simple. What out, I'm using uint16_t instead of l_uint16 as
it would be in original code.
You shouldn't consider interpolations as faking or making medical
information disturbed. It can be easily shown in downscaling.
For downscaling I would recommend making low pass filtering before
downscaling. If you won't cutoff higher frequencies from the image,
you will get aliasing by the Nyquist theorem - it has nothing to do
with the result that you would get if you had magnify analog
(continuous) data.
You can query http://www.na-mic.org publications DB in this case, I
found several interesting articles there concerning image filtering.
English is not my native language and I believe I messed up something
really hard with grammar in some sentences above.)
If I'm hard to understand please don't hesitate to ask, I'll try to
express myself clearer.
One more thing, don't forget about Pixel Representation
(0x0028,0x0103). 0001H = two’s complement (signed) integer.
Image scaling in DICOMscope is done in the JNI layer (using bi-linear
interplation, as far as I remember).
I guess this DCMTK discussion forum posting is also from you:
http://forum.dcmtk.org/viewtopic.php?t=2025
Btw, the current snapshot [1] of the DCMTK has two "new" image scaling
algorithms provided by Eduard Stanescu:
- magnification algorithm with bilinear interpolation
- magnification algorithm with bicubic interpolation
Regards,
Jörg Riesmeier