课设-数字图像处理GUI的设计第五天

数字图像处理GUI的设计第五天

1 灰度图

灰度图的大概意思就是让像素点矩阵中每一个像素点都满足R=G=B。
在前面编辑选项卡中忘记了添加灰度图,在这里再加上。

1.1 rgb2gray函数

将RGB图像转化为灰度图
使用方法
I = rgb2gray(RGB)

1.2 代码 & 图像

在代码中只需要判断一下自己的图像是否为RGB图像,是否需要转化即可。

axes(handles.axes2);
if(ndims(handles.img) == 3)
    y=rgb2gray(handles.img); %RGB
    imshow(y);
else
    msgbox('已经是灰度图像','转换失败');

课设-数字图像处理GUI的设计第五天_第1张图片

转化完成后记得保存灰度图,后面进行的灰度图处理需要使用灰度图。

2 灰度图处理

2.1 二值图像

顾名思义,每个像素只有两种取值。

2.1.1 转化函数

有两种二值图像转化函数。一个为imbinarize函数,另一个为 im2bw函数,二者的区别在于imbinarize是自动阈值而im2bw是手动阈值。因此选用了第一个函数。

2.1.2 代码 & 图像
axes(handles.axes2);
x=(handles.img);
if (ndims(x) == 3)
    msgbox('这是彩色图像,不能转换为二值图像','转换失败');
else
    j=imbinarize(x);
    imshow(j);
end

课设-数字图像处理GUI的设计第五天_第2张图片

2.2 图像腐蚀

灰度腐蚀运算将图像变换后的与或运算用最小值代替,
灰度腐蚀运算是逐点进行的,计算该点局部范围内各点与结构元素对应点的灰度差,并选取差的最小值,作为该点的腐蚀结果。

2.2.1 bwmorph函数

对二值图像进行数学形态学运算。
使用方法
BW2 = bwmorph(BW,operation)

2.2.2 代码 & 图像
axes(handles.axes2);
x=(handles.img);
if (ndims(x) == 3)
    msgbox('这是彩色图像,不能进行图像腐蚀','失败');
else
    j=imbinarize(x);
    se=eye(5);
    bw=bwmorph(j,'erode');
    imshow(bw);
end

课设-数字图像处理GUI的设计第五天_第3张图片

2.3 索引图像

文件结构比较复杂,除了存放图像的二维矩阵,还有存在一个称为颜色索引矩阵的二维数组。颜色索引矩阵的大小由存放图像的矩阵元素值域决定。

2.3.1 grayslice函数

将灰度图像转化为索引图像

2.3.2 代码 & 图像
axes(handles.axes2);
x=(handles.img);
if (ndims(x) == 3)
    msgbox('这是彩色图像,不能创建索引图像','创建失败');
else
    y=grayslice(x,16);
    imshow(y,jet(16));
end

课设-数字图像处理GUI的设计第五天_第4张图片

3 直方图统计

一般图像直方图的横轴表示亮度,从左到右表示亮度从低到高;纵轴表示像素数量,从下到上表示像素从少到多。直方图在某个亮度区间的凸起越高,就表示在这个亮度区间内的像素越多。而直方图均衡则是图像对比增强的一种常用方法。

3.1 imhist函数

计算图像直方图
使用方法

imhist( i );直接显示图像i的灰度直方图;
imhist(i,n)n为指定灰度级显示直方图;
[count, x] = imhist( i ) 获取直方图信息,count为每一级灰度像素个数,x为灰度级,x也可以在imhist(i,x)中指定,可以通过stem(x,count)画相应直方图;
3.2 R直方图代码 & 图像
set(handles.axes2,'HandleVisibility','ON');
axes(handles.axes2);
x=imhist(handles.img(:,:,1));                    
x1=x(1:10:256);
horz=1:10:256;
bar(horz,x1);
set(handles.axes2,'xtick',0:50:255);

课设-数字图像处理GUI的设计第五天_第5张图片

3.3 G直方图代码 & 图像
set(handles.axes2,'HandleVisibility','ON');
axes(handles.axes2);
if (ndims(handles.img)==3)
x=imhist(handles.img(:,:,2));
x1=x(1:10:256);
horz=1:10:256;
bar(horz,x1);
set(handles.axes2,'xtick',0:50:255);
else
    msgbox('这是灰度图像','失败');
end

课设-数字图像处理GUI的设计第五天_第6张图片

3.4 B直方图代码 & 图像
set(handles.axes2,'HandleVisibility','ON');
axes(handles.axes2);
if (ndims(handles.img)==3) 
x=imhist(handles.img(:,:,3));                    
x1=x(1:10:256);
horz=1:10:256;
bar(horz,x1);
set(handles.axes2,'xtick',0:50:255);
else
    msgbox('这是灰度图像','失败');
end

课设-数字图像处理GUI的设计第五天_第7张图片

3.5 直方图均衡代码 & 图像
set(handles.axes2,'HandleVisibility','ON');
axes(handles.axes2);
if (ndims(handles.img)==3)
    a=histeq(handles.img(:,:,1));
    b=histeq(handles.img(:,:,2));
    c=histeq(handles.img(:,:,3));
    k(:,:,1)=a;
    k(:,:,2)=b;
    k(:,:,3)=c;
    imshow(k);
else
    h=histeq(handles.img);                 
    imshow(h);
end

课设-数字图像处理GUI的设计第五天_第8张图片

你可能感兴趣的:(学校实验)