我在网上看到你可以使用edit rgb2gray
来打开源文件,但我遇到了rgb2gray.m
文件中的另一个我不知道如何查看的函数。
第54-55行包含以下功能:
if threeD
I = images.internal.rgb2graymex(X);
如何查看此rgb2graymex
函数的源代码?
答案 0 :(得分:4)
rgb2graymex
是一个.mex文件。 .mex文件是预先编译的文件,因此您无法查看其中的内容,除非您使用异国情况的反编译器(通常不会给出100%的结果),或者从其中获取源代码。写它,这不会发生专有代码。
详细了解MEX文件on the MathWorks site。
答案 1 :(得分:1)
一般情况下,您无法查看.mex
文件的内容,正如@Adriaan在回答中所示。
你在评论中提到,你真正想要的是找到从变换矩阵中使用的系数,用于将RGB转换为灰度。您可以在引用部分正下方的代码中找到这些:
T = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]);
coef = T(1,:);
这让我:
coef =
0.298936021293775 0.587043074451121 0.114020904255103
现在确实无法证明.mex
文件正在做与此相同的事情,这是真的。但是当你传入一个大的mxnx3 RGB图像而不是一个小的nx3 RGB色图时,.mex
文件就可以加快速度。如果它使用不同的系数,我会感到非常惊讶。我刚刚完成的一些实验仅表明.mex
文件与使用代码中存在的系数之间的最微小的数值差异(<1e-15)。