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);
1 に答える
まったく同じ方法で2 つの画像 (ims
とimt
) を処理しています。各行が何をするかを説明します。もちろん、自分でドキュメントを調べたり、頭を使ったり、コードを段階的に実行したり、各段階で変数を調べたりすれば、これを自分で見つけることもできます..
nspace1=rgb2ycbcr(ims);
ms=double(nspace1(:,:,1));
ycbcrmap = rgb2ycbcr(map) は map の RGB 値を YCbCr 色空間に変換します。map は M 行 3 列の配列でなければなりません。ycbcrmap は、YCbCr の輝度 (Y) とクロミナンス (Cb および Cr) の色値を列として含む M 行 3 列の行列です。
したがってnspace1
、イメージからの各 RGB 入力の YCbCr 値が含まれますims
。2 行目は、各ピクセルについて、YCbCR トリプレットの 1 番目の要素を抽出します。これは、上記で読み取れるように輝度です。
m1=max(max(ms));
m2=min(min(ms));
最初max
は各列の最大値を見つけるため、行が残ります。2番目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);
最後はあなたに任せますが、それほど難しいことではありません。