博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
retinex相关代码汇总
阅读量:4557 次
发布时间:2019-06-08

本文共 5028 字,大约阅读时间需要 16 分钟。

 

混合方法 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\**图像\test.bmp'); %imshow(sourceImage); SSR(sourceImage);

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

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

 

 

【转载自】

图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法 - onezeros的专栏 - CSDN博客

【其他】

SSR matlab实现单尺度retinex算法,实现图像增强。 联合开发网 - pudn.com

%retinex% clc; clear all; %%%%%%sourceImage%%%%%%%%% sourceImage = imread('C:\Users\huang\Desktop\����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));  %etinexclc %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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 - 博客园

关于Retinex图像增强算法的一些新学习。 - Imageshop - 博客园

Retinex图像增强算法代码 - liyingjiang22的博客 - CSDN博客

图像增强处理之:同态滤波与Retinex算法(二)McCann Retinex和McCann99 Retinex迭代算法 - 满城风絮 - CSDN博客

转载于:https://www.cnblogs.com/wxl845235800/p/10397426.html

你可能感兴趣的文章
2.如何开机控制笔记本小键盘及大写锁定键
查看>>
php服务器端与android客户端通信问题
查看>>
311. Sparse Matrix Multiplication
查看>>
[LeetCode] Maximum Average Subarray I 子数组的最大平均值
查看>>
C#求圆的周长、面积、体积
查看>>
限制textarea只能输入多个id用英文半角逗号(,)
查看>>
设计模式 解释器模式(Interpreter Parttern)
查看>>
delphi BlowFish加密算法
查看>>
构造函数杂谈
查看>>
分布式缓存技术memcached学习(一)——linux环境下编译memcahed
查看>>
吕震宇老师《设计模式系列》
查看>>
ACM 已结束
查看>>
jQuery事件大全(真的很全)
查看>>
[BZOJ]4644: 经典傻逼题
查看>>
jpa batch批量操作save和persist比较
查看>>
Vue中watch的简单应用
查看>>
js随机生成验证码(数字+字母)
查看>>
Android 自定义 View 浅析
查看>>
Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]
查看>>
链表和数组的区别在哪里?
查看>>