混合方法 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博客 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:\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)); %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

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

retinex相关代码汇总相关推荐

  1. 机器学习的相关代码汇总

    机器学习的相关代码汇总 文章目录 机器学习的相关代码汇总 机器学习相关代码汇总 XGBoost 示例1 示例2 SVM 示例1 示例二 EM 示例1 示例二:GMM 贝叶斯网络 示例一 LDA 机器学 ...

  2. 【radar】毫米波雷达相关开源项目代码汇总(工具箱、仿真、2D毫米波检测、融合、4D毫米波检测、分割、SLAM、跟踪)(6)

    [radar]毫米波雷达相关开源项目代码汇总(工具箱.仿真.2D毫米波检测.融合.4D毫米波检测.分割.SLAM.跟踪)(6) Toolbox pymmw https://github.com/m6c ...

  3. ICCV2021|底层视觉(图像生成,图像编辑,超分辨率等)相关论文汇总(附论文链接/代码)[持续更新]

    ICCV2021|底层视觉和图像生成相关论文汇总(如果觉得有帮助,欢迎点赞和收藏) 1.图像生成(Image Generation) Multiple Heads are Better than On ...

  4. ECCV2020|图像重建(超分辨率,图像恢复,去雨,去雾等)相关论文汇总(附论文链接/代码/解析)

    转载自https://zhuanlan.zhihu.com/p/180551773 原帖地址: ECCV2020|图像重建/底层视觉(超分辨率,图像恢复,去雨,去雾,去模糊,去噪等)相关论文汇总(附论 ...

  5. SINAMICS V20变频器故障代码汇总及相关处理办法和报警复位

    SINAMICS V20变频器故障代码汇总及相关处理办法和报警复位 以下内容仅作为故障报警排查的指导,不具有绝对性,导致变频器故障报警的原因很多,情况也较复杂,本文只是对常见的故障报警原因和处理方法进 ...

  6. 【camera】自动泊车-视觉车位检测相关资料汇总(论文、数据集、源代码、相关博客、演示demo)(1)

    [camera]自动泊车-视觉车位检测相关资料汇总(论文.数据集.源代码.相关博客.演示demo)parking slot detection 论文 2020论文 2019论文 2018论文 2017 ...

  7. 技巧篇:常用的R代码汇总

    技巧篇:常用的R代码汇总 模块1:Xpath的一些练习 #install.packages("rvest") #install.packages("xlsx") ...

  8. 3-3 uniapp、HTML5+、Native.js 功能代码汇总

    3-3 uniapp.HTML5+.Native.js 功能代码汇总 本文只适用于 APP 代码汇总 Android平台 监听手机锁屏,解锁,开屏 var receiver; mui.plusRead ...

  9. 助理电子商务师html,助理电子商务师考试HTML相关试题汇总.doc

    助理电子商务师考试HTML相关试题汇总 22.框架也称为( ),通过框架技术能够把Web浏览器的窗口分成几个独立的区域,每一个区域即为一个框架. (A)表格 (B)栏目 (C)帧 (D)网页 23.使 ...

最新文章

  1. Mnist数据集简介
  2. 中空字符串有什么用_中空玻璃中还要充氩气、还要防泄漏、你知道吗?
  3. Spring Boot(十四)RabbitMQ延迟队列
  4. [转]CocoaPods安装和使用教程
  5. 简单上手腾讯X5页面浏览
  6. linux打印jvm内存堆栈_5款强大的JVM 性能调优监控工具
  7. linux服务器配置ssl证书
  8. 浅析Numpy.genfromtxt及File I/O讲解
  9. Redis链表结构深入
  10. Cocos2d-x 结合Box2D开发Android游戏配置方法
  11. 【刷算法】按照之字形打印二叉树
  12. 超出想象-超级终端显示器
  13. (转) 如何在JavaScript与ActiveX之间传递数据1
  14. MySQL索引性能测试
  15. 计算机硬盘和光驱的接口类型,请问 各位大神,我的主板硬盘接口类型和光驱接口类型...
  16. 华为最强科普:什么是DSP?
  17. 比热容相关的热量计算机应用,13章三节比热容.doc
  18. 【转】在内核中之获取HKEY_CURRENT_USER对应路径
  19. DRF 3.x Throttling 节流使用示例和配置方法
  20. 白帽子(5)- 命令注入与代码注入区别

热门文章

  1. 财富赢家模拟炒股最新版分享,股市小散的利器
  2. Aspose工具实现word和ppt转pdf功能及遇到的一些问题
  3. dng_SDK build win7
  4. i9-13900K华硕 Z-790A wifi D5吹雪 编译Qt 源码实测
  5. GDB源码移动后如何调试以及几种解决方法
  6. 千牛卖家版官方版 v3.00.03N 电脑版
  7. MyBatis-Plus(2) 数据权限方案
  8. 物联网为零售客户打造全新消费体验
  9. 计算机网络期末复习笔记
  10. 转载:ps如何模仿周围图像——用仿制印章