【MATLAB图像处理学习】灰度变换
程序员文章站
2024-03-15 08:52:11
...
【使用的教材:冈萨雷斯 数字图像处理MATLAB(Digital image processing with Matlab】
前言:剩下的图像处理基本操作简介我大段跳过了 后面用到哪儿介绍到哪儿
CHAPTER 3 灰度变换及空间滤波
f(x,y)表示原图像像素点,*g(x,y)*表示处理过后图像像素点,T
3.2 灰度变换
3.2.1 函数imadjust
函数imadjust
用于进行图像的灰度变换
g = imadjust(f, [low_in high_in],[low_out high_out],gamma)
[low_in high_in]中的值对应的映射成[low_out high_out]中的值。如果gamma小于1,此映射偏重更高数值输出;如果gamma大于1,此映射偏重更低数值(灰暗)输出,如果省略此参数,默认为(线性映射)。
%取负片
%[low_in high_in]和[low_out high_out]必须在[0,1]范围内
%也就是说imadjust这个函数将原像素值先进行归一化(将像素值线性缩小到[0,1]),然后再进行映射
g1 = imadjust(f,[0 1],[1 0])
g = imcomplement(f)
3.2.2 对数变换和对比度拉伸转换
- double将数据转换为双精度型
当监视器的线性范围为8个bit时,展现效果由高灰度值主导,导致低灰度值的细节丧失。对数变换能够压缩动态范围,例如,原来的范围为,经过对数变换后能够减小到14左右,更好的展示细节。
gs = im2uint8(mat2gray(g))
mat2gray
对图像进行归一化操作,将像素值线性缩小到[0,1],im2unit8
将像素值线性放大到[0,255]范围中
g = im2uint8(mat2gray(log(1 + double(f))))
imshow(g)
本文的所有代码:
f = imread('breast_digital_Xray.tif');
g1 = imadjust(f,[0 1],[1 0]);
g = imcomplement(f);
subplot(1,3,1)
imshow(f)
title('未处理');
hold on
subplot(1,3,2)
imshow(g1)
title('g1 = imadjust(f,[0 1],[1 0])');
hold on
subplot(1,3,3)
imshow(g)
title('g = imcomplement(f);');
f = imread('DFT_no_log.tif');
subplot(1,2,1)
imshow(f)
title('未处理');
hold on
g = im2uint8(mat2gray(log(1 + double(f))));
subplot(1,2,2)
imshow(g)
title('对数变换');
上一篇: 17.接口只是被用于定义类型