function B=FMR(A)
rgb=A;%需要处理的图片
m=size(rgb,1);
n=size(rgb,2);
for k=0:255
rr0(k+1)=length(find(rgb(:,:,1)==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
% figure,bar(0:255,rr0,'g') %绘制直方图
% title('原图像直方图')
for i=1:m
for j=1:n
rr(i,j)=logm(double(rgb(i,j,1))+eps);
gg(i,j)=logm(double(rgb(i,j,2))+eps);
bb(i,j)=logm(double(rgb(i,j,3))+eps);
end
end
rr=rr/max(max(rr(:)));
gg=gg/max(max(gg(:)));
bb=bb/max(max(bb(:)));
rrr= retinex_frankle_mccann(rr, 8);
ggg= retinex_frankle_mccann(gg, 8);
bbb= retinex_frankle_mccann(bb, 8);
rgg=(rrr.*ggg.*bbb).^(1/3);
for i=1:m
for j=1:n
rrr(i,j)=round(exp(rrr(i,j)*5.54));
ggg(i,j)=round(exp(ggg(i,j)*5.54));
bbb(i,j)=round(exp(bbb(i,j)*5.54));
end
end
rgb=cat(3,uint8(rrr),uint8(ggg),uint8(bbb));
rgb=max(min(rgb,255),0);
for k=0:255
rr0(k+1)=length(find(rgb(:,:,1)==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
% figure,bar(0:255,rr0,'g') %绘制直方图
% title('原图像直方图')
sz=size(rgb);
m=sz(1,1);
n=sz(1,2);
rr=rgb(:,:,1);
gg=rgb(:,:,2);
bb=rgb(:,:,3);
rr0=find(rr)/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
rr1(1,1)=rr0(1,1);
rr0=rr0';
for k=2:256
rr1(1,k)=rr1(1,k-1)+rr0(1,k);
end
S2=round((rr1*255)+0.5); %将Sk归到相近级的灰度
rrr=rr;
ggg=gg;
bbb=bb;
for i=0:255
rrr(find(rr==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素
ggg(find(gg==i))=S2(i+1);
bbb(find(bb==i))=S2(i+1);
end
rgb1=cat(3,rrr,ggg,bbb);
rgb1=max(min(rgb1,255),0);
rr2=zeros(1,256);
for k=0:255
rr2(k+1)=length(find(rgb1(:,:,1)==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
function CompareWith(s_row, s_col)
global RR IP OP NP Maximum
IP = OP;
if (s_row + s_col > 0)
IP((s_row+1):end, (s_col+1):end) = OP(1:(end-s_row), 1:(end-s_col)) + ...
RR((s_row+1):end, (s_col+1):end) - RR(1:(end-s_row), 1:(end-s_col));
else
IP(1:(end+s_row), 1:(end+s_col)) = OP((1-s_row):end, (1-s_col):end) + ...
RR(1:(end+s_row),1:(end+s_col)) - RR((1-s_row):end, (1-s_col):end);
end
IP(IP > Maximum) = Maximum; % The Reset operation
NP = (IP + OP)/2; % average with the previous Old Product
OP = NP; % get ready for the next compariso
end
function Retinex = retinex_frankle_mccann(L, nIterations)
global RR OP NP Maximum
RR= L;
Maximum= max(L(:)); % maximum color value in the image
[nrows, ncols] = size(L);
shift = 2^(fix(log2(min(nrows, ncols)))-1); % initial shift
OP = Maximum*ones(nrows, ncols); % initialize Old Product
while (abs(shift) >= 1)
for i = 1:nIterations
CompareWith(0, shift); % horizontal step
CompareWith(shift, 0); % vertical step
end
shift = -shift/2; % update the shift
end
Retinex = NP;
end
k1=double(min(min(rgb1)))/255;
k2=double(max(max(rgb1)))/255;
a1=imadjust(rgb1(:,:,1),[k1(1);k2(1)],[0;1]);
a2=imadjust(rgb1(:,:,2),[k1(2);k2(2)],[0;1]);
a3=imadjust(rgb1(:,:,3),[k1(3);k2(3)],[0;1]);
B=cat(3,a1,a2,a3);
end
FMR.rar_fmr_fmr图像处理
版权申诉
118 浏览量
2022-09-21
19:13:28
上传
评论
收藏 1KB RAR 举报
alvarocfc
- 粉丝: 105
- 资源: 1万+
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0