nspace1=rgb2ycbcr(ims);
nspace2= rgb2ycbcr(imt);
ms=double(nspace1(:,:,1));
mt=double(nspace2(:,:,1));
m1=max(max(ms));
m2=min(min(ms));
m3=max(max(mt));
m4=min(min(mt));
d1=m1-m2;
d2=m3-m4;
% Normalization
dx1=ms;
dx2=mt;
dx1=(dx1*255)/(255-d1);
dx2=(dx2*255)/(255-d2);
[mx,my,mz]=size(dx2);
答案 0 :(得分:4)
您正在以完全相同的方式处理两个图像(ims
和imt
),我会(尝试)描述每条线的作用。如果你自己查看文档/使用你的大脑/ execute the code step by step并在每一步检查变量,你当然也可以自己找到它。
nspace1=rgb2ycbcr(ims);
ms=double(nspace1(:,:,1));
ycbcrmap = rgb2ycbcr(map)将地图中的RGB值转换为YCbCr颜色空间。 map必须是M-by-3数组。 ycbcrmap是一个M-by-3矩阵,它包含YCbCr亮度(Y)和色度(Cb和Cr)颜色值作为列。
因此nspace1
包含图像ims
中每个RGB输入的YCbCr值。
第二行,每个像素的提取,YCbCR三元组的第一个元素,就是你可以读到的亮度。
m1=max(max(ms));
m2=min(min(ms));
第一个max
找到每列的最大值,因此它会留下一行。第二个max
找到该结果行的最大值,这将为您提供整个矩阵的绝对最大值。 min(min(...))
也是如此。
d1=m1-m2;
然后是亮度的数值范围。
dx1=ms;
dx1=(dx1*255)/(255-d1);
应该是评论所暗示的规范化,但肯定看起来不像规范化。我想这应该是:
dx1 = (ms-m2)*255/d1;
将每个亮度值转换为0到255之间的值。
[mx,my,mz]=size(dx2);
我把最后一个留给你弄清楚,不应该那么难。