數字影像處理中的直方圖均衡化


在數字影像處理中,直方圖均衡化是一個增強影像對比度和提高影像視覺質量的過程。我們可以使用MATLAB等數字工具來執行直方圖均衡化。本教程旨在透過使用MATLAB來解釋數字影像處理中的直方圖均衡化。但在講解之前,讓我們先對直方圖均衡化有一個基本的瞭解。

什麼是直方圖均衡化?

如上所述,直方圖均衡化是一種提高數字影像對比度和視覺質量的技術。直方圖均衡化更均勻地重新分佈圖像中畫素強度的值。總的來說,直方圖均衡化是一種平衡影像畫素強度的技術。

  • 直方圖是一個圖表或圖形,顯示影像中畫素強度值的頻率分佈。

  • 影像的直方圖均衡化涉及幾個不同的過程,例如計算累積分佈函式 (CDF)、變換函式,然後應用這些函式來均衡影像。

  • 直方圖均衡化廣泛應用於各個領域,例如增強醫學影像、衛星影像、掃描文件等等。

現在,讓我們瞭解一些關於直方圖均衡化的重要點,在將它應用於影像時這些點非常重要。

關於直方圖均衡化的重要點

以下是一些我們在影像處理中使用它時應牢記的關鍵點

  • 直方圖均衡化是一個全域性影像增強過程,因為它利用整個影像的直方圖來執行增強。

  • 直方圖均衡化並非增強所有型別影像視覺質量的合適技術,因為它可能會產生不真實的增強效果。

  • 直方圖均衡化被認為是增強低對比度影像的有效方法。

現在,讓我們看看使用MATLAB進行直方圖均衡化所涉及的步驟。

如何使用MATLAB執行直方圖均衡化?

在MATLAB中,有一個內建函式“histeq”,用於執行灰度影像的直方圖均衡化。

下面解釋了使用MATLAB執行直方圖均衡化的分步過程

步驟 (1) - 使用“imread”函式讀取輸入影像。

img = imread('Image.jpg');

步驟 (2) - 將輸入影像轉換為灰度影像進行處理。按如下方式操作:

gray_img = rgb2gray(img);

步驟 (3) - 使用“histeq”函式執行灰度影像的直方圖均衡化。按如下方式操作:

eq_img = histeq(gray_img);

步驟 (4) - 顯示均衡後的影像。按如下方式操作:

imshow(eq_img);

因此,在MATLAB中,使用“histeq”函式進行直方圖均衡化是一個簡單的四步過程。

現在讓我們舉一些例子來實際理解並檢視結果,看看直方圖均衡化如何作用於影像。

MATLAB在數字影像處理中執行直方圖均衡化的示例

如果您想了解如何在MATLAB中實現程式碼以在數字影像處理中執行直方圖均衡化,請瀏覽以下示例。

示例 (1)

% MATLAB code to perform histogram equalization
% Read the input image
img = imread('https://tutorialspoint.tw/assets/questions/media/14304-1687425236.jpg');

% Convert the input image to grayscale
gray_img = rgb2gray(img);

% Perform histogram equalization using the “histeq” function
eq_img = histeq(gray_img);

% Display the original gray image, histogram of gray image, histogram of equalized image, and equalized image
subplot(2, 2, 1);
imshow(gray_img);
title('Original Image');

subplot(2, 2, 2);
imhist(gray_img);
title('Histogram of Gray Image');

subplot(2, 2, 3);
imhist(eq_img);
title('Histogram of Equalized Image');

subplot(2, 2, 4);
imshow(eq_img);
title('Equalized Image');

輸出

程式碼說明

在這個MATLAB程式碼中,我們首先讀取輸入影像,這是一個RGB影像。因此,接下來我們將它轉換為灰度影像進行處理。之後,我們對影像進行直方圖均衡化以增強其視覺效果。這是透過使用“histeq”函式完成的。最後,我們顯示原始灰度影像及其直方圖,以及均衡後的影像及其直方圖。這些輸出如上圖所示。

為了更好地理解,讓我們再用不同的影像舉個例子。

示例 (2)

% MATLAB code to perform histogram equalization
% Read the input image
img = imread('https://tutorialspoint.tw/assets/questions/media/14304-1687425269.jpg');

% Convert the input image to grayscale
gray_img = rgb2gray(img);

% Perform histogram equalization using the “histeq” function
eq_img = histeq(gray_img);

% Display the original gray image, histogram of gray image, histogram of equalized image, and equalized image
subplot(2, 2, 1);
imshow(gray_img);
title('Original Image');

subplot(2, 2, 2);
imhist(gray_img);
title('Histogram of Gray Image');

subplot(2, 2, 3);
imhist(eq_img);
title('Histogram of Equalized Image');

subplot(2, 2, 4);
imshow(eq_img);
title('Equalized Image');

輸出

結論

總而言之,直方圖均衡化是一種影像處理方法,用於提高影像的對比度和視覺質量。這種影像處理技術分析並重新分佈圖像中的畫素強度值,以獲得更均衡的強度級別。

在本教程中,我已經詳細解釋了使用MATLAB進行直方圖均衡化的概念。此外,我還包含了MATLAB程式設計中的示例程式,以便更好地瞭解執行影像直方圖均衡化的程式碼實現。您可以使用您自己的影像嘗試這些程式碼。

更新於:2023年10月10日

547 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告