24小时热门版块排行榜    

查看: 1408  |  回复: 1

彩虹猪

新虫 (小有名气)

[求助] ssr单尺度算法

求各位大神指点:谢谢
根据Retinex图像增强公式:
S(x,y) = R(x,y)×L(x,y)??S为原图 R为要求的入射分量图 L为亮度图
取对数
log(S(x,y)) = log(R(x,y)) + log(L(x,y));
定义一个高斯函数
G(x,y)=Ke^(-(x*x+y*y)/c*c)这里的c是卷积尺度c=80
并且一般设L(x,y)=G(x,y)*S(x,y);这里的*是卷积
然后得到增强后的图像log(R(x,y))= log(S(x,y))??+??log(G(x,y)*S(x,y) );
我自己编写的程序如下:可是现实都不对啊 为什么呢 要不全黑 要么全白的 有没有高手指点一下 困扰很久了
clear all;clc;
I=imread('bs.jpg');


R=I(:,:,1);%获取R通道
G=I(:,:,2);%获取G通道
B=I(:,:,3);%获取B通道
[m,n]=size(R);%获取图像大小
Rd=double(R);%R将整形转换为浮点型
Gd=double(G);%G将整形转换为浮点型
Bd=double(B);%B将整形转换为浮点型
Rlog=log(Rd+1);%R将浮点型转换为对数
Glog=log(Gd+1);%G将浮点型转换为对数
Blog=log(Bd+1);%B将浮点型转换为对数
fftr=fft2(Rd);%R二维离散傅立叶变换
fftg=fft2(Gd);%G二维离散傅立叶变换
fftb=fft2(Bd);%B二维离散傅立叶变换
%建立高斯函数进行卷积运算
c=80;%C是高斯环绕尺度,λ是一个尺度
s=zeros(m,n);
for i=1:m
? ? for j=1:n
? ?? ???s(i,j)=exp(-(i*i+j*j)/c*c);
? ? end
end
K=s/(sum(sum(s)));%求归一化K
g=K.*s;%高斯函数
g=double(g);
g=fft2(g,size(g,1),size(g,2));%二维离散傅立叶变换
%Rc=conv(g,fftr);%R进行卷积运算,获得低频图像
%Gc=conv(g,fftg);%G进行卷积运算
%Bc=conv(g,fftb);%B进行卷积运算
Rc=g.*fftr;%R进行卷积运算,获得低频图像
Gc=g.*fftg;%G进行卷积运算
Bc=g.*fftb;%B进行卷积运算
iffRc=ifft2(Rc);%R傅里叶反转
iffGc=ifft2(Gc);%G傅里叶反转
iffBc=ifft2(Bc);%B傅里叶反转
Rclog=log(iffRc+1);%转换到对数域
Gclog=log(iffGc+1);%转换到对数域
Bclog=log(iffBc+1);%转换到对数域
gR=Rlog-Rclog;%用原图像减去地频图像
gG=Glog-Gclog;%用原图像减去地频图像
gB=Blog-Bclog;%用原图像减去地频图像
expR=exp(gR);%取反对数,得到增强的图像
expG=exp(gG);%取反对数,得到增强的图像
expB=exp(gB);%取反对数,得到增强的图像
%图像灰度拉伸
%此时的expR,G,B值的范围并不是0–255,所以还需要进行线性拉伸并转换成相应的格式输出显示
MIN = min(min(expR));%min(expR)求出每一列中最小的值min(min(expR))求出整个矩阵中最小的值
MAX = max(max(expR));%max(expR)求出每一列中最大的值max(max(expR))求出整个矩阵中最大的值
expR = (expR - MIN)/(MAX - MIN);%灰度变换增强
expR = adapthisteq(expR);%通过使用对比度限制的自适应直方图均衡化来增强灰度图像的对比度


MIN1 = min(min(expG));%min(expG)求出每一列中最小的值min(min(expG))求出整个矩阵中最小的值
MAX1 = max(max(expG));%max(expG)求出每一列中最大的值max(max(expG))求出整个矩阵中最大的值
expG = (expG - MIN1)/(MAX1 - MIN1);%灰度变换增强
expG = adapthisteq(expG);%通过使用对比度限制的自适应直方图均衡化来增强灰度图像的对比度


MIN2 = min(min(expB));%min(expB)求出每一列中最小的值min(min(expB))求出整个矩阵中最小的值
MAX2 = max(max(expB));%max(expB)求出每一列中最大的值max(max(expB))求出整个矩阵中最大的值
expB = (expB - MIN2)/(MAX2 - MIN2);%灰度变换增强
e

发自小木虫Android客户端
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

彩虹猪

新虫 (小有名气)

2楼2018-10-14 15:57:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 彩虹猪 的主题更新
信息提示
请填处理意见