Ignore:
Timestamp:
Mar 4, 2015, 12:01:38 AM (9 years ago)
Author:
sommeria
Message:

various bug fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/series/civ_series.m

    r879 r880  
    10151015        end
    10161016        %threshold on image minimum
    1017         if check_MinIma && (image1_mean < par_civ.MinIma || image2_mean < par_civ.MinIma)
    1018             F(ivec)=3;
    1019         end
    1020         %threshold on image maximum
    1021         if check_MaxIma && (image1_mean > par_civ.MaxIma || image2_mean > par_civ.MaxIma)
    1022             F(ivec)=3;
    1023         end
    1024        
    10251017        if F(ivec)~=3
    1026             if checkmask
    1027                 image1_crop=(image1_crop-image1_mean).*~mask1_crop;%substract the mean, put to zero the masked parts
    1028                 image2_crop=(image2_crop-image2_mean).*~mask2_crop;
    1029             else
    1030                 image1_crop=(image1_crop-image1_mean);
    1031                 image2_crop=(image2_crop-image2_mean);
    1032             end
    1033             if CheckDeformation
    1034                 xi=(1:mesh:size(image1_crop,2));
    1035                 yi=(1:mesh:size(image1_crop,1))';
    1036                 [XI,YI]=meshgrid(xi-ceil(size(image1_crop,2)/2),yi-ceil(size(image1_crop,1)/2));
    1037                 XIant=XI-par_civ.DUDX(ivec)*XI-par_civ.DUDY(ivec)*YI+ceil(size(image1_crop,2)/2);
    1038                 YIant=YI-par_civ.DVDX(ivec)*XI-par_civ.DVDY(ivec)*YI+ceil(size(image1_crop,1)/2);
    1039                 image1_crop=interp2(image1_crop,XIant,YIant);
    1040                 image1_crop(isnan(image1_crop))=0;
    1041                 xi=(1:mesh:size(image2_crop,2));
    1042                 yi=(1:mesh:size(image2_crop,1))';
    1043                 image2_crop=interp2(image2_crop,xi,yi,'*spline');
    1044                 image2_crop(isnan(image2_crop))=0;
    1045                 %par_civ.CorrSmooth=3;%%%%%%%%%%%%%%%%%%%
    1046                 %%
    1047             end
    1048             sum_square=sum(sum(image1_crop.*image1_crop));
    1049             %reference: Oliver Pust, PIV: Direct Cross-Correlation
    1050             result_conv= conv2(image2_crop,flipdim(flipdim(image1_crop,2),1),'valid');
    1051             corrmax= max(max(result_conv));
    1052             result_conv=(result_conv/corrmax)*255; %normalize, peak=always 255
    1053             %Find the correlation max, at 255
    1054             [y,x] = find(result_conv==255,1);
    1055             subimage2_crop=image2_crop(y:y+2*iby2/mesh,x:x+2*ibx2/mesh);%subimage of image 2 corresponding to the optimum displacement of first image
    1056             sum_square=sum_square*sum(sum(subimage2_crop.*subimage2_crop));% product of variances of image 1 and 2
    1057             sum_square=sqrt(sum_square);% srt of the variance product to normalise correlation
    1058             if ~isempty(y) && ~isempty(x)
    1059                 try
    1060                     if par_civ.CorrSmooth==1
    1061                         [vector,F(ivec)] = SUBPIXGAUSS (result_conv,x,y);
    1062                     elseif par_civ.CorrSmooth==2
    1063                         [vector,F(ivec)] = SUBPIX2DGAUSS (result_conv,x,y);
    1064                     else
    1065                         [vector,F(ivec)] = quadr_fit(result_conv,x,y);
    1066                     end
    1067                     utable(ivec)=vector(1)*mesh+shiftx(ivec);
    1068                     vtable(ivec)=vector(2)*mesh+shifty(ivec);
    1069                     xtable(ivec)=iref+utable(ivec)/2-0.5;% convec flow (velocity taken at the point middle from imgae 1 and 2)
    1070                     ytable(ivec)=jref+vtable(ivec)/2-0.5;% and position of pixel 1=0.5 (convention for image coordinates=0 at the edge)
    1071                     iref=round(xtable(ivec));% nearest image index for the middle of the vector
    1072                     jref=round(ytable(ivec));
    1073                     % eliminate vectors located in the mask
    1074                     if checkmask && par_civ.Mask(jref,iref)<200 && par_civ.Mask(jref,iref)>=100
    1075                         utable(ivec)=0;
    1076                         vtable(ivec)=0;
     1018            if check_MinIma && (image1_mean < par_civ.MinIma || image2_mean < par_civ.MinIma)
     1019                F(ivec)=3;
     1020                %threshold on image maximum
     1021            elseif check_MaxIma && (image1_mean > par_civ.MaxIma || image2_mean > par_civ.MaxIma)
     1022                F(ivec)=3;
     1023            end
     1024            if F(ivec)~=3
     1025                %mask
     1026                if checkmask
     1027                    image1_crop=(image1_crop-image1_mean).*~mask1_crop;%substract the mean, put to zero the masked parts
     1028                    image2_crop=(image2_crop-image2_mean).*~mask2_crop;
     1029                else
     1030                    image1_crop=(image1_crop-image1_mean);
     1031                    image2_crop=(image2_crop-image2_mean);
     1032                end
     1033                %deformation
     1034                if CheckDeformation
     1035                    xi=(1:mesh:size(image1_crop,2));
     1036                    yi=(1:mesh:size(image1_crop,1))';
     1037                    [XI,YI]=meshgrid(xi-ceil(size(image1_crop,2)/2),yi-ceil(size(image1_crop,1)/2));
     1038                    XIant=XI-par_civ.DUDX(ivec)*XI-par_civ.DUDY(ivec)*YI+ceil(size(image1_crop,2)/2);
     1039                    YIant=YI-par_civ.DVDX(ivec)*XI-par_civ.DVDY(ivec)*YI+ceil(size(image1_crop,1)/2);
     1040                    image1_crop=interp2(image1_crop,XIant,YIant);
     1041                    image1_crop(isnan(image1_crop))=0;
     1042                    xi=(1:mesh:size(image2_crop,2));
     1043                    yi=(1:mesh:size(image2_crop,1))';
     1044                    image2_crop=interp2(image2_crop,xi,yi,'*spline');
     1045                    image2_crop(isnan(image2_crop))=0;
     1046                    %par_civ.CorrSmooth=3;%%%%%%%%%%%%%%%%%%%
     1047                    %%
     1048                end
     1049                sum_square=sum(sum(image1_crop.*image1_crop));
     1050                %reference: Oliver Pust, PIV: Direct Cross-Correlation
     1051                result_conv= conv2(image2_crop,flipdim(flipdim(image1_crop,2),1),'valid');
     1052                corrmax= max(max(result_conv));
     1053                result_conv=(result_conv/corrmax)*255; %normalize, peak=always 255
     1054                %Find the correlation max, at 255
     1055                [y,x] = find(result_conv==255,1);
     1056                subimage2_crop=image2_crop(y:y+2*iby2/mesh,x:x+2*ibx2/mesh);%subimage of image 2 corresponding to the optimum displacement of first image
     1057                sum_square=sum_square*sum(sum(subimage2_crop.*subimage2_crop));% product of variances of image 1 and 2
     1058                sum_square=sqrt(sum_square);% srt of the variance product to normalise correlation
     1059                if ~isempty(y) && ~isempty(x)
     1060                    try
     1061                        if par_civ.CorrSmooth==1
     1062                            [vector,F(ivec)] = SUBPIXGAUSS (result_conv,x,y);
     1063                        elseif par_civ.CorrSmooth==2
     1064                            [vector,F(ivec)] = SUBPIX2DGAUSS (result_conv,x,y);
     1065                        else
     1066                            [vector,F(ivec)] = quadr_fit(result_conv,x,y);
     1067                        end
     1068                        utable(ivec)=vector(1)*mesh+shiftx(ivec);
     1069                        vtable(ivec)=vector(2)*mesh+shifty(ivec);
     1070                        xtable(ivec)=iref+utable(ivec)/2-0.5;% convec flow (velocity taken at the point middle from imgae 1 and 2)
     1071                        ytable(ivec)=jref+vtable(ivec)/2-0.5;% and position of pixel 1=0.5 (convention for image coordinates=0 at the edge)
     1072                        iref=round(xtable(ivec));% nearest image index for the middle of the vector
     1073                        jref=round(ytable(ivec));
     1074                        % eliminate vectors located in the mask
     1075                        if checkmask && par_civ.Mask(jref,iref)<200 && par_civ.Mask(jref,iref)>=100
     1076                            utable(ivec)=0;
     1077                            vtable(ivec)=0;
     1078                            F(ivec)=3;
     1079                        end
     1080                        ctable(ivec)=corrmax/sum_square;% correlation value
     1081                    catch ME
    10771082                        F(ivec)=3;
    10781083                    end
    1079                     ctable(ivec)=corrmax/sum_square;% correlation value
    1080                 catch ME
     1084                else
    10811085                    F(ivec)=3;
    10821086                end
    1083             else
    1084                 F(ivec)=3;
    10851087            end
    10861088        end
Note: See TracChangeset for help on using the changeset viewer.