MATLAB图像进行图像反转、对数变换、幂函数变换、分段线性变换的代码
时间: 2023-07-10 22:07:19 浏览: 86
以下是 MATLAB 中进行图像反转、对数变换、幂函数变换、分段线性变换的代码:
1. 图像反转
```
% 读取图像
img = imread('lena.jpg');
% 反转图像
img_reverse = 255 - img;
% 显示原图和反转后的图像
subplot(1,2,1), imshow(img);
title('Original Image')
subplot(1,2,2), imshow(img_reverse);
title('Reversed Image')
```
2. 对数变换
```
% 读取图像
img = imread('lena.jpg');
% 对数变换
c = 255/log(1+max(max(img)));
img_log = c*log(1+double(img));
% 转回 uint8 类型
img_log = uint8(img_log);
% 显示原图和对数变换后的图像
subplot(1,2,1), imshow(img);
title('Original Image')
subplot(1,2,2), imshow(img_log);
title('Logarithmic Transformation')
```
3. 幂函数变换
```
% 读取图像
img = imread('lena.jpg');
% 幂函数变换
gamma = 0.5;
img_power = 255*(double(img)/255).^gamma;
% 转回 uint8 类型
img_power = uint8(img_power);
% 显示原图和幂函数变换后的图像
subplot(1,2,1), imshow(img);
title('Original Image')
subplot(1,2,2), imshow(img_power);
title('Power-Law Transformation')
```
4. 分段线性变换
```
% 读取图像
img = imread('lena.jpg');
% 分段线性变换
img_piecewise = zeros(size(img));
img_piecewise(img<=100) = img(img<=100)*0.5;
img_piecewise(img>100 & img<=200) = (img(img>100 & img<=200)-100)*0.7+50;
img_piecewise(img>200) = (img(img>200)-200)*0.4+125;
% 转回 uint8 类型
img_piecewise = uint8(img_piecewise);
% 显示原图和分段线性变换后的图像
subplot(1,2,1), imshow(img);
title('Original Image')
subplot(1,2,2), imshow(img_piecewise);
title('Piecewise Linear Transformation')
```
注意:以上代码仅为示例,实际应用时可能需要根据具体情况进行调整。