matlab 实现图像的二值化、对比度拉伸变化

来源:互联网 发布:淘宝店铺如何更换行业 编辑:程序博客网 时间:2024/05/29 02:42
一、将一幅图像转化为二值图像,可以使用如下函数:
BW = im2bw(I, level) %输出像素点小于level的像素,I是代表图像的变量,level是阈值,level属于[0 1].BW = im2bw(RGB, level)%将RGB彩色图像转换为二值图像,转换过程中先转化为灰度图像,再转换为二值图像

二值图像:取值只有0和1的逻辑数组(logical型的数组)。如果是一个unit8的数组只包含0,1,则它不是二值数组。
转化EXAMPLE:
f=imread('p1.jpg');g=im2double(f);%将图形转化为double型的或者g=mat2gray(f);灰度图像,保证每个像素点的取值在0-1之间a=mean(g(:));%设置阈值,一般取矩阵的均值作为图像的阈值g=im2bw(g);t=im2bw(g,a);imshow(g),figure,imshow(t);%显示两个图像,如果想要看阈值的大小对图像的影响,设置这个值大于或者小于a

ps:
其他的图像转化函数,都是matlab的库函数
im2unit8()  图像转换为无符号8位的整数
im2unit16()  图像转化为无符号16位的整数
mat2gray()  图像转换为灰度图像
im2double()  图像转换为0-1的double类
二、图像的对比度拉伸变化,(调整灰度级m,函数斜率k,观看最后的图像显示结果)
使用如下对比度拉伸变换工具,进行动态范围的压缩:
g=c*log(1+double(f));
 拉伸的函数形式为:
s=T(r)=1/(1+(m/r)^E);
g=1./(1+(m./(double(f)+eps)).^E);%eps可避免f出现溢出情况

对比度拉伸即:使图像亮的地方更亮,暗的地方更暗,从而增加图像的可视细节

0 0
原创粉丝点击