⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iblockrec1.m

📁 Block Recovery code - matlab
💻 M
📖 第 1 页 / 共 2 页
字号:
                         IR(mi+2,nj+2)=IR(mi+2,nj+4);
                         IR(mi+2,nj+3)=IR(mi+2,nj+4);
                    
                    
%                     A1=img1(:);
%                     Fmin=min(A1);
%                     Fmax=max(A1);
                    Fmin=0;
                    Fmax=255;
                    for i=1:2
                        for u=1:a
                            for v=1:a
                                if r(u,v,i)<Fmin
                                    r(u,v,i)=Fmin;
                                elseif r(u,v,i)>Fmax
                                    r(u,v,i)=Fmax;
                                else
                                    r(u,v,i)=r(u,v,i);
                                end 
                            end
                        end
                    end

                    % find projection operator p3

                    switch line_dom
                        case 'H'

                            %find f vector
                            i=1;
                            f(i,:)=R(a,:,i);  %[R(u,v,i) R(u,y1+1,i) R(x1,y1+2,i) R(x1,y1+3,i)];
                            g(i,:)=R(a-1,:,i);
                            h(i,:)=f(i,:)-g(i,:);
                            i=i+1;
                            f(i,:)=R(1,:,i);
                            g(i,:)=R(2,:,i);
                            h(i,:)=f(i,:)-g(i,:);

                            % find Alpha
                            i=1;
                            j=1;
                            v=y-1;
                            for u=x-2:x+a+1
                                fun(i,j)=img1(u,v)-img1(u,v-1);
                                j=j+1;
                            end
                            Al(i)=max(fun(i,:));


                            i=i+1;
                            j=1;
                            v=y+a+1; 
                            for u=x-2:x+a+1
                                fun(i,j)=img1(u,v)-img1(u,v-1);
                                j=j+1;
                            end
                            Al(i)=max(fun(i,:));

                            % apply P3 operator
                            for i=1:2
                                for j=1:a
                                    if h(i,j) < -1*(Al(i))
                                        f(i,j)=g(i,j)-Al(i);
                                    elseif h(i,j) > Al(i)
                                        f(i,j)=g(i,j)+Al(i);
                                    else
                                        f(i,j)=f(i,j);
                                    end
                                end
                            end


                            %Restore the recovery vector
                            i=1;
                            u=a;
                            for v=1:a;
                                R(u,v,i)=f(i,v);
                            end

                            i=i+1;
                            u=1;
                            for v=1:a
                                R(u,v,i)=f(i,v);
                            end


                        case 'V'
                            i=1;
                            f(i,:)=R(:,a,i);
                            g(i,:)=R(:,a-1,i);
                            h(i,:)=f(i,:)-g(i,:);
                            i=i+1;
                            f(i,:)=R(:,1,i);
                            g(i,:)=R(:,2,i);
                            h(i,:)=f(i,:)-g(i,:);

                            % find Alpha
                            i=1;
                            j=1;
                            u=x-1;
                            for v=y-2:y+a+1
                                fun(i,j)=img1(u,v)-img1(u-1,v);
                                j=j+1;
                            end
                            Al(i)=max(fun(i,:));


                            i=i+1;
                            j=1;
                            u=x+a+1;
                            for v=y-2:y+a+1
                                fun(i,j)=img1(u,v)-img1(u-1,v);
                                j=j+1;
                            end
                            Al(i)=max(fun(i,:));

                           
                            for i=1:2
                                for j=1:a
                                    if h(i,j) < -1*(Al(i))
                                        f(i,j)=g(i,j)-Al(i);
                                    elseif h(i,j) > Al(i)
                                        f(i,j)=g(i,j)+Al(i);
                                    else
                                        f(i,j)=f(i,j);
                                    end
                                end
                            end


                            
                            i=1;
                            v=a;
                            for u=1:a;
                                R(u,v,i)=f(i,u);
                            end

                            i=i+1;
                            v=1;
                            for u=1:a
                                R(u,v,i)=f(i,u);
                            end


                    end % end of switch statement
                    

                 end % end of iteration
                
                 % p4 operator
                    switch line_dom
                        case 'H'
                            y1=y2;
                            x1=x2-(a-1);
                            if rec==1
                                x1=x2-(a-1);
                            elseif rec==2
                                x1=x2-(a-2);
                            elseif rec==3
                                x1=x2-(a-3);
%                             elseif rec==4
%                                 x1=x2-(a-4);
                            end
                            x1=x1+(a-1);
                            u=a;
                                for v=0:a-1
                                    img1(x1,y1+v)=R(u,v+1,1);
                                end
                            x1=x2+(a-1);
                            if rec==1
                                x1=x2+(a-1);
                            elseif rec==2
                                x1=x2+(a-2);
                            elseif rec==3
                                x1=x2+(a-3);
%                             elseif rec==4
%                                 x1=x2+(a-4);
                            end
                            
                            u=1;
                                for v=0:a-1
                                    img1(x1,y1+v)=R(u,v+1,2);
                                end

                        case 'V'

                            x1=x2;
                            y1=y2-(a-1);
                            if rec==1
                                y1=y2-(a-1);
                            elseif rec==2
                                y1=y2-(a-2);
                            elseif rec==3
                                y1=y2-(a-3);
%                             elseif rec==4
%                                 y1=y2-(a-4);
                            end
                            y1=y1+(a-1);
                            v=a;
                                for u=0:a-1
                                    img1(x1+u,y1)=R(u+1,v,1);
                                end
                            y1=y2+(a-1);
                            if rec==1
                                y1=y2+(a-1);
                            elseif rec==2
                                y1=y2+(a-2);
                            elseif rec==3
                                y1=y2+(a-3);
%                             elseif rec==4
%                                 y1=y2+(a-4);
                            end
                            v=1;
                                for u=0:a-1
                                    img1(x1+u,y1)=R(u+1,v,2);
                                end
                    end

            end 
            
            
            
            i=1;
            y1=y+(a/2)-1;
            for x1=x:(x+a-1)
                e(i)=img1(x1,y1)-img1(x1,y1+1);
                i=i+1;
            end
            beta=max(abs(e));
            
            %apply the function
            i=1;
            y1=y+(a/2)-1;
            for x1=x:(x+a-1)
                if h(1,i) < -beta
                    img1(x1,y1)= (img1(x1,y1)+img1(x1,y1+1))/(2+beta);
                elseif h(1,i) >beta
                    if 2-beta ~=0 
                        img1(x1,y1)=(img1(x1,y1)+img1(x1,y1+1))/(2-beta);
                    end
                else
                    img1(x1,y1)=img1(x1,y1);
                end
                i=i+1;
            end 
            
            i=1;
            y1=y+(a/2);
            for x1=x:(x+a-1)
                if h(1,i) < -beta
                    if 2-beta ~=0 
                        img1(x1,y1)= (img1(x1,y1)+img1(x1,y1+1))/(2-beta);
                    end 
                elseif h(1,i) >beta
                    img1(x1,y1)=(img1(x1,y1)+img1(x1,y1+1))/(2+beta);
                else
                    img1(x1,y1)=img1(x1,y1);
                end
                i=i+1;
            end
           xy=IR; 
        end
    end
    
    
        
        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -