Im Allgemeinen können Sie den Inhalt einer .mex
Datei nicht sehen, wie @Adriaan in seiner Antwort angibt.
Sie erwähnen in den Kommentaren, dass das, was Sie wirklich wollen, ist, die Koeffizienten zu finden, die von der Transformationsmatrix zum Konvertieren von RGB in Graustufen verwendet werden. Sie können diese in den Code unmittelbar unter dem Abschnitt finden Sie zitieren:
coef =
0.298936021293775 0.587043074451121 0.114020904255103
nun schlüssig, dass die .mex
Datei tut das gleiche, es ist wahr, dass Sie nicht nachweisen können:
T = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]);
coef = T(1,:);
Das gibt mir Ding als das; aber die Datei .mex
ist nur da, um Dinge zu beschleunigen, wenn Sie ein großes mxnx3-RGB-Bild statt einer kleinen nx3-RGB-Farbtabelle übergeben. Ich wäre sehr überrascht, wenn es verschiedene Koeffizienten verwenden würde. Einige Experimente, die ich gerade durchgeführt habe, zeigen nur die kleinsten numerischen Unterschiede (< 1e-15) zwischen der Datei .mex
und der Verwendung der im Code vorhandenen Koeffizienten.
Sind Sie hauptsächlich daran interessiert, welchen Algorithmus sie verwendet haben, um es zu konvertieren? Auch wenn du wirklich interessiert bist. Es besteht eine gute Chance, dass es in älteren Versionen von Matlab nicht in einer mex-Datei enthalten ist. Wenn Sie also eine Version von zB 2006 herunterladen können, besteht eine gute Chance, dass Sie den Quellcode von dort beziehen können. – Durkee
Ja, ich muss nur sehen, welche Transformationsmatrix sie verwenden. Sie dokumentieren es als "Y = 0,2989 * R + 0,5870 * G + 0,1140 * B", aber nach dem manuellen Ausführen der Berechnungen und dem Vergleich der Ergebnisse mit den RGB-Funktionen in den Pillow- und Numpy-Python-Bibliotheken scheint dies nicht der Fall zu sein der Fall sein. Ich glaube, dass es einige seltsame Rundungen gibt –
Und leider habe ich keinen Zugriff auf das alte einer Matlab-Version. Gute Idee/Hack obwohl –