matlab编写线性灰度变换程序,不使用matlab自带函数
时间: 2023-11-28 08:46:20 浏览: 36
以下是一个matlab编写线性灰度变换程序的例子,不使用matlab自带函数:
```matlab
% 读取图像
img = imread('lena.jpg');
% 显示原始图像
subplot(2,2,1);
imshow(img);
title('Original Image');
% 求原始图像的直方图
subplot(2,2,2);
imhist(img);
title('Histogram of Original Image');
% 获取图像的行数和列数
[rows, cols] = size(img);
% 定义线性函数的参数
a = 1.5;
b = 50;
% 线性灰度变换
for i = 1:rows
for j = 1:cols
img(i,j) = a * double(img(i,j)) + b;
end
end
% 显示变换后的图像
subplot(2,2,3);
imshow(uint8(img));
title('Transformed Image');
% 求变换后的图像的直方图
subplot(2,2,4);
imhist(uint8(img));
title('Histogram of Transformed Image');
```
相关问题
matlab灰度线性变换不使用函数的代码
灰度线性变换是一种简单的图像增强方法,可以通过调整图像的亮度和对比度来改善图像质量。下面是一段 Matlab 代码,实现了灰度线性变换,其中不使用任何函数:
```matlab
% 读入图像
img = imread('image.jpg');
% 获取图像的最大值和最小值
img_min = min(img(:));
img_max = max(img(:));
% 灰度线性变换
img_new = (double(img) - img_min) / (img_max - img_min) * 255;
% 显示原图和处理后的图像
subplot(1,2,1);
imshow(img);
title('原图');
subplot(1,2,2);
imshow(uint8(img_new));
title('灰度线性变换后的图像');
```
在上面的代码中,首先读入一幅图像,然后通过 `min` 和 `max` 函数获取图像的最小值和最大值。接着利用灰度线性变换公式将图像中的每个像素值进行线性变换,使其像素值范围在 0 到 255 之间,并将结果保存在 `img_new` 中。最后将原图和处理后的图像显示出来,方便观察效果。
matlab非线性灰度变换
Matlab中的非线性灰度变换包括分段变换和对数变换。分段变换是将原图像的灰度值分成若干段,对每一段进行不同的灰度变换,从而得到新的灰度图像。对数变换则是通过对原图像的灰度值取对数,再进行线性变换,从而得到新的灰度图像。在Matlab中,可以使用imadjust函数进行非线性灰度变换,其中可以设置灰度范围和映射方式的参数。当gamma参数不等于1时,即为非线性映射。