2011-10-29 5 views
0

画像の特徴ベクトルマトリックスにPCAを使用して最初の10個の固有の表面を表示する必要があります。固有の表面が正しく表示されず、非常に暗いです。

私は次のmatlabコードを使用して1番目の固有顔を作成していますが、非常に暗くなりすぎて、固有のものが正しくありません。 eFeaは、各行が参考になるコードのエラーについて64×64

newData = eFea'; 
data = newData; 
[M,N] = size(data); 

mn = mean(data,2); 
data = double(data) - repmat(mn,1,N); 
% construct the matrix Y 
Y = data'/sqrt(N-1); 
% SVD 
[u,S,PC] = svd(Y,0); 


imshow(reshape(PC(1,:),64,64)) 

任意ヒントの画像を表す240x4096の行列です。

答えて

5

IMSHOWは画像を自動的に拡大/縮小しません。したがって、eigenfaceに0から0.3の値しかない場合、すべてが実際に暗くなります。代わりにimshow(reshape(PC(1,:),64,64),[])を試してください。

+0

このように[]を追加すると、イメージが0-255にリサイズされますか? – rinku

+3

imshow(I、[lo、hi])はIの表示範囲を設定するので、loとloより小さい値はすべて黒で表示され、hiとhiより高い値はすべて白を表示します。 [lo、hi]の代わりに[]を使うと、lo = min(I(:))とhi = max(I(:))が設定されます。 –

2

これは本当に古いトピックですが、とにかく回答したいと思います。

正直なところ、エラーはどこか他の場所だと思いますが、ジョナスさんが言ったことは美しい結果をもたらすかもしれません。

最後にもう一度データの平均を追加する必要があります。私はちょうど暗い主成分と同じ問題を抱えていたので、この質問を見つけました。しかし、その後、私は、あなたがPCAをするときに、最初に平均を差し引くことを認識しました。つまり、最後にもう一度追加する必要があります。

+0

あなたは正しいです、この答えは私の場合のソリューションでした、ありがとう!! – Yiannis

関連する問題