混合方法 SSR.m

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

%%%%%%%%%%%%%%%RGB normalisation%%%%%%%%%%%%%%%%%%%%%%
%its cascaded implementain of 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=;
% minG=;
% minB=;
% [srow,scol]=find(R== & G== & B==);
% if(isempty(srow) && isempty(scol))
minR=min(min(R));
% end
R=R-minR; S=zeros(H,W);
[srow,scol]=find(R==);
[sm,sn]=size(srow); for i=:sm
S(srow(i),scol(i))=;
end
mstd=sum(sum(S))
Nstd=(H*W)-mstd; Cst=;
Cst=double(Cst);
for i=:H
for j=:W
a=R(i,j);
b=R(i,j);
Cst=a+b+Cst;
end
end
%%%%sum of black pixels%%%%%%%%%%%
blacksumR=;
for i=:sm
blacksumR=blacksumR+R(srow(i),scol(i));
end
Cstd = Cst/(*Nstd)
CavgR=sum(sum(R))./(H*W)
Rsc=Cstd./CavgR
R=R.*Rsc;
C=R;
C=C/;
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=;
if (Yavg<)
T=1.4
elseif (Yavg>)
T=0.6
end
T
if (T~=)
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(:,:,);
image_g=sourceImage(:,:,);
image_b=sourceImage(:,:,); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% r=;
cParam=;
block=*r+;
sum=0.0;
for i=:block
for j=:block
gauss(i,j)=exp((-((i-r-)^+(j-r-)^))/cParam^);
sum=sum+gauss(i,j);
end
end
for i=:block
for j=:block
gauss(i,j)=gauss(i,j)/sum;
end
end %%%%%%%%%%%R%%%%%%%%%%%%%
Img = double(image_r);
K=imfilter(Img,gauss,'replicate','conv');
G=log(Img+)-log(K+); mi=min(min(G));
ma=max(max(G));
destImage_r=(G-mi)*/(ma-mi); %%%%%%%%%%%%%%G%%%%%%%%%%%%%
Img = double(image_g);
K=imfilter(Img,gauss,'replicate','conv');
G=log(Img+)-log(K+); mi=min(min(G));
ma=max(max(G));
destImage_g=(G-mi)*/(ma-mi);
%%%%%%%%%%%%%B%%%%%%%%%%%%%%%%%%
Img = double(image_b);
K=imfilter(Img,gauss,'replicate','conv');
G=log(Img+)-log(K+); mi=min(min(G));
ma=max(max(G));
destImage_b=(G-mi)*/(ma-mi);
%%%%%%%%%%%%%%%%%%
destImageSSR=cat(,destImage_r,destImage_g,destImage_b);
figure;
imshow(uint8(destImageSSR)); %etinex
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
r=;
cParam1=;
cParam2=;
cParam3=;
block=*r+;
sum1=0.0;
sum2=0.0;
sum3=0.0;
for i=:block
for j=:block
gauss1(i,j)=exp((-((i-r-)^+(j-r-)^))/cParam1^);
sum1=sum1+gauss1(i,j);
gauss2(i,j)=exp((-((i-r-)^+(j-r-)^))/cParam2^);
sum2=sum2+gauss2(i,j);
gauss3(i,j)=exp((-((i-r-)^+(j-r-)^))/cParam3^);
sum3=sum3+gauss3(i,j);
end
end
for i=:block
for j=: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+)-(/)*(log(K1+)+log(K2+)+log(K3+)); mi=min(min(G));
ma=max(max(G));
destImage_r=(G-mi)*/(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+)-(/)*(log(K1+)+log(K2+)+log(K3+)); mi=min(min(G));
ma=max(max(G));
destImage_g=(G-mi)*/(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+)-(/)*(log(K1+)+log(K2+)+log(K3+)); mi=min(min(G));
ma=max(max(G));
destImage_b=(G-mi)*/(ma-mi); %%%%%%%%%%%%%%%%%%
destImageMSR=cat(,destImage_r,destImage_g,destImage_b);
figure;
imshow(uint8(destImageMSR));

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

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

retinex相关代码汇总的更多相关文章

  1. [转帖]xserver相关知识汇总

    xserver相关知识汇总 https://blog.csdn.net/QTVLC/article/details/81739984   本文主要是从以下几个方面介绍xorg-xserver 相关的知 ...

  2. 常见.NET功能代码汇总 (2)

    常见.NET功能代码汇总 23,获取和设置分级缓存 获取缓存:首先从本地缓存获取,如果没有,再去读取分布式缓存写缓存:同时写本地缓存和分布式缓存 private static T GetGradeCa ...

  3. 常见.NET功能代码汇总

    1,在Web上修改指定文件位置的Web.config 这里需要使用 WebConfigurationManager 类,但必须使用WebConfigurationFileMap类来指定文件位置,看代码 ...

  4. [ARM] Cortex-M Startup.s启动文件相关代码解释

    1. 定义一个段名为CSTACK, 这里: NOROOT表示如何定义的段没有被关联,那么同意会被优化掉,如果不想被优化掉就使用ROOT. 后面的括号里数字表示如下: (1):这个段是2的1次方即2字节 ...

  5. Kafka Producer相关代码分析【转】

    来源:https://www.zybuluo.com/jewes/note/63925 @jewes 2015-01-17 20:36 字数 1967 阅读 1093 Kafka Producer相关 ...

  6. 命令行方式使用abator.jar生成ibatis相关代码和sql语句xml文件

    最近接手一个老项目,使用的是数据库是sql server 2008,框架是springmvc + spring + ibatis,老项目是使用abator插件生成的相关代码,现在需要增加新功能,要添加 ...

  7. Magento Table Rate运费国家代码汇总

    Magento Table Rate是三种内置未调用第三方API运费方式中最强大的一个.通过设置国家,区域,邮编,价格来划分不同的运费等级.该方式基本能够满足轻量级的B2C商城的运费模式.这里收集下国 ...

  8. myBatis自动生成相关代码文件配置(Maven)

    pom.xml文件添加配置 <build> <finalName>generator</finalName> <plugins> <!-- mav ...

  9. 临时2级页表的初始化过程 head_32.S 相关代码解释

    page_pde_offset = (__PAGE_OFFSET >> 20); /* __PAGE_OFFSET是0xc0000000,page_pde_offset = 3072 = ...

随机推荐

  1. Direct-X学习笔记--三维摄像机

    一.介绍 哇! 到了传说中的3D摄像机啦! 之前我们写的东东,都是观察点不动,通过世界变换让东西动,今天,通过三维摄像机我们就能够改变我们的观察点,观察方向,任意在三维空间中驰骋.之前我们所设定的视角 ...

  2. mac下为什么光标按方向键只能一个字一个字地蹦

    系统偏好设置-键盘 把按键重复拉到最快,重复前延迟拉到最短

  3. hdu26道动态规划总结

    前言:我们队的dp一直是我在做,说不上做的很顺,有些可以做,有些不能做.到现在为止,做dp题目也有七八十道了,除了背包问题的题目我可以说有百分之七八十的把握ac的话,其他类型的dp,还真没有多大把握. ...

  4. 基于jQuery点击圆形边框弹出图片信息

    分享一款基于jQuery点击圆形边框弹出图片信息.这是一款鼠标经过图片转换成圆形边框,点击可弹出文字信息.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id=&q ...

  5. C#创建资源文件

    资源文件顾名思义就是存放资源的文件.资源文件在程序设计中有着自身独特的优势,他独立于源程序,这样资源文件就可以被多个程序使用.同时在程序设计的时候,有时出于安全或者其他方面因素的考虑,把重要东西存放在 ...

  6. write something

    今天是2013年7月8日了. 办公室里灯光很柔和,但是雨后的窗外让天空很亮,光线乘机也溜了进来. 偶尔想去联系某个人,点开了她的资料,进去了她的博客.看了这几年来为数不多不的几篇博客.可以看到一个人的 ...

  7. java.lang.OutOfMemoryError: Java heap space 解决方法

    从网上抄过来的,因为经常碰到这个问题,记录一下. java.lang.OutOfMemoryError: Java heap space 解决方法 这个问题的根源是jvm虚拟机的默认Heap大小是64 ...

  8. Intellij IDEA 部署 项目在tomcat 原理

    https://www.zhihu.com/question/54757013 Intellij IDEA通过tomcat部署web项目的机制 IntelliJ IDEA通过Tomcat启动项目过程分 ...

  9. CentOS 下 MySQL 5.7 编译安装

    MySQL5.7主要特性: 1—更好的性能:对于多核CPU.固态硬盘.锁有着更好的优化,每秒100W QPS已不再是MySQL的追求,下个版本能否上200W QPS才是吾等用户更关心的 2—更好的In ...

  10. 关于Android中Fragment静态和动态加载的方法

    一.静态加载 1.首先创建一个layout布局fragment.xml,里面放要显示和操作的控件 2.创建一个layout布局main1.xml,用来实现页面的跳转(跳转为要实现静态加载的界面) 3. ...