用matlab代码对一个灰度图像进行线性变换pout.png,首先利用imhist观察图像的直方图,然后利用imadjust函数对图像0%到30%灰度值区间内的像素值映射到0~100%之间。超过[0,30%]这个区间的灰度值被映射为0和100%灰度值这两个值。
时间: 2023-11-28 21:49:29 浏览: 54
下面是针对pout.png图像进行线性变换的MATLAB代码:
```matlab
% 读取灰度图像
I = imread('pout.png');
% 显示原始图像
subplot(2,2,1);
imshow(I);
title('Original Image');
% 绘制原始图像的直方图
subplot(2,2,2);
imhist(I);
title('Histogram of Original Image');
% 对图像进行线性变换
J = imadjust(I,[0.3 1],[0 1],0.5);
% 显示变换后的图像
subplot(2,2,3);
imshow(J);
title('Adjusted Image');
% 绘制变换后的图像的直方图
subplot(2,2,4);
imhist(J);
title('Histogram of Adjusted Image');
```
上述代码中,使用imread函数读取pout.png图像,并使用subplot函数将原始图像、直方图、变换后的图像和变换后图像的直方图显示在一个窗口中。然后使用imadjust函数对图像进行线性变换,将0~30%的灰度值区间映射到0~100%之间,超过该区间的灰度值被映射为0和100%。最后使用imhist函数绘制变换后的图像的直方图。
相关问题
(1) 直接对像素乘以一个实数的倍数n来对图像(tower.png)的亮度进行一个整体的提升,其中n=2,n=4,n=5,注意灰度值超出255的区域还是以255来显示。 (2) 对灰度图tower.png进行一个反转显示。 (3) 对一个灰度图像进行线性变换pout.png,首先利用imhist观察图像的直方图,然后利用imadjust函数对图像0%到30%灰度值区间内的像素值映射到0~100%之间。超过[0,30%]这个区间的灰度值被映射为0和100%灰度值这两个值。用MATLAB
来实现以上三个操作可以按照以下步骤进行:
(1) 对图像亮度进行提升:
```matlab
% 读取图像
img = imread('tower.png');
% 提升亮度的倍数
n = 5;
% 对图像的像素值进行n倍的放大,超出255的区域以255来显示
img_enhanced = min(n * img, 255);
% 显示原图和处理后的图像
figure;
subplot(1,2,1), imshow(img);
title('Original Image');
subplot(1,2,2), imshow(img_enhanced);
title(['Enhanced Image (n=', num2str(n), ')']);
```
(2) 对图像进行反转显示:
```matlab
% 读取图像
img = imread('tower.png');
% 将像素值取反
img_inverted = 255 - img;
% 显示原图和处理后的图像
figure;
subplot(1,2,1), imshow(img);
title('Original Image');
subplot(1,2,2), imshow(img_inverted);
title('Inverted Image');
```
(3) 对图像进行线性变换:
```matlab
% 读取图像
img = imread('pout.png');
% 统计图像的直方图
[counts, bins] = imhist(img);
% 将灰度值范围在0~30%之间的像素值映射到0~100%之间,
% 超过这个范围的像素值被映射为0和100%灰度值这两个值
img_adjusted = imadjust(img, [0, 0.3], [0, 1]);
% 显示原图和处理后的图像及其直方图
figure;
subplot(2,2,1), imshow(img);
title('Original Image');
subplot(2,2,2), imhist(img);
title('Original Histogram');
subplot(2,2,3), imshow(img_adjusted);
title('Adjusted Image');
subplot(2,2,4), imhist(img_adjusted);
title('Adjusted Histogram');
```
Matlab对图像pout.tif进行直方图匹配
以下是使用Matlab对图像pout.tif进行直方图匹配的代码:
```matlab
% 读取原始图像
I = imread('pout.tif');
% 绘制原始图像的直方图
figure, imhist(I);
title('Original Histogram');
% 定义目标直方图
targetHist = [0, 0, 0, 0, 0, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1];
% 进行直方图匹配
J = histeq(I, targetHist);
% 绘制匹配后的图像和直方图
figure, imshow(J);
title('Matched Image');
figure, imhist(J);
title('Matched Histogram');
```
在上述代码中,我们首先读取了原始图像pout.tif,并绘制了原始图像的直方图。然后,我们定义了目标直方图targetHist,该直方图是一个线性增长的直方图。最后,我们使用histeq函数对原始图像进行直方图匹配,并绘制了匹配后的图像和直方图。
注意:在使用histeq函数进行直方图匹配时,我们可以通过传递目标直方图的参数来指定匹配的目标直方图。如果未传递目标直方图参数,则默认情况下会使用均衡化的直方图作为目标直方图。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)