0

假设根据我之前的问题 ,我已经均衡了图像的直方图,现在问题是如何在图像上应用这个新的均衡直方图?
我的意思是从新的均衡直方图中获取新图像的算法是什么?
在网上看到了一个关于这个的代码。
很明显,这张照片中显示的最后一个 for 循环用于在图像矩阵上应用均衡直方图。
在此处输入图像描述
但我不明白使用的算法。
再次注意,这是一项大学作业,我不允许使用图像处理工具箱中提供的内置功能。

4

2 回答 2

0

好吧,我在这里找到了在图像矩阵上应用新的均衡直方图的算法。
该网页对我有帮助的特定部分如下图所示:
在此处输入图像描述
我为实现该算法而编写的代码在此链接中。
请注意,文件“HistogramEqualization”中的第 22 到 24 行为灰度图像实现了上述算法。RGB 的代码是相同的,只是它应该为每个颜色通道重复。

于 2013-06-25T21:21:21.363 回答
0
  1. 为图像创建直方图。
  2. 计算累积分布函数直方图。
  3. 通过一般直方图均衡公式计算新值。
  4. 为图像中的每个灰度值分配新值。

    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')
    
于 2013-12-05T09:16:13.500 回答