3

私は一連の実験に MATLAB を使用しており、一方はボトル、もう一方は時計のように、それぞれの目が画像とは異なる動機 (両眼闘争) で刺激されます。輝度と空間周波数を調整するためのツールボックス (シャイン ツールボックス) がありますが、.png/.tif/.bmp などのように背景が単純に透明な画像では機能しません。画像の中心にあるオブジェクトがまだ完全に一致していないように、分析および一致ルーチンに含まれています。

一連のグレースケール画像で 3 つの量 (輝度、明るさ、コントラスト) を一致させるための MATLAB (または GIMP) の簡単な方法はありますか? GIMP では、「レベル」を使用して実行しようとしましたが、各画像のヒストグラムがかなり異なるため、説得力のない結果になりました。定義済みのテンプレート ヒストグラムを設定して、他のすべての画像を一致させて 3 つの量を同じにすることはできますか?

前もって感謝します!ダリボール

4

2 に答える 2

3

Matlabでは、画像の不透明な部分のみを一致させたい場合は、不透明な部分を1D画像に抽出し、それをツールボックス関数に渡してから、画像を元の形状に再変換できます。

RGBA情報を含む画像があり、A=1は完全に不透明であるとします。次に、次のように画像を変換できます。

opaqueIdx = imgRGBA(:, :, 4) == 1; 
imgOpaque = zeros(sum(opaqueIdx(:)), 1, 3); 
for color = 1:3
   myColor = imgRGBA(:, :, color); 
   imgOpaque(:, :, color) = myColor(opaqueIdx); 
end

imgOpaque次に調整できます。その後、元の画像の不透明な部分を調整された値で上書きします。

于 2012-12-15T16:18:31.393 に答える
0

幸いなことに、画像マトリックスの詳細を調べた後、解決策を思いつきました。これが私が得たものです:私はちょうど2つのグレースケール画像のそれぞれのすべてのグレースケール値を追加し、この合計をゼロ以外のグレースケール値を持つピクセルの数で割ります(透明な背景がマッチングルーチンから除外されているため) 。これにより、画像の前景のピクセルの平均グレースケール値が得られます。前提条件(私の研究に必要)は、画像が同じ寸法r1 x c1 = r2 x c2を共有している必要があり、背景が均一に透明であることです。

このループは、255以外(またはゼロ以外)のグレースケール値を持つすべてのピクセルのすべてのピクセルグレースケール値を合計し、前景の明るさの合計を求めます。r =行、c =列、I1 =画像1、I2=画像2; もちろん、「imread」操作を介して両方の画像を読み取る必要があります。

for i = 1:r
    n = 1;
    while n <= c
        if I1(i,n,1)<255
            B1 = [B1, I1(i,n,1)];
        end
        if I2(i,n,1)<255 
            B2 = [B2, I2(i,n,1)];
        end
        n=n+1;
    end
end

TotBI1 = sum(B1);
TotBI2 = sum(B2);

ここでは、2つの画像の両方でゼロ以外(または255以外)のグレースケール値を持つピクセルの数がカウントされます(上記のループで選択)。

PixNr1 = length(B1);
PixNr2 = length(B2);

ゼロ以外(または255以外)のグレースケール値を持つピクセルあたりの平均輝度を決定します(これは「平均」操作でも実行できます)。

BPixAvg1 = TotBI1/PixNr1;
BPixAvg2 = TotBI2/PixNr2;

最後に、グレースケール値の等化(または妥協)であるDeltaBによる255以外のグレースケール値を持つすべてのピクセルの変更。グレースケール値が暗い画像の前景はDeltaBによって明るくなり、明るい画像の前景はDeltaBによって暗くなります。

DeltaB = (BPixAvg1 - BPixAvg2)/2;

for i = 1:r
    n=1;
    while n<=c
        if I1(i,n,1)<255
            I1(i,n,1:3) = I1(i,n,1:3)-DeltaB;
        end
        if I2(i,n,1)<255
            I2(i,n,1:3) = I2(i,n,1:3)+DeltaB;
        end
        n=n+1;
    end
end

end

MATLAB PsychToolboxを使用して視覚的な心理物理学的実験を行う人の中には、ペアの画像のブライトなどの客観的なパラメーターを慎重に制御する必要があるため、あらゆる種類の画像のコードを一般化しようとします(両眼のライバル関係など)。さらに、ピクセルごとに同じ平均グレースケール値を共有しますが、一方の画像の前景にある大きなオブジェクトは、もう一方の画像の小さなオブジェクトよりも暗く(または明るく)見える可能性があります。このために、オブジェクトのサイズと見かけの明るさを重み付けする「間隔」係数も含めます...

于 2012-12-16T14:27:58.437 に答える