2

パート 1: 128*128 画像の位置合わせコード -- このパートは正常に動作します

             images = dir('*.jpg');

             [cs,index] = sort_nat({images.name});

             frame_number = 1;

             movMean = imresize(imread(cs{frame_number}),[128,128]);
             imgB = movMean;
             imgBp = imgB;
             correctedMean = imgBp;
             ii = 2;
             Hcumulative = eye(3);

             movMean2 = imresize(imread(cs{frame_number}),[1024,1024]);
             imgB2 = movMean2;
             imgBp2 = imgB2;
             correctedMean2 = imgBp2;

      while ii < length(images)

            % Read in new frame
            imgA = imgB; % 
            imgAp = imgBp; % 
            imgB = imresize(imread(cs{ii}),[128,128]); 
            imgB2 = imresize(imread(cs{ii}),[1024,1024]);

            % Estimate transform from frame A to frame B, and fit as an s-R-t
            H = cvexEstStabilizationTform(imgA,imgB);

            if isempty(H)

                break
            end

            HsRt = cvexTformToSRT(H);
            Hcumulative = HsRt * Hcumulative;
           imgBp = imwarp(imgB,affine2d(Hcumulative),'OutputView',imref2d(size(imgB)));


           imwrite(imgBp,[cs{ii},'_aligned.jpg'])
           ii = ii+1;

       end

パート 2: 変換を 1024*104 イメージに再マップするようにコードを修正 -- 正常に再マップできません

        images = dir('*.jpg');
        [cs,index] = sort_nat({images.name});
        frame_number = 1;

        movMean = imresize(imread(cs{frame_number}),[128,128]); 
        imgB = movMean;
        imgBp = imgB;
        correctedMean = imgBp;
        ii = 2;
       Hcumulative = eye(3);

       movMean2 = imresize(imread(cs{frame_number}),[1024,1024]); 
       imgB2 = movMean2;
       imgBp2 = imgB2;
       correctedMean2 = imgBp2;


       HdownScale = [ 128/1024        0 0; ...
                             0 128/1024 0; ...
                             0        0 1];


      HupScale   = [ 1024/128        0 0; ...
                            0 1024/128 0; ...
                            0        0 1];


       while ii < length(images)

            % Read in new frame
            imgA = imgB; 
            imgAp = imgBp; 
            imgB = imresize(imread(cs{ii}),[128,128]); 
            imgB2 = imresize(imread(cs{ii}),[1024,1024]);

            % Estimate transform from frame A to frame B, and fit as an s-R-t
            H = cvexEstStabilizationTform(imgA,imgB);

            HsRt = cvexTformToSRT(H);
            Hcumulative = HupScale * HsRt * Hcumulative * HdownScale;


         imgBp2 =imwarp(imgB2,affine2d(Hcumulative),'OutputView',imref2d(size(imgB2)));

         % Write Aligned images in given folder
         imwrite(imgBp2,[cs{ii},'_aligned.jpg'])

         ii = ii+1;

-- アッシュ

パート 1 のコードを使用した 128*128 フレームの整列の成功例はこちら

パート 2 のコードを使用した 1024*104 フレームへの再マッピングが失敗した例はこちら

4

1 に答える 1