public void transformColor(IplImage srcImage, IplImage dstImage, CvRect roi,
int pyramidLevel, ImageTransformer.Parameters parameters, boolean inverse) {
Parameters p = ((Parameters)parameters);
if ((Arrays.equals(p.getColorParameters(), p.getIdentityColorParameters()) &&
(X == null || p.fakeIdentity)) || (X == null && numGains == 0 && numBiases == 0)) {
if (srcImage != dstImage) {
cvCopy(srcImage, dstImage);
}
return;
}
CvMat X2 = X24x4.get();
prepareColorTransform(X2, pyramidLevel, p, inverse);
X2.rows(3);
if (roi == null) {
cvResetImageROI(dstImage);
} else {
cvSetImageROI(dstImage, roi);
}
X2.put(0, 3, X2.get(0, 3)*dstImage.highValue());
X2.put(1, 3, X2.get(1, 3)*dstImage.highValue());
X2.put(2, 3, X2.get(2, 3)*dstImage.highValue());
cvTransform(srcImage, dstImage, X2, null);
X2.rows(4);
}