精华内容
下载资源
问答
  • MATLAB图像处理实验——细胞图像的分割和计数

    万次阅读 多人点赞 2018-04-23 21:39:55
    实验为使用MATLAB编写的细胞图像分割及计数系统,实现了对图像内细胞的计数,以及对每个细胞周长和面积的测量,并分别展示了分割后的每个细胞的图像实验步骤共分为图像预处理、图像预分割、空洞填充、黏连细胞...

    代码戳这里

     

    1. 实验内容

     

    本实验为使用MATLAB编写的细胞图像分割及计数系统,实现了对图像内细胞的计数,以及对每个细胞周长和面积的测量,并分别展示了分割后的每个细胞的图像。

    实验步骤共分为图像预处理、图像预分割、空洞填充、黏连细胞分割、细胞个数统计、细胞特征统计及显示。

    实验所用图像如下图所示:

    2. 图像预处理

     

    使用滤波对细胞图像进行保边去噪的处理,这步的主要作用是去除图像噪声,系统中提供了中值滤波、均值滤波、维纳滤波、锐化滤波,经过测试发现中值滤波的效果最好,因此以中值滤波为例进行下面的实验。

    部分代码如下:

    global original_img show_img;
    str=get(hObject,'string');
    axes(handles.axes1);
    [m,n,k]=size(original_img);
    switch str
        case '原图'
            show_img=original_img;
            imshow(show_img);
        case '中值滤波'  
            show_img=original_img;
            for i=1:3
                show_img(:,:,i)=medfilt2(show_img(:,:,i));
            end
            imshow(show_img);
        case '均值滤波'
            show_img=original_img;
            h=ones(3,3)/9;
            for i=1:3
                show_img(:,:,i)=imfilter(show_img(:,:,i),h);
            end
            imshow(show_img);
        case '维纳滤波'
            show_img=original_img;
            for i=1:3
                show_img(:,:,i)=wiener2(show_img(:,:,i),[5 5]);
            end
            imshow(show_img);
        case '锐化滤波'
            show_img=original_img;
            h=[0 1 0;1 -4 1;0 1 0];
            for i=1:3
                J=conv2(im2double(show_img(:,:,i)),h,'same');
                show_img(:,:,i)=show_img(:,:,i)-uint8(J);
            end
            imshow(show_img);  
    end

    中值滤波图像如下:

    3. 预分割

    选择彩色细胞图像的蓝色通道,并对该通道的灰度图,用大津法Otsu进行二值化预分割,将细胞作为前景分割出来。

    global show_img;
    B=show_img(:,:,3);
    B_gray=im2double(B);
    level=graythresh(B_gray);
    B_bw=im2bw(B_gray,level);
    axes(handles.axes1);
    show_img=B_bw;
    imshow(show_img);

    预分割图像如下:

    4. 孔洞填充

    对分割后的二值图,实施开运算,填充细胞中的孔洞,使轻微粘连细胞分开及细小的细胞消失。

    global show_img;
    se=strel('disk',5);
    Spot_filled=imopen(show_img,se);
    axes(handles.axes1);
    show_img=Spot_filled;
    imshow(show_img);

    填充孔洞后的图像如下:

    5. 黏连细胞分割

    使用分水岭分割,将图像中粘连严重的细胞分割开来,对于仍难以分离的细胞,使用手动分割,用鼠标作为笔,将划过的像素点的值设为0,鼠标松开后,再进行一次分水岭分割。

    分水岭分割代码:

    global show_img;
    D=-bwdist(~show_img);
    mask=imextendedmin(D,2);
    D2=imimposemin(D,mask);
    Ld=watershed(D2);
    Water_splited=show_img;
    Water_splited(Ld==0)=0;
    axes(handles.axes1);
    show_img=Water_splited;
    imshow(show_img);

    手动分割代码:
     

    global ButtonDown  show_img;  
    if ButtonDown == 1  
        pos = get(handles.axes1, 'CurrentPoint');
        row=floor(pos(1,2));
        col=floor(pos(1,1));
        Diy_splited=show_img;
        Diy_splited(row,col)=0;
        show_img=Diy_splited;
        axes(handles.axes1);
        imshow(show_img);
    end  

    分割后的图像如下:

    6. 细胞个数统计及显示

    首先删除掉边缘上的细胞,再利用四连通区域标记算法统计分割后非粘连细胞的个数,最后在原图上标记出分割好的细胞,并标号。

    细胞个数统计代码:

    global N show_img original_img img_group perimeter_group area_group;
    [B,L,N]=bwboundaries(show_img,'noholes');
    [m,n]=size(show_img);
    counted_img=zeros(m,n);
    for i=1:N
        %显示边缘
        for j=1:size(B{i},1)
            counted_img(B{i}(j,1),B{i}(j,2))=1;
        end
        %标号
        med_row=floor(mean(B{i}(:,1)));
        med_col=floor(mean(B{i}(:,2)));
        if floor(i/10)==0
            str=[num2str(i) '.png'];
            I=imread(str);
        else
            str1=[num2str(floor(i/10)) '.png'];
            str2=[num2str(rem(i,10)) '.png'];
            I1=imread(str1);
            I2=imread(str2);
            I=[I1 I2];
        end
        [number_row,number_col]=size(I);
        counted_img((med_row - (number_row/2)):(med_row + (number_row/2) - 1),(med_col - (number_col/2)):(med_col + (number_col/2) - 1))=I;
        %截取每个细胞图像
        item_img=original_img(med_row - 45:med_row +44,med_col - 45:med_col + 44,:);
        item_img_index=L(med_row - 45:med_row +44,med_col - 45:med_col + 44);
        index=find(item_img_index~=i);
        r=item_img(:,:,1);
        g=item_img(:,:,2);
        b=item_img(:,:,3);
        r(index)=255;
        g(index)=255;
        b(index)=255;
        item_img=cat(3,r,g,b);
        img_group{i}=item_img;
        %每个细胞周长
        item_perimeter=size(B{i},1);
        perimeter_group{i}=item_perimeter;
        %每个细胞面积
        item_area=length(find(L==i));
        area_group{i}=item_area;
    end

    原图细胞标号代码:

    R=original_img(:,:,1)+uint8(counted_img*255);
    G=original_img(:,:,2)+uint8(counted_img*255);
    B=original_img(:,:,3)+uint8(counted_img*255);
    show_img=cat(3,R,G,B);
    axes(handles.axes1);
    imshow(show_img);

    统计结果图如下:

    7. 细胞特征统计与显示

    对每个细胞,统计其面积,并用提取细胞边缘,统计边缘轮廓上的像素个数即细胞周长,将每个细胞的图像及相关信息分别显示出来。

    global N img_group perimeter_group area_group page pages;
    page=1;
    pages=ceil(N/6);
    str=['第' num2str(page) '/' num2str(pages) '页'];
    set(handles.page_num,'string',str);
    if page~=pages
        axes(handles.item1);imshow(img_group{1});
        axes(handles.item2);imshow(img_group{2});
        axes(handles.item3);imshow(img_group{3});
        axes(handles.item4);imshow(img_group{4});
        axes(handles.item5);imshow(img_group{5});
        axes(handles.item6);imshow(img_group{6});
        for i=1:6
            strs{i}=['No.' num2str(i) ' ' '周长:' num2str(perimeter_group{i}) ' ' '面积:' num2str(area_group{i})];
        end
        set(handles.detail_info1,'string',strs{1});
        set(handles.detail_info2,'string',strs{2});
        set(handles.detail_info3,'string',strs{3});
        set(handles.detail_info4,'string',strs{4});
        set(handles.detail_info5,'string',strs{5});
        set(handles.detail_info6,'string',strs{6});
    else
        item_img=ones(size(img_group{1}));
        item_img(:,:,:)=255;
        item_imgs{1:6}=item_img;
        item_strs{1:6}='';
        for i=1:N
            item_imgs{i}=img_group{i};
            item_strs{i}=['No.' num2str(i) '   ' '周长:' num2str(perimeter_group{i}) '   ' '面积:' num2str(area_group{i})];
        end
        axes(handles.item1);imshow(item_imgs{1});
        axes(handles.item2);imshow(item_imgs{2});
        axes(handles.item3);imshow(item_imgs{3});
        axes(handles.item4);imshow(item_imgs{4});
        axes(handles.item5);imshow(item_imgs{5});
        axes(handles.item6);imshow(item_imgs{6});
        
        set(handles.detail_info1,'string',item_strs{1});
        set(handles.detail_info2,'string',item_strs{2});
        set(handles.detail_info3,'string',item_strs{3});
        set(handles.detail_info4,'string',item_strs{4});
        set(handles.detail_info5,'string',item_strs{5});
        set(handles.detail_info6,'string',item_strs{6});
    end
    

    分页显示结果如下:

    8. 实验心得

    本次实验耗时3天完成,实现了实验要求的所有功能,但由于时间仓促,仍有不少细节地方需要完善。在实验过程中,有一些功能在代码实现上比较有难度,所幸最终找到了解决办法,以下是我认为在编码实现过程中遇到的最有难度的三个问题及详细解决办法。

    (1)手动分割

    使用分水岭分割后,仍有细胞没有被分割开,需要进行手动分割。方法为通过GUI鼠标响应,当鼠标按下和移动时,获取当前光标所在像素的横纵坐标,将图像中对应位置处的数值改为0,再显示新的图像。在鼠标移动过程中,对图像的修改速度远远小于鼠标滑动速度,这样只会在鼠标划过的路径上面留下一些黑点,而不是一条线。在鼠标松开时,对图像再进行一次分水岭分割,就会沿着黑点的路径生成一条分割线,从而实现对黏连严重细胞的手动分割。

    (2)原图细胞标号

    首先通过绘图软件作出0到9共10个数字的图像,使用MATLAB处理得到每个数字的二值图用于之后的标号。通过bwboundaries对图像进行标记后,得到每个细胞的边缘像素点的横纵坐标,再计算得出每个细胞的中心位置坐标,将该坐标与对应数字图像的中心坐标对应,将数字图像加到原图上,从而实现对原图细胞的标号。对于标号是两位数的细胞,需首先将十位上的数字和各位上的数字拼接,生成新的图像用于标号。

    (3)结果分页显示

    由于对GUI对象的操作无法通过循环结构实现,因此首先生成6张全白的图像,再根据这一页上要显示的细胞个数,对相应的图像进行修改,最后将这6张图像全部显示出来,是细胞图像的就显示细胞图像,不是细胞图像的则显示全白的图像。

     

     

    展开全文
  • matlab频率域图像处理代码实验报告-实验、频率域图像处理.rar 频率域图像处理 实验三、频率域图像处理 (一)实验目的: 1、理解图像的傅立叶变换; 2、掌握频率域滤波的基本方法。 (二)实验要求: 1...
  • 包含了数字图像处理的基本matlab仿真实验内容,包括图像的存储,读取,图像平滑,图像锐化,图像加噪去噪,中值滤波均值滤波,图像复原,图像分割,图像的边缘提取,图像增强。
  • 图像处理matlab代码

    2021-03-16 11:02:20
    图像存储,矩阵运算,图像滤波,平移旋转,缩放等 适合图像处理上机实验的新手,内容包含一些基本的图像运算操作
  • 数字图像处理MATLAB实验一一、实验名称图像的采样与量化二、实验目的1.熟悉MATLAB软件的使用。2.掌握采样与量化的原理及数学运算。3.于MATLAB环境下编程实现对图片的不同程度的采样与量化。三、实验内容1.对于...

    bf903abb398acdd0d7efd393df210d95.png

    数字图像处理(MATLAB)

    实验一

    一、实验名称
    图像的采样与量化

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握采样与量化的原理及数学运算。
    3.于MATLAB环境下编程实现对图片的不同程度的采样与量化。

    三、实验内容
    1.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的采样。
    2.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的量化。

    实验二

    一、实验名称
    图像的灰度变换与直方图修正

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握灰度变换、直方图修正的原理及数学运算。
    3.于MATLAB环境下编程实现对图片的灰度变换和直方图修正。

    三、实验内容
    1.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的灰度变换。
    2.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的直方图修正。

    实验三

    一、实验名称
    图像的噪声与滤波处理

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握图像的噪声与滤波处理。

    三、实验内容
    1.对一张图片添加不同强度的高斯噪声、椒盐噪声
    2.对图像进行不同模板的均值滤波、高斯加权滤波、中值滤波,对比结果并分析不同滤波方式的优劣

    实验四

    一、实验名称
    图像的几何变换

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握图像几何变换的原理及数学运算。
    3.于MATLAB环境下编程实现对图片不同的几何变换。

    三、实验内容
    1.将图像绕图像中心顺时针旋转30度,旋转之后的图像尺寸保持为原图像的尺寸。
    2.将原图像放大2倍
    3.得到该图像的水平镜像图片
    4.得到该图像的垂直错切图像

    实验五

    一、实验名称
    图像锐化

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握图像锐化的原理及数学运算。
    3.于MATLAB环境下编程实现对图片锐化。

    三、实验内容
    利用图像基于单方向梯度算子,Robert算子,Sobel算 子,Pritt算 子, Laplacian算子,多方向模板,LoG算子编写matlab增强程序;最后,显示边缘图像和锐化增强图像,并对这些仿真结果所呈现的边缘提取和增强效果进行对比分析。

    实验六

    一、实验名称
    频域图像分析

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握频域图像分析的原理及数学运算。

    三、实验内容
    1.自选一幅图像,并对其分别添加一定强度的周期噪声和高斯噪声,然后分别采用高斯模板、中值滤波的时域方法以及傅里叶变换和小波变换的频率滤波方法对该含噪图像进行去噪处理,并基于PSNR值和视觉效果这两个指标来比较这四种滤波方法对两种不同噪声的去噪能力。
    2.编写一个程序,要求实现下列算法:首先将閣像分割为8x8的子图像,对每个予图像进行FFT.对每个了图像中的64个系数。按照每个系数的方差来排序后,舍去小的变換系數,只保留16个系数,实现4: I的图像压缩。
    3.给定一幅行和列都为2的整数次幕图像,用Haar小波基函数对其进行二维小波变换,试着将最低尺度近似分量置零再反变换,结果是什么?如果把垂直方向的细节分量置零,反变换后结果又是什么呢?试解释一下原因。
    基于小波变换对图像进行不同压缩比的压缩。在同压缩比情况下,对于基于小波变换和基于傅里叶变换的压缩结果,比较=二者保留原图像能里百分比情况。

    实验七

    一、实验名称
    数学形态学应用

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握数字图像处理中的腐蚀、膨胀定义及操作。
    3.掌握图像的开运算、闭运算

    三、实验内容
    1.在长方形目标物A中,内部有噪声导致的空洞,周围有噪声块。编写MATLAB程序,达到处理后效果:目标本身除了4个角的直角变为圆角外没有变化。
    2.利用击中击不中原理,确定所需判断图像在图像中的位置

    实验八

    一、实验名称
    阈值分割

    二、实验目的
    利用阈值分割的原理,对图像进行不同阈值的分割

    三、实验内容
    对原图像进行单阈值、多阈值分割,分别得到结果。并MATLAB实现这两种方法的分割,对比分割结果。同时对比不同阈值结果的不同。

    实验九

    一、实验名称
    形状数二、实验目的
    对图像进行重取样,求边界链码,从而得出其相似多边形三、实验内容
    计算该图像边界的阶数为20的形状数及其相应的近似多边形

    07d801c551b3c8c7c9100981d600338e.png
    展开全文
  • 数字图像处理MATLAB实验一一、实验名称图像的采样与量化二、实验目的1.熟悉MATLAB软件的使用。2.掌握采样与量化的原理及数学运算。3.于MATLAB环境下编程实现对图片的不同程度的采样与量化。三、实验内容1.对于...

    c7b06296deba93af8aa7c26e62f03f4a.png

    数字图像处理(MATLAB)

    实验一

    一、实验名称
    图像的采样与量化

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握采样与量化的原理及数学运算。
    3.于MATLAB环境下编程实现对图片的不同程度的采样与量化。

    三、实验内容
    1.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的采样。
    2.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的量化。

    实验二

    一、实验名称
    图像的灰度变换与直方图修正

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握灰度变换、直方图修正的原理及数学运算。
    3.于MATLAB环境下编程实现对图片的灰度变换和直方图修正。

    三、实验内容
    1.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的灰度变换。
    2.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的直方图修正。

    实验三

    一、实验名称
    图像的噪声与滤波处理

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握图像的噪声与滤波处理。

    三、实验内容
    1.对一张图片添加不同强度的高斯噪声、椒盐噪声
    2.对图像进行不同模板的均值滤波、高斯加权滤波、中值滤波,对比结果并分析不同滤波方式的优劣

    实验四

    一、实验名称
    图像的几何变换

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握图像几何变换的原理及数学运算。
    3.于MATLAB环境下编程实现对图片不同的几何变换。

    三、实验内容
    1.将图像绕图像中心顺时针旋转30度,旋转之后的图像尺寸保持为原图像的尺寸。
    2.将原图像放大2倍
    3.得到该图像的水平镜像图片
    4.得到该图像的垂直错切图像

    实验五

    一、实验名称
    图像锐化

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握图像锐化的原理及数学运算。
    3.于MATLAB环境下编程实现对图片锐化。

    三、实验内容
    利用图像基于单方向梯度算子,Robert算子,Sobel算 子,Pritt算 子, Laplacian算子,多方向模板,LoG算子编写matlab增强程序;最后,显示边缘图像和锐化增强图像,并对这些仿真结果所呈现的边缘提取和增强效果进行对比分析。

    实验六

    一、实验名称
    频域图像分析

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握频域图像分析的原理及数学运算。

    三、实验内容
    1.自选一幅图像,并对其分别添加一定强度的周期噪声和高斯噪声,然后分别采用高斯模板、中值滤波的时域方法以及傅里叶变换和小波变换的频率滤波方法对该含噪图像进行去噪处理,并基于PSNR值和视觉效果这两个指标来比较这四种滤波方法对两种不同噪声的去噪能力。
    2.编写一个程序,要求实现下列算法:首先将閣像分割为8x8的子图像,对每个予图像进行FFT.对每个了图像中的64个系数。按照每个系数的方差来排序后,舍去小的变換系數,只保留16个系数,实现4: I的图像压缩。
    3.给定一幅行和列都为2的整数次幕图像,用Haar小波基函数对其进行二维小波变换,试着将最低尺度近似分量置零再反变换,结果是什么?如果把垂直方向的细节分量置零,反变换后结果又是什么呢?试解释一下原因。
    基于小波变换对图像进行不同压缩比的压缩。在同压缩比情况下,对于基于小波变换和基于傅里叶变换的压缩结果,比较=二者保留原图像能里百分比情况。

    实验七

    一、实验名称
    数学形态学应用

    二、实验目的
    1.熟悉MATLAB软件的使用。
    2.掌握数字图像处理中的腐蚀、膨胀定义及操作。
    3.掌握图像的开运算、闭运算

    三、实验内容
    1.在长方形目标物A中,内部有噪声导致的空洞,周围有噪声块。编写MATLAB程序,达到处理后效果:目标本身除了4个角的直角变为圆角外没有变化。
    2.利用击中击不中原理,确定所需判断图像在图像中的位置

    实验八

    一、实验名称
    阈值分割

    二、实验目的
    利用阈值分割的原理,对图像进行不同阈值的分割

    三、实验内容
    对原图像进行单阈值、多阈值分割,分别得到结果。并MATLAB实现这两种方法的分割,对比分割结果。同时对比不同阈值结果的不同。

    实验九

    一、实验名称
    形状数二、实验目的
    对图像进行重取样,求边界链码,从而得出其相似多边形三、实验内容
    计算该图像边界的阶数为20的形状数及其相应的近似多边形

    76d00650a88bbaf59fa4a639bb472232.png
    展开全文
  • (三)matlab数字图像处理实验-图像灰度变换处理

    万次阅读 多人点赞 2018-01-06 18:47:37
    前两节都是熟悉一下怎么在matlab底下对图片做一些操作...matlab数字图像处理实验 我们还是先写一个guide,然后打开文件的代码: 打开文件摁纽的代码: % --- Executes on button press in 打开位图. funct

    前两节都是熟悉一下怎么在matlab底下对图片做一些操作,并没有什么卵用,这一节稍微有点卵用,灰度变换一般是图像处理的第一步。

    数字图像处理实验1-9点击下列链接有源码和链接:

    我们还是先写一个guide,然后打开文件的代码:

    打开文件摁纽的代码:
    % --- Executes on button press in 打开位图.
    function openFile_Callback(hObject, ~, handles)
    [filename,pathname]=uigetfile('*.bmp','select image');
    str=[pathname filename];
    [handles.I,handles.map]=imread(str);
    guidata(hObject,handles);
    axes(handles.axes1);
    imshow(handles.I,handles.map);
    把图片转换成灰度图片的代码:
    % --- Executes on button press in 转灰度图.
    function togray_Callback(hObject, eventdata, handles)
    X=rgb2gray(handles.I);%就是这个函数把图片变成灰度图
    guidata(hObject,handles);
    axes(handles.axes3);
    imshow(X,handles.map);

    效果:


    1.实现灰度直方图。

    说明:一幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征。图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所占的多少。图像的灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:

    其中,横坐标是灰度级,纵坐标是该灰度级出现的频率。

    代码:

    % --- Executes on button press in 显示灰度直方图.
    function grayBar_Callback(hObject, eventdata, handles)
    X=rgb2gray(handles.I);
    axes(handles.axes2);
    imhist(X);

    效果:


    2.实现灰度线性变换。

    说明:灰度图像主要针对独立的像素点进行处理,由输入像素点的灰度值来决定相应的输出像素点的灰度值,通过改变原始图像数据所占据的灰度范围而使图像在视觉上得到改观,由于灰度变换没有利用像素点之间的相互关系,因而这种处理方法也叫点运算。灰度变换法又分为线性变换和非线性变换,是根据他们采用的算法来定义的。

    代码:

    % --- Executes on button press in 线性变换.
    function lineTransfrom_Callback(hObject, eventdata, handles)
    X=rgb2gray(handles.I);
    J=imadjust(X,[0.2 0.5],[0 1]);
    axes(handles.axes2);
    imshow(uint8(J));
    这里的线性变换我偷懒直接取了(0.2,0.5)到(0,1)两个坐标画直线作为变换规则,但是也是线性对吧~

    仔细的可以参考:matlab图像处理-线性变换和直方图均衡化


    3.实现灰度非线性变换。

    说明:灰度非线性变换:

    (1)负相变换

    负相变换也叫做反相变换,即对每一个像素值求反。对图像求反就是讲原图的灰度值反转,简单的说就是黑的变成白的,白的变成黑的。

    对于灰度图像或彩色图像的每个通道,其算法为:g(x,y) = 255 - f(x,y)

    (2)二值化和阈值处理

    二值化是分段线性的一个特例,一副图像包括目标、背景和噪声,怎样从多值的灰度图像中提取出目标?最常用的方法就是设定一个阈值θ,用θ将图像的数据分成两部分:大于θ的像素群和小于θ的像素群。例如,输入图像为f(x,y),输出图像为f'(x,y),则f'(x,y) = 255(f(x,y) >= θ); f'(x,y) = 0(f(x,y) <= θ),这就是图像二值化处理,它的目标就是利用一个阈值θ将图像f(x,y)分成目标和背景两个领域。

    (3)分段线性变换

    分段线性变换也叫做灰度线性拉伸,常用的是分三段分线性变换。如下图:


    图中对灰度区间[a,b]进行了扩展,而灰度区间[0, a]和[b, Mf]收到了压缩。通过细心调整折线拐点的位置及控制分段直线的斜率,可对任意灰度区间进行扩展和压缩。、

    对于非线性灰度变化,只是算法实现和最终效果上有区别,与线性变换一样,都是为了改善图像的质量。

    (4)对数变换,顾名思义就是以对数的函数图像作为变换规则。

    这里只演示对数图像变换:

    代码:

    % --- Executes on button press in 对数变换.
    function logTransfrom_Callback(hObject, eventdata, handles)
    X=rgb2gray(handles.I);
    J=double(X);
    H=(log(J+1))/10;
    axes(handles.axes2);
    imshow(H,handles.map);

    效果:


    4.实现阈值变换。

    阈值变换:灰度的阀值变换可以将一幅灰度图像转换成黑白二值图像。操作过程如下:先由用户指定一个阀值,如果图像中某像素的灰度值小于该阀值,则将该像素的灰度值设置为0,否则灰度值设置为255。

    从编辑框输入阈值的代码:

    % 阈值输入 
    function threshold_Callback(hObject, eventdata, handles)
    handles.user_entry = str2double(get(hObject,'string'));% 从编辑框中取出阈值,变为数值型
    if isnan(handles.user_entry)
        errordlg('enter a numeric value','Bad Input','modal')
        uicontrol(hObject)
        return
    end
    guidata(hObject,handles)
    进行阈值变换的代码:

    % --- Executes on button press in 确认阈值并且进行阈值变换.
    function confirmThreshold_Callback(hObject, eventdata, handles)
    X=rgb2gray(handles.I);
    J=X>handles.user_entry;
    axes(handles.axes2);
    imshow(J,handles.map);
    效果:



    5.实现均衡变换。

    说明:直方图均衡主要用于增强动态范围偏小的图像的反差,其基本思想是把原始图像的直方图变换为均匀分布,从而增强灰度值的动态范围,以达到增强对比度的效果。
    直方图均衡化算法如下:
    1.归一化灰度频数直方图,得到频率直方图sk
    2.用sk计算频率累计直方图tk,
    3.tk做取整扩展:tk = int[(L - 1) * tk + 0.5],将直方图灰度映射尽量满整个灰度取值空间L
    4.确定变换映射关系k->tk

    5.根据映射关系变换图像灰度值

    当然我们都不用管,直接上代码就可以:

    % --- Executes on button press in 均衡化.
    function Equalization_Callback(hObject, eventdata, handles)
    X=rgb2gray(handles.I);
    J=histeq(X);%直方图均衡化函数
    axes(handles.axes2);
    imshow(uint8(J));
    效果:


    展开全文
  • 对每个数字图像处理的知识点都提供了丰富生动的案例素材,并详细讲解了其MATLAB实验的核心程序,通过对这些示例程序的阅读理解和仿真运行,读者可以更加深刻地理解图像处理的内容,并且更加熟练地掌握MATLAB电各种...
  • 图像处理·实验二】图像的简单处理技术matlab 1. 实现对图像的亮度、对比度、饱和度、色度的调整。(5 Points) 2. 统计图像的直方图。(1 Point) 3. 实现图像的空域滤波:中值滤波和均值滤波。 并选用合适的...
  • 图像的点运算、几何运算、数学形态学图像处理方法、频率变换、图像平滑与去噪、边缘检测、图像分割、图像压缩编码和彩色图像处理
  • 该文件为图像处理实验matlab代码,针对阈值分割的部分,程序也是较为简单,不会涉及太多复杂的计算
  • 这是数字图像处理以及MATLAB教材配套的代码,另外还含有课程实验的说明,里面除了代码还含有待处理图片
  • 自己写的实验报告 混合空间增强法在骨骼图像处理实验报告(附代码
  • matlab数字图像处理实验 上一节已经简单介绍guide的使用,我们直接用,创建了这么一个界面: 1、打开图片代码: % --- Executes on button press in openFile. function openFile_Callback(hObject, ...
  • 图像处理·实验三】matlab 去除人脸图像中的雀斑,人脸美白
  • 为利用matlab进行图像处理实验的小部分代码,这部分代码非常简单,仅需直接调用内置函数即可完成,所以做成简单整理算是分享啦
  • 数字图像处理–基于Matlab的人脸检测研究 数字图像处理Matlab-形态学图像处理 数学形态学 数字图像处理Matlab-图像压缩与离散余弦变换 数字图像处理Matlab-小波变换在图像处理中的应用 数字图像处理Matlab-彩色图像...
  • 图像处理基本操作一、实验目的二、实验题目三、实验内容3.1 相关知识3.2 实验代码3.3 实验结果四、实验心得 一、实验目的 二、实验题目 三、实验内容 3.1 相关知识 3.2 实验代码 3.3 实验结果 四、实验心得 ...
  • 形态学图像处理一、实验目的二、实验题目三、实验内容3.1 相关知识3.2 实验代码3.3 实验结果四、实验心得 一、实验目的 二、实验题目 三、实验内容 3.1 相关知识 3.2 实验代码 3.3 实验结果 四、实验心得 ...
  • 1.熟练掌握matlab基本操作:对图像进行读、写和显示;图像的基本信息;灰度平均值等。 2.掌握用matlab进行图像旋转、裁剪等操作; 3.熟悉matlab图像处理工具箱的使用方法
  • b=0)、(a=1,b>0)和(a=1,b)等情况下的灰度变换处理,并比较处理前后的图像效果。 Matlab(matrixlab)矩阵实验室,在我的理解中matlab对灰度图片的提取即将其每个像素点的灰度提取,组成矩阵。 matlab代码: ...
  • 图像分割一、实验目的二、实验题目三、实验内容3.1 相关知识3.2 实验代码3.3 实验结果四、实验心得 一、实验目的 二、实验题目 三、实验内容 3.1 相关知识 3.2 实验代码 3.3 实验结果 四、实验心得 ...
  • 经常逛博客,从来没写过,最近在上数字图像处理,决定写一些课上老师布置的小实验和大家分享。 首先是对灰级窗的实验。 所谓灰级窗: 只显示指定灰度级范围内的信息 抑制非重要信息的对比度。 附上函数部分的代码:...
  • 注:本系列来自于图像处理课程实验,用Matlab实现最主要的图像处理算法图像点处理是图像处理系列的基础,主要用于让我们熟悉Matlab图像处理的编程环境。灰度线性变换和灰度拉伸是对像素灰度值的变换操作,直方图是对...
  • 读取MATLAB自带图像,对该图像进行直方图均衡化,显示处理前后的图像及直方图的变化,附上代码及相关说明。 clc;clear;close all; path(path,'D:\R2019a\toolbox\images\imdata'); % 读取路径图像信息 im=imread('...
  • 数字图像处理MATLAB实验一 一、实验名称 图像的采样与量化 二、实验目的 1.熟悉MATLAB软件的使用。 2.掌握采样与量化的原理及数学运算。 3.于MATLAB环境下编程实现对图片的不同程度的采样与量化。 三、实验...
  • 图像增强(2)一、实验目的二、实验题目三、实验内容3.1 相关知识3.2 实验代码3.3 实验结果四、实验心得 一、实验目的 二、实验题目 三、实验内容 3.1 相关知识 3.2 实验代码 3.3 实验结果 四、实验心得 ...
  • 图像增强(1)一、实验目的二、实验题目三、实验内容3.1 相关知识3.2 实验代码3.3 实验结果四、实验心得 一、实验目的 二、实验题目 三、实验内容 3.1 相关知识 3.2 实验代码 3.3 实验结果 四、实验心得 ...
  • 数字图像处理(MATLAB)实验一一、实验名称图像的采样与量化二、实验目的1.熟悉MATLAB软件的使用。2.掌握采样与量化的原理及数学运算。3.于MATLAB环境下编程实现对图片的不同程度的采样与量化。三、实验内容1.对于给定...
  • 在读研时期,学习数字图像处理时,整理了一些数字图像处理实验,采用matlab实现,整理于此。实验包括:二值图像阈值化、图像缩放和旋转、图像灰度级变换、直方图显示和直方图均衡化、图像滤波和边缘检测、傅里叶...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 233
精华内容 93
关键字:

matlab图像处理实验代码

matlab 订阅