混合方法 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

最新文章

  1. 多线程并发同一个表问题(li)
  2. Json.Net 数据解析
  3. Delphi 中同类型方法的说明
  4. xp远程桌面登陆需要身份验证问题解决
  5. linux 创建和删除目录
  6. u1-nav-css
  7. 【BZOJ】3196: Tyvj 1730 二逼平衡树(区间第k小+树套树)
  8. PHP内置的字符串处理函数
  9. Shell教程3-Shell特殊变量
  10. 【经典DFS】NYOJ-1058-部分和问题
  11. Oracle- 备份单表结构和单表数据
  12. SVM-SVM概述
  13. plsql经验之谈
  14. uva10003 区间DP
  15. PAT1126:Eulerian Path
  16. Xilinx FPGA引脚txt文件导入excel中
  17. URL控制器
  18. Leetcode 存在重复元素 (219,220)
  19. 动态记忆网络(DMN)
  20. GIS性能策略

热门文章

  1. Linux经常使用命令(六) - mv
  2. Oracle行转列SQL
  3. 解决MAC下ctags -R无效的问题
  4. ubantu下安装软件
  5. go--Ubuntu下安装GO LANG,测试输入hello world
  6. 命令运行带参数的jar
  7. pyqt布局管理器QGridLayout简单示例
  8. 实际应用中的C#加密
  9. tmpx75 I2C 温度传感器驱动程序添加
  10. Hive中如何添加自定义UDF函数以及oozie中使用hive的自定义函数