-1
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); 
4

1 に答える 1

4

まったく同じ方法で2 つの画像 (imsimt) を処理しています。各行が何をするかを説明します。もちろん、自分でドキュメントを調べたり、頭を使ったり、コードを段階的に実行したり、各段階で変数を調べたりすれば、これを自分で見つけることもできます..

nspace1=rgb2ycbcr(ims);
ms=double(nspace1(:,:,1));

rgb2ycbcr ドキュメントから:

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); 

最後はあなたに任せますが、それほど難しいことではありません。

于 2012-10-03T19:06:18.337 に答える