用matlab代码实现直接对像素乘以一个实数的倍数n来对图像(tower.png)的亮度进行一个整体的提升,其中n=2,n=4,n=5,注意灰度值超出255的区域还是以255来显示。
时间: 2023-11-28 21:48:45 浏览: 75
可以使用以下代码实现:
```matlab
% 读入图像
im = imread('tower.png');
% 将图像转为 double 类型,方便进行乘法运算
im = im2double(im);
% 设置倍数
n1 = 2;
n2 = 4;
n3 = 5;
% 进行乘法运算并将灰度值限制在 [0, 1] 范围内
im1 = min(im * n1, 1);
im2 = min(im * n2, 1);
im3 = min(im * n3, 1);
% 将灰度值限制在 [0, 255] 范围内
im1 = uint8(im1 * 255);
im2 = uint8(im2 * 255);
im3 = uint8(im3 * 255);
% 显示图像
figure;
subplot(2, 2, 1), imshow(im), title('Original');
subplot(2, 2, 2), imshow(im1), title(['n = ' num2str(n1)]);
subplot(2, 2, 3), imshow(im2), title(['n = ' num2str(n2)]);
subplot(2, 2, 4), imshow(im3), title(['n = ' num2str(n3)]);
```
运行以上代码,即可得到亮度分别提升 2 倍,4 倍和 5 倍的图像。
相关问题
(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');
```
阅读全文