[Insight-developers] PlaheImageFilter --> AdaptiveHistogramEqualizationImageFilter

Miller, James V (Research) millerjv at crd . ge . com
Wed, 18 Jun 2003 11:26:22 -0400


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_001_01C335AD.F905258F
Content-Type: text/plain;
	charset="iso-8859-1"

I started using the PlaheImageFilter (Power law adaptive histogram
equalization image filter) and discovered numerous problems with the filter.
 

1.	The only documentation was a reference to the original paper.
2.	With respect to the original paper, the intensity mapping function
may have been missing a term.  (There are some equivalence classes in these
mapping functions so this may not have been a problem).
3.	The filter inverted the intensities.
4.	The filter did not properly handle regions.
5.	The filter did not process the boundary of the image
6.	There was code to produce a lookup table that always failed.
7.	The lookup table version of the algorithm was 50% slower than the
brute force version.

I spent the last couple of days cleaning up this filter.  I "think" it is
producing reasonable output now.  I changed it to use NeighborhoodIterators,
set it up to support streaming, put in a flag to turn on/off the
lookup-table optimization, changed the optimization to be faster, changed
the API to be consistent with the rest of the toolkit, create a regression
test, and documented the filter as best I could.
 
Given that the original implementation was producing (obvious) incorrect
results, I doubt anyone has been using this filter. I think part of reason
people haven't used it is that no one recognizes the name.  I have changed
the name of the filter to AdaptiveHistogramEqualizationImageFilter  in the
repository (copied the Plahe file in the repository so we have the history).
I have not removed the original PlaheImageFilter yet but I plan to do so
soon (perhaps later this afternoon).
 
If you have been using the Plahe filter, you will now get markedly different
results.
 
If you have not been using the Plahe filter, you might want to check it out.
The filter can produce results that range from a classical adaptive
histogram equalization to an unsharp mask operation. (Though the filter
cannot produce a classical histogram equalization image without being
exceptionally slow).
 
 
 

Jim Miller 
_____________________________________
Visualization & Computer Vision
GE Research
Bldg. KW, Room C218B
P.O. Box 8, Schenectady NY 12301

millerjv at research . ge . com <mailto:millerjv at research . ge . com> 

james . miller at research . ge . com
(518) 387-4005, Dial Comm: 8*833-4005, 
Cell: (518) 505-7065, Fax: (518) 387-6981 

 

------_=_NextPart_001_01C335AD.F905258F
Content-Type: text/html;
	charset="iso-8859-1"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">


<META content="MSHTML 6.00.2800.1141" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN class=019450615-18062003>I started using the 
PlaheImageFilter (Power law adaptive histogram equalization image filter) and 
discovered numerous problems with the filter.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=019450615-18062003></SPAN></FONT>&nbsp;</DIV>
<OL>
  <LI><FONT face=Arial size=2><SPAN class=019450615-18062003>The only 
  documentation was a reference to the original paper.</SPAN></FONT></LI>
  <LI><FONT face=Arial size=2><SPAN class=019450615-18062003>With respect to the 
  original paper, the intensity mapping function may have been missing a 
  term.&nbsp; (There are some equivalence classes in these mapping functions so 
  this may not have been a problem).</SPAN></FONT></LI>
  <LI><FONT face=Arial size=2><SPAN class=019450615-18062003>The filter inverted 
  the intensities.</SPAN></FONT></LI>
  <LI><FONT face=Arial size=2><SPAN class=019450615-18062003>The filter did not 
  properly handle regions.</SPAN></FONT></LI>
  <LI><FONT face=Arial size=2><SPAN class=019450615-18062003>The filter did not 
  process the boundary of the image</SPAN></FONT></LI>
  <LI><FONT face=Arial size=2><SPAN class=019450615-18062003>There was code to 
  produce a lookup table that always failed.</SPAN></FONT></LI>
  <LI><FONT face=Arial size=2><SPAN class=019450615-18062003>The lookup table 
  version of the algorithm was 50% slower than the brute force 
  version.</SPAN></FONT></LI></OL>
<DIV><FONT face=Arial size=2><SPAN class=019450615-18062003>I spent the last 
couple of days cleaning up this filter.&nbsp; I "think" it is producing 
reasonable output now.&nbsp; I changed it to use NeighborhoodIterators, set it 
up to support streaming, put in a flag to turn on/off the lookup-table 
optimization, changed the optimization to be faster, changed the API to be 
consistent with the rest of the toolkit, create a regression test, and 
documented the filter as best I could.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=019450615-18062003></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN class=019450615-18062003>Given that the 
original implementation was producing (obvious) incorrect results, I doubt 
anyone has been using this filter.&nbsp;I think part of reason people haven't 
used it is that no one recognizes the name.&nbsp; I have changed the name of the 
filter to AdaptiveHistogramEqualizationImageFilter&nbsp; in the repository 
(copied the Plahe file in the repository so we have the history).&nbsp; I have 
not removed the original PlaheImageFilter yet but I plan to do so soon (perhaps 
later this afternoon).</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=019450615-18062003></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN class=019450615-18062003>If you have been 
using the Plahe filter, you will now get markedly different 
results.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=019450615-18062003></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN class=019450615-18062003>If you have not been 
using the Plahe filter, you might want to check it out.&nbsp; The filter can 
produce results that range from a classical adaptive histogram equalization to 
an unsharp mask operation. (Though the filter cannot produce a classical 
histogram equalization image without being exceptionally 
slow).</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=019450615-18062003></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=019450615-18062003></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV>
<P style="MARGIN: 0in 0in 0pt"><B><SPAN 
style="COLOR: navy; FONT-FAMILY: 'Comic Sans MS'">Jim Miller</SPAN></B> 
<BR><B><I><SPAN 
style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Arial">_____________________________________</SPAN></I></B><BR><EM><SPAN 
style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Arial">Visualization &amp; 
Computer Vision</SPAN></EM><I><SPAN 
style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Arial"><BR><EM>GE 
Research</EM><BR><EM>Bldg. KW, Room C218B</EM><BR><EM>P.O. Box 8, Schenectady NY 
12301</EM><BR><BR></SPAN></I><EM><U><SPAN 
style="FONT-SIZE: 7.5pt; COLOR: blue"><A 
href="mailto:millerjv at research . ge . com">millerjv at research . ge . com</A></SPAN></U></EM></P>
<P style="MARGIN: 0in 0in 0pt"><EM><U><SPAN 
style="FONT-SIZE: 7.5pt; COLOR: blue">james . miller at research . ge . com</SPAN></U></EM><BR><I><SPAN 
style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Arial">(518) 387-4005, Dial 
Comm: 8*833-4005, </SPAN></I><BR><I><SPAN 
style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Arial">Cell: (518) 505-7065, 
Fax: (518) 387-6981</SPAN></I> </P></DIV>
<DIV>&nbsp;</DIV></BODY></HTML>

------_=_NextPart_001_01C335AD.F905258F--