———————————————————————————————
———————————————————————————————
图像的点运算主要用于改变一幅图像的灰度分布范围,点运算通过变换函数将图像的像素一一转换,最终构成一副新的图像。点运算的最大特点是输出像素值只与当前输入像素值有关。
g(x,y)=T[f(x,y)]
f(x,y)表示输入图像,g(x,y)表示输出图像。函数T是对f的一个变换操作,表示灰度变换公式。
灰度直方图是一个二维图,其横坐标表示图像的灰度值,取值范围是0~255,其纵坐标则通过高度来表示出现次数的多少或者概率的高低。
I=imread('lena.jpg');
a = rgb2gray(I);
subplot(121);
imshow(f);
subplot(122);
imhist(f,256);
灰度线性变换就是将图像的像素值通过指定的线性函数进行变换,以此增强或者减弱图像的灰度。灰度线性变换的公式就是常见的一维线性函数。
g(x,y)=k*f(x,y)+d
设x为原始灰度值,则变换后的灰度值y为: y=kx+d (0<=y<=255)
I=imread('lena.jpg');
f = rgb2gray(I);
subplot(321);
imshow(f);
subplot(322);
imhist(f,256);
g1=imadjust(f,[0 1],[1 0]); %灰度转换,实现明暗转换(负片图像)
subplot(323);
imshow(g1);
subplot(324);
imhist(g1,256);
g2=imadjust(f,[0.5 0.75],[0 1]); %将0.5到0.75的灰度级扩展到范围[0 1]
subplot(325);
imshow(g2)
subplot(326);
imhist(g2,256);
非线性变换包括:对数变换,幂次变换、指数变换等。
扩展低灰度值而压缩高灰度值,让图像的灰度分布更加符合人的视觉特征。
I = imread('lena.jpg');
subplot(121);
imshow(I);
h=log(1+double(I)); %对输入图像做对数映射变换
h=mat2gray(h); %将矩阵h转换为灰度图片
h=im2uint8(h); %将灰度图转换为8位图
subplot(122);
imshow(h);
幂次变换将部分灰度区域映射到更宽的区域中。
f=imread('liang.jpg');
g=double(f).^10;
figure();
subplot(1,2,1);imshow(f,[]);
subplot(1,2,2);imshow(g,[]);
指数变换的作用是拓展图像的高灰度级,压缩低灰度级。
I = imread('pout.tif');
J = im2double(I); %由于I属于uint型,在进行log或指数运行时,须变换成double型
%指数型 y = e^(-0.5*x + 3)
K2 = exp(-0.5.*J + 3);
K2 = uint8(K2);
figure;
subplot(221);imshow(I);title('原图');
subplot(222);imhist(I);title('原图的灰度直方图')
subplot(223);imshow(K2,[]);title('曲线型变换后的图像')
subplot(224);imhist(K2);title('曲线型变换后图像的灰度直方图')
阈值,又称为临界值,它的目的是要确定出一个范围,然后这个范围内的部分使用同一种方法处理,而阈值之外的部分则使用另一种处理方法或者保持原样。
轮廓线提供了一个确立图像中简单物体的边界的有效的方法。使用轮廓线作为边界的技术被称为阈值化。
灰度阈值变换(二值化),带来噪点,边缘误差
I=imread('lena.jpg');
thresh=graythresh(I); %自适应确定阈值,利用最大类间方差法找到图片的一个合适的阈值
bwl=im2bw(I,thresh);%二值化
imshow(bwl);
对图像的灰度进行拉伸使其覆盖较大的取值区间,从而提高图像的对比度以便观察。
灰度拉伸又叫做对比度拉伸,它与线性变换有些类似,不同之处在于灰度拉伸使用的是分段线性变换,所以它最大的优势是变换函数可以由用户任意合成。
灰度拉伸需要指定控制点,控制灰度拉伸变换函数的图形。
I=imread('lena.jpg');
J=rgb2gray(I); %输入图像转化为灰度图像
subplot(2,2,1),imshow(J),title('原始灰度图');
subplot(2,2,2),imhist(J),title('原始灰度直方图');
K=imadjust(J); %灰度拉伸,使用函数imadjust
%K=imadjust(I,[low_in high_in],[low_out high_out])
subplot(2,2,3),imshow(K);
subplot(2,2,4),imhist(K),title('拉伸灰度直方图');
灰度均衡是是以累计分布函数变换为基础的直方图修正法,它可以产生一幅灰度级分布概率均匀的图像。
直方图均衡化优点是能自动增强整体图像的对比度,但是它的具体增强效果却不易控制,处理的结果总是得到全局均衡化的直方图。
g=imread('liang.jpg');
f=rgb2gray(g);
h1=imhist(f,256); %直方图
h2=histeq(f,256); %histeq均衡后得到的图像
figure(1)
subplot(2,2,1);imshow(f); %灰度图
subplot(2,2,2);plot(h1); %直方图
subplot(2,2,3);imshow(h2); %均衡后得到的图像
subplot(2,2,4);imhist(h2); %均衡后得到的直方图
直方图规定化可以有选择的增强某个灰度值范围内的对比度或使图像灰度值的分布满足特定的要求。
g=imread('lena.jpg');
I=rgb2gray(g);
c=imread('liang.jpg');
Imatch=rgb2gray(c);
Jmatch=imhist(Imatch);%获取匹配图像直方图
Iout=histeq(I,Jmatch);%直方图匹配
figure; %显示原图像、匹配图像和匹配后的图像
subplot(1,3,1),imshow(I);title('原图像');
subplot(1,3,2),imshow(Imatch);title('匹配图像');
subplot(1,3,3),imshow(Iout);title('匹配之后图像');
figure; %显示原图像、匹配图像和匹配后图像的直方图
subplot(3,1,1),imhist(I,64);title('原图像直方图');
subplot(3,1,2),imhist(Imatch,64);title('匹配图像图像直方图');
subplot(3,1,3),imhist(Iout,64);title('匹配之后图像直方图');
详情参考博文:https://blog.csdn.net/majinlei121/article/details/46575351?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160386734519724813230205%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160386734519724813230205&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-2-46575351.pc_search_result_cache&utm_term=%E5%9B%BE%E5%83%8F%E7%9B%B4%E6%96%B9%E5%9B%BE%E5%8C%B9%E9%85%8D%E8%A7%84%E5%AE%9A%E5%8C%96&spm=1018.2118.3001.4187