假设基于我的my previous question
我已经均衡了图像的直方图,现在问题是如何在图像上应用这个新的均衡直方图?
我的意思是从新的均衡直方图中获取新图像的算法是什么?
我见过a code about this in the net.
很明显,这张照片中显示的最后一个for循环用于在图像矩阵上应用均衡的直方图
但我不明白使用的算法
再次注意,这是一项大学任务,我不允许使用图像处理工具箱中提供的内置函数。
答案 0 :(得分:0)
我找到了在图像矩阵here上应用新的均衡直方图的算法
帮助我的这个网页的具体部分如下图所示:
我为实现这个算法而编写的代码在this link.中
注意文件中的第22到24行" HistogramEqualization"为灰度图像实现上述算法。并且RGB的代码是相同的,除了它应该针对每个颜色通道重复。
答案 1 :(得分:0)
为图像中的每个灰度值指定新值。
clc
close all
clear all
%% HISTOGRAM EQULAIZER
%%
I1= imread ('C:\Users\sepideh\Pictures\dip\PC040311.jpg');
zz=rgb2gray(I1);
figure,subplot(1,2,1),imshow(zz), title('original image')
subplot(1,2,2),imhist(zz),title('original image histogram')
%% Calculating the CDF
hst=imhist(zz);
j=1;
cdff(1,1)=hst(1,1);
for i=2:256
cdff(i)=hst(i)+cdff(i-j);
end
cdff1=cdff';
cdf_min=min(cdff);
[row col]=size(zz);
mn=row*col;
figure, plot(cdff), title('CDF of Image')
%% calcuting new intensity
for indx=1:length(cdff)
h(indx)=round((cdff(indx)-cdf_min)/(mn-cdf_min)*255);
end
h1=h';
figure,plot(h1), title('New value for General Histogram')
%% EQULIZED IMAGE
HIm=uint8(zeros(size(zz,1),size(zz,2)));
for i=1:row;
for j=1:col;
HIm(i,j) = h((zz(i,j)+1));
end
end
figure,subplot(1,2,1),imshow(HIm), title('Equlized Image')
subplot(1,2,2),imhist(HIm) ,title('Equlized image histogram')