在MATLAB中不使用histeq()函式進行直方圖均衡化
在數字影像處理中,直方圖均衡化是一種提高數字影像視覺質量的常用方法。我們可以使用MATLAB進行數字影像的直方圖均衡化。MATLAB中有一個內建函式“histeq”可以完成此任務。但是,我們也可以不使用MATLAB的“histeq”函式來進行直方圖均衡化。
在本教程中,我將向您展示如何在MATLAB中不使用“histeq”函式進行直方圖均衡化的過程。但在開始之前,讓我們先概述一下數字影像處理中的直方圖和直方圖均衡化。
什麼是直方圖和直方圖均衡化?
在數字影像處理中,用於顯示數字影像中畫素強度值分佈的圖形表示被稱為直方圖。
有時,在一幅影像中,畫素強度在一個特定區域較高,導致影像對比度差和視覺質量差。有一種稱為直方圖均衡化的技術可以重新分配影像的畫素強度,以獲得增強的影像。
直方圖均衡化是使影像直方圖均勻化以提高其對比度的常用技術之一。
現在讓我們討論一下如何在MATLAB中不使用“histeq”函式進行直方圖均衡化的過程。
在MATLAB中不使用Histeq函式進行直方圖均衡化
我們可以利用MATLAB對影像進行直方圖均衡化。為此,MATLAB提供了一個內建函式“histeq”。但是,我們也可以不使用此函式來進行直方圖均衡化。
以下是MATLAB中不使用“histeq”函式對影像直方圖進行均衡化的步驟。
步驟(1) - 使用“imread”函式讀取輸入影像。
步驟(2) - 根據需要將輸入影像轉換為灰度影像。為此,請使用“rgb2gray”函式。
步驟(3) - 使用“imhist”函式建立灰度影像的直方圖。
步驟(4) - 計算影像的機率密度函式。
步驟(5) - 計算影像的累積分佈函式。
步驟(6) - 均衡直方圖。
步驟(7) - 顯示結果。
這就是如何在MATLAB中不使用“histeq”函式對影像進行直方圖均衡化的方式。
示例
現在,讓我們來看一個例子來理解這些步驟在MATLAB程式設計中的實現。
% MATLAB code to perform histogram equalization without using histeq function
% Read the input image
img = imread('https://tutorialspoint.tw/assets/questions/media/14304-1687425269.jpg');
% Convert the input image to grayscale if necessary
gray_img = rgb2gray(img);
% Create the histogram of the input image
hist = imhist(gray_img);
% Calculate the probability density function of the image
PDF = hist / numel(gray_img);
% Calculate the cumulative distribution function
CDF = cumsum(PDF);
% Equalize the histogram
eq_hist = uint8(255 * CDF(gray_img + 1));
% Display the input and equalized images and their histograms
figure;
subplot(2, 2, 1), imshow(gray_img), title('Input Image');
subplot(2, 2, 2), imhist(gray_img), title('Input Image Histogram');
subplot(2, 2, 3), imshow(eq_hist), title('Equalized Image');
subplot(2, 2, 4), imhist(eq_hist), title('Equalized Image Histogram');
輸出
執行此程式碼時,將產生以下輸出:
程式碼解釋
在這個MATLAB示例中,我們首先使用“imread”函式讀取輸入影像,並將其儲存在變數“img”中。接下來,我們使用“rgb2gray”函式將輸入影像轉換為灰度影像,並將生成的影像儲存在變數“gray_img”中。
之後,我們使用“imhist”函式計算影像的直方圖,並將結果儲存在變數“hist”中。然後,利用此直方圖,我們計算影像的機率密度函式,並將結果儲存在變數“PDF”中。接下來,我們使用“cumsum”函式計算影像的累積分佈函式,並將結果儲存在“CDF”變數中。
然後,我們利用“CDF”對影像進行直方圖均衡化,並將增強的影像儲存在變數“eq_hist”中。
最後,我們使用“imshow”函式顯示輸入影像和均衡化後的影像,並使用“imhist”函式顯示它們的直方圖。
結論
這就是關於如何在不使用MATLAB的“histeq”函式的情況下進行直方圖均衡化的全部內容。在本教程中,我解釋瞭如何在不使用“histeq”函式的情況下逐步執行影像直方圖均衡化的過程。我還包含了一個MATLAB程式設計示例來演示所涉及步驟的實現。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP