Login  Register

Re: Color Correction for Underwater Photos

Posted by Kenneth Sloan-2 on Feb 17, 2016; 9:38pm
URL: http://imagej.273.s1.nabble.com/Color-Correction-for-Underwater-Photos-tp5015660p5015668.html

No direct experience, but here is what I would do:

a) devise a way to specify regions of the image of known color.  That depends on what the images look like.  If the color cards are in a standard location, you might find them automatically.  If not, you’ll have to sketch little ROI’s.

b) develop a MODEL of what distortions of color space are produced by shooting underwater.  The more you know about how the water changes things, the more accurate your correction will be.  Suppose that your model has k parameters.

c) now, you have a k-dimensional space of parameter settings, and several patches in the image with known before/after colors.  You need to search the parameter space for the set of parameters for the model which best transforms the captured colors into the “known” colors.  Assume that this transformation brings the rest of the colors along for the ride.

The details all depend on how many “known” colors you have, and what you know about how the underwater shooting affected the imaging.

You can probably do better than this, but suppose your model is:

I = [Ri Gi Bi] - imaged color
K = [Rk Gk Gk] - known color
T = [a b c]    - 3x3 transform
    [d e f]
    [g h i]

I = T K   (traspose to make rows/columns work, as necessary)

Then, you have 9 parameters to tweak.  If you have 9 known colors and 9 patches of imaged colors, then you have 9 equations in 9 unknowns.  Solve for a,b,c...

Perhaps you are lucky, and
T = [dR  0  0]
    [ 0 dG  0]
    [ 0  0 dB]

Then you only need 3 known colors and associated image patches.

Perhaps, instead, the transform ADD or SUBTRACTS color (instead of, or in addition to, filtering it).  Or, worse, somehow produces cross-talk between the R,G,B channels.  Then, I would try (warning - this is probably overkill):

I = [Ri Gi Bi 1]
K = [Rk Gk Bk 1]
T = [a b c d]
    [e f g h]
    [i j k l]
    [m n o p]

Then, you might need 16 known colors (oops - you probably don’t have that many)

But, it might turn out to be as simple as:

T = [dR  0   0 0]
    [ 0 dG   0 0]
    [ 0  0  dB 0]
    [aR  aG aB 0]

Which would require 6 known colors.  (again, I haven’t been careful about orienting the color vectors - fix as needed).

Note that careful selection of the known colors might allow you to use fewer - but you’ve already taken the pictures, so that’s probably out.

Sorry I can’t be more specific.  I hope this helps.



--
Kenneth Sloan
[hidden email]
Vision is the art of seeing what is invisible to others.




> On Feb 17, 2016, at 10:19 , klesneski <[hidden email]> wrote:
>
> Hi everyone,
> I am doing some analyses of tissue color of corals that I took with an
> underwater camera. I am trying to see if there are differences in tissue
> color among colonies. My idea is to use the color histograms of the selected
> colonies. In each image, I have a color standard card, placed next to the
> coral colony. One of the reasons why we include this card is because red
> light is attenuated with depth, so objects and images appear more blue the
> deeper you are, and the coral colonies are all at different depths. We know
> the RBG values of the color on the card. I am wondering if anyone has
> experience or advice on how I could use this color standard card in ImageJ
> to perform a sort of correction before using color histograms?
> Many thanks,
> KL
>
>
>
>
> --
> View this message in context: http://imagej.1557.x6.nabble.com/Color-Correction-for-Underwater-Photos-tp5015660.html
> Sent from the ImageJ mailing list archive at Nabble.com.
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html