用matlab对图片进行直方图均衡化操作
时间: 2024-01-09 08:48:58 浏览: 26
以下是对一张灰度图像进行直方图均衡化的matlab代码:
1. 读取图像
```matlab
img = imread('lena_gray.bmp');
```
2. 计算原始图像直方图
```matlab
imhist(img);
```
3. 进行直方图均衡化
```matlab
img_eq = histeq(img);
```
4. 显示均衡化后的图像和直方图
```matlab
subplot(2,2,1); imshow(img); title('原始图像');
subplot(2,2,2); imhist(img); title('原始图像直方图');
subplot(2,2,3); imshow(img_eq); title('均衡化后的图像');
subplot(2,2,4); imhist(img_eq); title('均衡化后的直方图');
```
运行代码后会生成一个包含原始图像、原始图像直方图、均衡化后的图像和均衡化后的直方图的图像窗口。
相关问题
使用matlab进行直方图均衡化
以下是使用Matlab进行直方图均衡化的示例代码和效果:
```matlab
clear all; % 清除Matlab缓存数据
close all;
clc;
f = imread('F:\暗通道图像去雾matlab\图像去雾程序MATLAB\迷雾1.png'); % 读取图像
f = rgb2gray(f); % 转换为灰度图像
subplot(221),imshow(f),title('原灰度图'); % 显示原灰度图像
subplot(222),imhist(f),title('原灰度图像直方图'); % 显示原灰度图像的直方图
g = histeq(f); % 进行直方图均衡化
subplot(223),imshow(g),title('直方图均衡化后图'); % 显示均衡化后的图像
subplot(224),imhist(g),title('均衡化后直方图'); % 显示均衡化后的直方图
```
效果:
左上角是原灰度图像,右上角是原灰度图像的直方图。
左下角是直方图均衡化后的图像,右下角是均衡化后的直方图。
用matlab实现对图像直方图均衡
好的,我可以为您提供一个基本的Matlab代码实现直方图均衡化的方法:
```matlab
% 读取图像
img = imread('lena.jpg');
% 计算图像直方图
[h, w] = size(img);
hist = imhist(img);
% 计算累积分布函数
cdf = cumsum(hist)/(h*w);
% 计算直方图均衡化后的像素值
new_pixels = round(255*cdf(double(img)+1));
% 生成新的图像
new_img = reshape(new_pixels, h, w);
% 显示原始图像和直方图均衡化后的图像
subplot(1,2,1),imshow(img);title('Original Image');
subplot(1,2,2),imshow(new_img);title('Equalized Image');
```
在上述代码中,我们首先使用`imread`函数读取了名为lena.jpg的图像。接着,使用`imhist`函数计算了该图像的直方图。然后,我们计算了累积分布函数,并使用它来计算直方图均衡化后的像素值。最后,我们将新像素值重新整形为图像,并将原始图像和直方图均衡化后的图像显示在同一窗口中。
希望这可以帮助到您!