Yeah, you should always use RGB for ColourLike, since YV12 is in YUV format which seems to not allow for as accurate changes in the colors. Not an expert but I know that in YUV, red, green and blue can't be balanced separately.
And the reason why it might come out weird if you choose every 1000 frames is because sometimes we have shot/scene switches in movies! When those happen, it might still adjust to a completely different frame it registered before.
Try AntcuFaalb's frame by frame method, might work a lot better. Otherwise, maybe we would need a script that detects shot changes and applies ColourLike with an average value registered from frames only in one shot at a time.
Gotta add also that I don't have the Matrix DVD, only the BD. For the samples I made I took your posted images and applied ColourLike only on those frames.
EDIT:
Changed your script there, try this:
c1=bd.ConvertToRGB32()
c2=dvd.ConvertToRGB32()
function ColourLikeFBF(clip c1, clip c2)
{ # Color-matches c1 to c2, frame by frame.
# Assumes c1 and c2 are the same length and are
# both compatible with ColourLike.
global c1 = c1
global c2 = c2
return c1.ScriptClip("""
ca = c1.Trim(current_frame, -1)
cb = c2.Trim(current_frame, -1)
ca.WriteHistogram("hist1.txt", 1)
cb.WriteHistogram("hist2.txt", 1)
ca.ColourLike("hist1.txt", "hist2.txt")
""")
}
CLRGB=ColourLikeFBF(c1, c2).ConvertToYV12()
stackvertical(\
bd.subtitle("BD",size=60),\
dvd.subtitle("DVD",size=60),\
CLRGB.subtitle("ColourLikeRGB",size=60)\
).spline36resize(960,1200)
Also, make sure you use Avisynth 2.6 MT (multithread), that's the version that gave me the least color troubles. You don't need a multi core CPU to run it though, it just has some additional features one can add to scripts. LINK