A camera outputs an image $A$ that is a linear combination of two uncorrelated images $B$ and $C$:

$$A = B + kC$$

Images $A$ and $C$ are known; the unknowns here are $B$ and a scalar coefficient $k$ that varies the intensity of $C$.

Is there a way to retrieve $B$? I could use $A$ and $C$ as separate sources and apply the ICA algorithm, but I think that it's an overkill in this case, and there should be something simpler. Any suggestion? (I'm using OpenCV to process the images, but I can implement non-OpenCV algorithms if I need to.)


You already know one of the sources here, so you don't need ICA.

There are infinitely many couples $k$ and $B$ that verify: $$ A = B + kC, $$ but in your case if you assume that $B$ and $C$ are uncorrelated, we can choose the solution that minimizes the correlation between $B$ and $C$.

Using the previous equation and the linearity of the correlation operator, we have: $$ \text{corr}(A,C) = \text{corr}(B,C) + k \text{corr}(C,C) $$

So you need to find $k$ that minimizes $(\text{corr}(A,C) - k \text{corr}(C,C))^2$, which is simply:

$$ k = \frac{\text{corr}(A,C)}{\text{corr}(C,C)}. $$ And finally: $$ B = A- \frac{\text{corr}(A,C)}{\text{corr}(C,C)}C $$

| improve this answer | |
  • $\begingroup$ Thanks for your reply LucasR - I implemented it, but I noticed a few strange things and I'd like to check if I've understood your answer correctly.As a corr(X,Y) operator I used Pearson product-moment correlation coefficient, but then corr(C,C) should always be equal to 1, and so it can be canceled from the equation... Also, corr(A,C) returns values between -1 and 1, right? $\endgroup$ – Vorbis Jun 8 '16 at 17:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.