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 に答える