MATLAB图像处理代码分析:灰度化和直方图均衡化
以下代码主要对一张图像进行灰度化和直方图均衡化的处理,并展示处理前后的直方图。
img = imread('test.jpg');
gray_img = rgb2gray(img);
balance_gray = histeq(gray_img);
balance_gray2 = histeq(balance_gray);
figure(1);
imhist(img, 64), title('original')
figure(2);
imhist(balance_gray, 64), title('first')
figure(3);
imhist(balance_gray2, 64), title('second')
代码分析:
-
读取图像:
img = imread('test.jpg');使用imread函数读取名为 'test.jpg' 的图像,并将图像数据存储在变量img中。
-
灰度化:
gray_img = rgb2gray(img);使用rgb2gray函数将彩色图像img转换为灰度图像,并将结果存储在变量gray_img中。
-
直方图均衡化:
balance_gray = histeq(gray_img);使用histeq函数对灰度图像gray_img进行直方图均衡化,并将结果存储在变量balance_gray中。balance_gray2 = histeq(balance_gray);再次使用histeq函数对balance_gray进行直方图均衡化,并将结果存储在变量balance_gray2中。
-
显示直方图:
figure(1);创建一个新的图像窗口。imhist(img, 64), title('original')使用imhist函数显示原始图像img的直方图,参数 64 表示将直方图分成 64 个灰度级。使用title函数设置图像窗口的标题为 'original'。figure(2);创建一个新的图像窗口。imhist(balance_gray, 64), title('first')使用imhist函数显示balance_gray的直方图,并设置标题为 'first'。figure(3);创建一个新的图像窗口。imhist(balance_gray2, 64), title('second')使用imhist函数显示balance_gray2的直方图,并设置标题为 'second'。
相似但不同的代码示例:
img = imread('test.jpg');
gray_img = rgb2gray(img);
balance_gray = histeq(gray_img);
balance_gray2 = histeq(balance_gray);
figure(1);
subplot(2,2,1);
imshow(img);
title('Original Image');
subplot(2,2,2);
imshow(gray_img);
title('Gray Image');
subplot(2,2,3);
imshow(balance_gray);
title('First Histeq');
subplot(2,2,4);
imshow(balance_gray2);
title('Second Histeq');
figure(2);
subplot(2,2,1);
imhist(img, 64);
title('Original Histogram');
subplot(2,2,2);
imhist(gray_img, 64);
title('Gray Histogram');
subplot(2,2,3);
imhist(balance_gray, 64);
title('First Histogram');
subplot(2,2,4);
imhist(balance_gray2, 64);
title('Second Histogram');
代码说明:
- 此代码将图像窗口分为 2x2 的子图布局,并在每个子图中显示不同的图像和直方图。
- 使用
subplot函数来设置子图的位置。 figure(1)显示处理后的图像结果,figure(2)显示直方图结果。- 该代码与原始代码功能相同,但使用了不同的图像显示方式,并使用
subplot函数将图像和直方图组合在一起显示。
总结:
上述代码示例展示了如何使用 MATLAB 对图像进行灰度化和直方图均衡化处理,并显示处理前后图像的直方图。通过不同的代码实现方式,可以灵活地控制图像处理过程和结果的展示。
原文地址: https://www.cveoy.top/t/topic/6vr 著作权归作者所有。请勿转载和采集!