0

固定サイズ 256*256 の画像 A があります。水平方向と垂直方向に隣接するピクセル間の相関関係を見つけることができます。しかし、画像から斜めに隣接する2つのピクセルの4096ペアをランダムに選択し、それらの相関係数を計算してから、これらの斜めに隣接するピクセルの分布をプロットする方法を正確に理解していません。

xed = A(1:end-1,1:end-1);  % All but the last row and column
yed = A(2:end,2:end);      % All but the first row and column

randIndex = randperm(numel(xed));  % A random permutation of the integers from 1 to numel(x)
randIndex = randIndex(1:4096);     % Pick the first 4096 indices
xRand = xod(randIndex);            % 4096 random values from x
yRand = yod(randIndex);            % The corresponding 4096 values from y

% Compute the Correlation coefficient of x and y
red_xy = corrcoef(xRand(:),yRand(:));

カラー画像とグレースケール画像の両方を暗号化するために同じアルゴリズムが使用されます。カラー イメージの場合は RGB プレーンに個別に適用され、グレースケールの場合は 1 回だけ適用されます。カラー画像の場合、ほぼゼロの対角相関係数が得られます。グレースケールでは、相関係数の計算に問題があるかどうかを知りたいです。

4

2 に答える 2

2

それが真実であることを願っています。私の英語で申し訳ありません。

%usage [k1,k2,k3,k4,k5,k6]=resim_korelasyon('lennagri.bmp','lenagrisifreli1.bmp',0);
%k1,k2,k3 Original Image correlation coefficient
%k4,k5,k6 encrypted image correlation coefficient
%color  ==> 0 gray , 1 RGB
%kyatayO,kdikeyO,kkosegenO,kyatayI,kdikeyI,kkosegenI  correlation coefficients

function [kyatayO,kdikeyO,kkosegenO,kyatayI,kdikeyI,kkosegenI]=resim_korelasyon(ImageOriginal,ImageEncrypted,color) 
 %Original Image
 I=imread(ImageOriginal);
 A = im2double(I);
 %encrypted image
 I2=imread(ImageEncrypted);
 A2 = im2double(I2);

 if (color==0)
    %For GRAY image
    %==================================================
    %Original Image
    %horizontal
    x1 = A(:,1:end-1);  
    y1 = A(:,2:end);
    kyatayO=hesap(x1,y1);
    %Vertical
    x2 = A(1:end-1,:);  
    y2 = A(2:end,:);    
    kdikeyO=hesap(x2,y2);
    %diagonal
    x3 = A(1:end-1,1:end-1);  
    y3 = A(2:end,2:end);     
    kkosegenO=hesap(x3,y3);

    %==================================================
    %for encrypted image
    %horizontal
    x4 = A2(:,1:end-1);  
    y4 = A2(:,2:end);
    kyatayI=hesap(x4,y4);
    %Vertical
    x5 = A2(1:end-1,:);  
    y5 = A2(2:end,:);    
    kdikeyI=hesap(x5,y5);
    %diagonal
    x6 = A2(1:end-1,1:end-1);  
    y6 = A2(2:end,2:end);     
    kkosegenI=hesap(x6,y6);
    %==================================================
    %graphics
    h=figure;
    subplot(3,2,1),grafik(x1,y1),title('Horizontal');
    subplot(3,2,3),grafik(x2,y2),title('Vertical');
    subplot(3,2,5),grafik(x3,y3),title('Diagonal');
    subplot(3,2,2),grafik(x4,y4),title('Horizontal');
    subplot(3,2,4),grafik(x5,y5),title('Vertical');
    subplot(3,2,6),grafik(x6,y6),title('Diagonal');
    saveas(h,'correlationGray.jpg');
 end

 if(color==1) %For RGB
            %==================================================
            %Orjinal Görüntü İçin
            %Yatay korelasyon
            x1 = A(:,1:end-1,1);  %RED değerine göre hesaplanır. 1 RED 2 GREEN 3 BLUE
            y1 = A(:,2:end,1); 
            kyatayO=hesap(x1,y1);
            %dikey korelasyon
            x2 = A(1:end-1,:,1);  
            y2 = A(2:end,:,1);  
            kdikeyO=hesap(x2,y2);
            %diagonal / çapraz kolerasyon (Sağ üst köşeden sola)
            x3 = A(1:end-1,1:end-1,1);  
            y3 = A(2:end,2:end,1);  
            kkosegenO=hesap(x3,y3);
            %======================================================
            %İşlenmiş Görüntü İçin
            %Yatay korelasyon
            x4 = A2(:,1:end-1,1);  %RED değerine göre hesaplanır. 1 RED 2 GREEN 3 BLUE
            y4 = A2(:,2:end,1); 
            kyatayI=hesap(x4,y4);
            %dikey korelasyon
            x5 = A2(1:end-1,:,1);  
            y5 = A2(2:end,:,1);  
            kdikeyI=hesap(x5,y5);
            %diagonal / çapraz kolerasyon (Sağ üst köşeden sola)
            x6 = A2(1:end-1,1:end-1,1);  
            y6 = A2(2:end,2:end,1);  
            kkosegenI=hesap(x6,y6);
            %==================================================
            %grafikler çizdiriliyor ve kaydediliyor
            h=figure;
            subplot(3,2,1),grafik(x1,y1),title('Horizontal');
            subplot(3,2,3),grafik(x2,y2),title('Vertical');
            subplot(3,2,5),grafik(x3,y3),title('Diagonal');
            subplot(3,2,2),grafik(x4,y4),title('Horizontal');
            subplot(3,2,4),grafik(x5,y5),title('Vertical');
            subplot(3,2,6),grafik(x6,y6),title('Diagonal');
            saveas(h,'correlationRGB.jpg');
 end  
end

function [correlation_coefficient]=hesap(x,y)
    correlation_coefficient = corrcoef(x(:),y(:));
end

function grafik(x,y)
    randIndex = randperm(numel(x));  
    randIndex = randIndex(1:2000);   
    xRand = x(randIndex);            
    yRand = y(randIndex); 
    xRand = xRand * 256;
    yRand = yRand * 256;  
    scatter(xRand,yRand,'.');
end
于 2013-06-13T13:35:22.700 に答える