zoukankan      html  css  js  c++  java
  • retinex相关代码汇总

    混合方法 SSR.m

    matlab代码,本来是RGB,改成了处理灰度图像的。

    %%%%%%%%%%%%%%%RGB normalisation%%%%%%%%%%%%%%%%%%%%%%  
    %its cascaded implementain of 1 section of paper "A FAST SKIN REGION DETECTOR" by  
    %Phil Chen, Dr.Christos Greecos  
    %and  
    %section 2.1 of paper "Simple and accurate face detection in color images" by  
    %YUI TING PAI et al  
    % Coding by Madhava.S.Bhat, Dept of Electronics an communication  
    %Dr.Ambedkar Institute of Technology, Bangalore  
    %madhava.s@dr-ait.org  
    function[]= SSR(IMG)
    IMG=rgb2gray(IMG);
    figure,imshow(IMG)  
    title('original')  
    R=double(IMG);  
    [H,W]=size(R);  
    % minR=0;  
    % minG=0;  
    % minB=0;  
    % [srow,scol]=find(R==0 & G==0 & B==0);  
    % if(isempty(srow) && isempty(scol))  
        minR=min(min(R)); 
    % end  
    R=R-minR;  
      
    S=zeros(H,W);  
    [srow,scol]=find(R==0);  
    [sm,sn]=size(srow);  
      
    for i=1:sm  
         S(srow(i),scol(i))=1;  
    end  
    mstd=sum(sum(S))  
    Nstd=(H*W)-mstd;  
      
    Cst=0;  
    Cst=double(Cst);  
    for i=1:H  
        for j=1:W  
             a=R(i,j);  
             b=R(i,j);    
             Cst=a+b+Cst;            
        end  
    end  
    %%%%sum of black pixels%%%%%%%%%%%  
    blacksumR=0;  
    for i=1:sm  
        blacksumR=blacksumR+R(srow(i),scol(i));  
    end  
    Cstd = Cst/(2*Nstd)  
    CavgR=sum(sum(R))./(H*W)  
    Rsc=Cstd./CavgR   
    R=R.*Rsc;  
    C=R;  
    C=C/255;   
    Y=C;
    figure,imshow(C)  
    title('aft 1st stage of compensation')  
    %normalize Y  
    minY=min(min(Y));  
    maxY=max(max(Y));  
    Y=255.0*(Y-minY)./(maxY-minY);  
    YEye=Y;  
    Yavg=sum(sum(Y))/(W*H)  
      
    T=1;  
    if (Yavg<64)  
        T=1.4  
    elseif (Yavg>192)  
        T=0.6  
    end  
    T    
    if (T~=1)  
        RI=R.^T;  
    else  
        RI=R;  
    end  
      
    Cfinal=uint8(RI);  
    figure,imshow(Cfinal)  
    title('Light intensity compensated')  
      
    clc; 
    clear all; 
    %%%%%%sourceImage%%%%%%%%% 
    sourceImage = imread('F:Users*****Desktop**图像	est.bmp'); 
    %imshow(sourceImage); 
    
    SSR(sourceImage);

    效果不对,不知道哪有问题:

    看灰度图的处理效果还可以。

    【转载自】

    图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法 - onezeros的专栏 - CSDN博客 https://blog.csdn.net/onezeros/article/details/6342661

    【其他】

    SSR matlab实现单尺度retinex算法,实现图像增强。 联合开发网 - pudn.com http://www.pudn.com/Download/item/id/2776026.html

    %retinex% 
    clc; 
    clear all; 
    %%%%%%sourceImage%%%%%%%%% 
    sourceImage = imread('C:UsershuangDesktop����1.bmp'); 
    imshow(sourceImage); 
     
    %%%R,G,B%%%% 
    image_r=sourceImage(:,:,1); 
    image_g=sourceImage(:,:,2); 
    image_b=sourceImage(:,:,3); 
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    
    r=100; 
    cParam=200; 
    block=2*r+1; 
    sum=0.0; 
    for i=1:block 
        for j=1:block 
            gauss(i,j)=exp((-((i-r-1)^2+(j-r-1)^2))/cParam^2); 
            sum=sum+gauss(i,j); 
        end 
    end 
    for i=1:block 
        for j=1:block 
            gauss(i,j)=gauss(i,j)/sum; 
        end 
    end 
     
    %%%%%%%%%%%R%%%%%%%%%%%%% 
    Img = double(image_r); 
    K=imfilter(Img,gauss,'replicate','conv');   
    G=log(Img+1)-log(K+1);  
     
    mi=min(min(G)); 
    ma=max(max(G)); 
    destImage_r=(G-mi)*255/(ma-mi);  
            
    %%%%%%%%%%%%%%G%%%%%%%%%%%%% 
    Img = double(image_g); 
    K=imfilter(Img,gauss,'replicate','conv');   
    G=log(Img+1)-log(K+1); 
        
    mi=min(min(G)); 
    ma=max(max(G)); 
    destImage_g=(G-mi)*255/(ma-mi); 
    %%%%%%%%%%%%%B%%%%%%%%%%%%%%%%%% 
    Img = double(image_b); 
    K=imfilter(Img,gauss,'replicate','conv');   
    G=log(Img+1)-log(K+1); 
        
    mi=min(min(G)); 
    ma=max(max(G)); 
    destImage_b=(G-mi)*255/(ma-mi); 
    %%%%%%%%%%%%%%%%%% 
    destImageSSR=cat(3,destImage_r,destImage_g,destImage_b); 
    figure; 
    imshow(uint8(destImageSSR)); 
     
    %etinex
    clc 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    r=100; 
    cParam1=30; 
    cParam2=100; 
    cParam3=300; 
    block=2*r+1; 
    sum1=0.0; 
    sum2=0.0; 
    sum3=0.0; 
    for i=1:block 
        for j=1:block 
            gauss1(i,j)=exp((-((i-r-1)^2+(j-r-1)^2))/cParam1^2); 
            sum1=sum1+gauss1(i,j); 
            gauss2(i,j)=exp((-((i-r-1)^2+(j-r-1)^2))/cParam2^2); 
            sum2=sum2+gauss2(i,j); 
            gauss3(i,j)=exp((-((i-r-1)^2+(j-r-1)^2))/cParam3^2); 
            sum3=sum3+gauss3(i,j); 
        end 
    end 
    for i=1:block 
        for j=1:block 
            gauss1(i,j)=gauss1(i,j)/sum1; 
            gauss2(i,j)=gauss2(i,j)/sum2; 
            gauss3(i,j)=gauss3(i,j)/sum3; 
        end 
    end 
     
    %%%%%%%%%%%R%%%%%%%%%%%%% 
    Img = double(image_r); 
    K1=imfilter(Img,gauss1,'replicate','conv'); 
    K2=imfilter(Img,gauss2,'replicate','conv'); 
    K3=imfilter(Img,gauss3,'replicate','conv'); 
     
    G=log(Img+1)-(1/3)*(log(K1+1)+log(K2+1)+log(K3+1));  
     
    mi=min(min(G)); 
    ma=max(max(G)); 
    destImage_r=(G-mi)*255/(ma-mi);  
            
    %%%%%%%%%%%%%%G%%%%%%%%%%%%% 
    Img = double(image_g); 
    K1=imfilter(Img,gauss1,'replicate','conv'); 
    K2=imfilter(Img,gauss2,'replicate','conv'); 
    K3=imfilter(Img,gauss3,'replicate','conv'); 
     
    G=log(Img+1)-(1/3)*(log(K1+1)+log(K2+1)+log(K3+1));  
        
    mi=min(min(G)); 
    ma=max(max(G)); 
    destImage_g=(G-mi)*255/(ma-mi); 
    %%%%%%%%%%%%%B%%%%%%%%%%%%%%%%%% 
    Img = double(image_b); 
    K1=imfilter(Img,gauss1,'replicate','conv'); 
    K2=imfilter(Img,gauss2,'replicate','conv'); 
    K3=imfilter(Img,gauss3,'replicate','conv'); 
     
    G=log(Img+1)-(1/3)*(log(K1+1)+log(K2+1)+log(K3+1));  
        
    mi=min(min(G)); 
    ma=max(max(G)); 
    destImage_b=(G-mi)*255/(ma-mi); 
     
    %%%%%%%%%%%%%%%%%% 
    destImageMSR=cat(3,destImage_r,destImage_g,destImage_b); 
    figure; 
    imshow(uint8(destImageMSR)); 
     
    View Code

     

     【别人博客里的一些效果图】

    retinex图像增强算法的研究 - zmshy2128 - 博客园 https://www.cnblogs.com/zmshy2128/p/6126987.html

    关于Retinex图像增强算法的一些新学习。 - Imageshop - 博客园 https://www.cnblogs.com/Imageshop/p/3810402.html

    Retinex图像增强算法代码 - liyingjiang22的博客 - CSDN博客 https://blog.csdn.net/liyingjiang22/article/details/52903127

    图像增强处理之:同态滤波与Retinex算法(二)McCann Retinex和McCann99 Retinex迭代算法 - 满城风絮 - CSDN博客 https://blog.csdn.net/piaoxuezhong/article/details/78248219

  • 相关阅读:
    XMLhttp.status返回值及xmlhttp.readState值
    移动端meta设置
    css自定义checkbox样式
    base.css(css基础样式)
    css文本块中首行文本的缩进,字间距
    jq里的 ajax( ) 方法
    小程序 背景图在开发工具上显示,但是在真机调试时无效
    小程序登陆锁-登录逻辑
    背景图尺寸(background-size)
    动态渲染style 背景图片
  • 原文地址:https://www.cnblogs.com/wxl845235800/p/10397426.html
Copyright © 2011-2022 走看看