MATLAB实现图像均衡化
时间: 2023-09-01 16:11:03 浏览: 51
图像均衡化是一种常见的图像增强技术,可以使图像的对比度增强,细节更加清晰。MATLAB提供了一个现成的函数 `histeq` 可以实现图像均衡化。
下面是一个简单的示例代码:
```matlab
% 读取图像
img = imread('lena.jpg');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 对灰度图像进行均衡化
eq_img = histeq(gray_img);
% 显示原图和均衡化后的图像
subplot(1,2,1), imshow(gray_img), title('Original Image');
subplot(1,2,2), imshow(eq_img), title('Equalized Image');
```
上述代码中,我们首先读取一张彩色图像,并将其转换为灰度图像。然后,使用 `histeq` 函数对灰度图像进行均衡化,生成均衡化后的图像。最后,使用 MATLAB 的 `subplot` 函数将原图和均衡化后的图像并排显示。
需要注意的是,`histeq` 函数默认将像素值映射到 0-255 的范围内。如果需要将像素值映射到其他范围,可以使用 `imadjust` 函数或自定义映射函数。
相关问题
matlab实现遥感图像均衡化
遥感图像均衡化是一种常见的图像处理方法,可以增强图像的对比度和清晰度。以下是MATLAB实现遥感图像均衡化的步骤:
1. 读入遥感图像
```matlab
img = imread('image.tif');
```
2. 将图像转换为灰度图像
```matlab
gray_img = rgb2gray(img);
```
3. 计算图像的直方图
```matlab
[counts, bins] = imhist(gray_img);
```
4. 计算累积分布函数(CDF)
```matlab
cdf = cumsum(counts) / numel(gray_img);
```
5. 计算均衡化后的像素值
```matlab
eq_img = uint8(255 * cdf(gray_img + 1));
```
6. 显示原图和均衡化后的图像
```matlab
imshowpair(gray_img, eq_img, 'montage');
```
完整的MATLAB代码如下:
```matlab
% 读入遥感图像
img = imread('image.tif');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 计算图像的直方图
[counts, bins] = imhist(gray_img);
% 计算累积分布函数(CDF)
cdf = cumsum(counts) / numel(gray_img);
% 计算均衡化后的像素值
eq_img = uint8(255 * cdf(gray_img + 1));
% 显示原图和均衡化后的图像
imshowpair(gray_img, eq_img, 'montage');
```
运行后,可以看到原图和均衡化后的图像对比显示。
matlab实现彩色图像均衡化
好的,针对您的问题,我可以给出以下 Matlab 代码实现彩色图像均衡化的方法:
```matlab
% 读入彩色图像
img = imread('color_image.jpg');
% 将 RGB 图像转换为 YCbCr 颜色空间
img_ycbcr = rgb2ycbcr(img);
% 对亮度通道进行直方图均衡化
img_y = img_ycbcr(:,:,1);
img_y_eq = histeq(img_y);
% 将处理后的亮度通道与原图像的色度通道合并
img_ycbcr_eq = img_ycbcr;
img_ycbcr_eq(:,:,1) = img_y_eq;
img_eq = ycbcr2rgb(img_ycbcr_eq);
% 显示原图和处理后的图像
subplot(1,2,1), imshow(img), title('Original Image');
subplot(1,2,2), imshow(img_eq), title('Equalized Image');
```
以上代码中,我们首先读入彩色图像,然后将 RGB 图像转换为 YCbCr 颜色空间。接着,我们对亮度通道进行直方图均衡化,得到处理后的亮度通道。最后,我们将处理后的亮度通道与原图像的色度通道合并,得到处理后的彩色图像。