数字图像处理实验 实验二
2015秋 数字图像处理实验二 综合实验

//细胞核和核仁的面积统计
//统计结果存入数组 parameter[index-1]=(float)area_nucleolus/(area_cell+area_nucleolus); //把当前测量的细胞,细胞核与核仁置不同的标记输出 //测量结果存文件,以分析测量数据
菜单中的消息响应函数
预处理
为何需要预处理?
直接分割的效果
选择何种预处理方法?
中值、均值、形态学开闭运算的效果对比 分析预处理的目的,有针对性的选择合适的方法
预处理
中值滤波
原图
灰值闭运算
分割
分割方法的选择 全局阈值 大津阈值 水域分割 …
中值滤波后分割
分割后的效果 直接分割 噪声、边缘毛刺 滤波后分割
//统计该连通区域的大小
//连通区域太小,滤除,此处大小可根据实际应用自行设定 *(segment.m_pImgData+k*lineByte+l)=255; //滤除 //其余的连通区域被认定为目标,给定编号 *(segment.m_pImgData+k*lineByte+l)=index;
输出测量结果
细胞图像分割测量的方案步骤
数学形态学
腐蚀:集合 A 被集合 B 腐蚀,表示为 A B ,数学形式为
A B = {x : B x A}
膨胀: A 被 B 膨胀表示为 A B , 其定义为:
A B [AC
(-B )]C
A B
A
A B B
腐蚀类似于收缩
利用圆盘膨胀
实验一:现场演示,检查,提问 实验二:现场演示,检查,提问 实验三:现场演示,检查,提问,提交报告和代码 实验成绩占最终成绩的30%。
数字图像处理实验二

电子工程学院数字图像处理课程实验报告四、实验容(包括实验电路、实验步骤与流程、源程序代码、调试过程记录等,可另附页)1.打开计算机,安装和启动MATLAB程序;2.利用MatLab工具箱中的函数编制FFT频谱显示的函数;3. a).调入、显示图像;b)对图像做FFT并利用自编的函数显示其频谱;c)讨论不同的图像容与FFT频谱之间的对应关系。
4. 对频谱分别进行巴特沃兹、高斯滤波(高通和低通),比较其锐化和平滑效果5.记录和整理实验报告。
五、实验结果及分析(包括程序和数据的记录及分析、实验总结等,可另附页)i=imread('C:\picture\lena.bmp'); %读入原图像文件figure(1); %设定窗口imshow(i); %显示原图像colorbar; %显示图像的颜色条title('原图像') %图像命名j=fft2(i); %二维离散傅立叶变换k=fftshift(j); %直流分量移到频谱中心l=log(abs(k)); %数字图像的对数变换figure(2); %设定窗口imshow(l,[]); %显示原图像colorbar; %显示图像的颜色条title('经过二维快速傅立叶变换后的图像') %图像命名n=ifft2(j)/255;%逆二维快速傅里叶变换figure(3); %设定窗口imshow(n);%显示原图像colorbar;%显示图像的颜色条title('经过二维快速傅立叶逆变换后的图像')%图像命名m=fftshift(j);%直流分量移到频谱中心RR=real(m);%取傅立叶变换的实部II=imag(m); %取傅立叶变换的虚部A=sqrt(RR.^2+II.^2);%计算频谱幅值A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;%归一化figure(4);%设定窗口imshow(A);%显示原图像colorbar;%显示图像的颜色条title('离散傅立叶频谱');%图像命名%理想低通滤波器J=imread('C:\picture\lena.bmp');figure(5);subplot(221);imshow(J);title('原图像');J=double(J);f=fft2(J);g=fftshift(f);subplot(222);imshow(log(abs(g)),[]),color(jet(64));title('傅立叶变换后的频谱');fft2(g)));subplot(223);imshow(g);title('通过理想滤波器');I=imread('C:\picture\lena.bmp'); %巴特沃斯低通滤波器J=imnoise(I,'salt & pepper',0.05);figure(6);subplot(2,1,1);imshow(J);title('含有椒盐噪声的图像')J=double(J);f=fft2(J);%2维离散傅立叶变换g=fftshift(f);%将fft结果以fs/2为中心左右互换[M,N]=size(f);n=3;d0=20;n1=floor(M/2);n2=floor(N/2);for i=1:Mfor j= 1:Nd=sqrt((i-n1)^2+(j-n2)^2);h=1/(1+(d/d0)^(2*n));g(i,j)=h*g(i,j);endendg=ifftshift(g);g=uint8(real(ifft2(g)));subplot(2,1,2);imshow(g);title('通过巴特沃斯低通滤波器的图像')六、心得体会(思考与创新、建议等)思考题:1.傅里叶变换有哪些重要的性质?线性性、对称性、相似性、平移性、像函数的平移性(频移性)、微分性、像函数的微分性、积分性、卷积与卷积定理、乘积定理2.图像的二维频谱在显示和处理时应注意什么?a.进行傅里叶变换的图像应该是灰度图形,原rgb彩色图像无法进行相应变换b..注意使用fftshift函数将频谱的零频分量移至频谱的中心实验心得:通过本次实验了解二维频谱的分布特点;熟练掌握FFT方法及应用和MATLAB编程实现数字图像的傅立叶变换及滤波锐化和平滑处理;。
数字图像处理作业(第两次) 基于灰度变换的图像增强

数字图像处理作业(第两次) 基于灰度变换的图像增强第一题 利用幂律变换进行图像增强(实现例3.1)1. 问题重现例3.1中的实验,即用幂律变换对冈萨雷斯《数字图像处理(第3版)》Fig.3.8(a)中的图像进行变换。
c 取1, gamma 分别取0.6,0.4,0.3,观察何时获得最佳的增强效果。
2. 算法步骤:1)将Fig.3.8(a) 中的图像读入矩阵X 中2)输入参数c 和gamma 的值3)显示图像X ;4)利用参数c 和gamma 的值对X 进行幂律变换,得到变换后的图像Y5)显示变换后的图像Y 。
3.程序:(1) 幂律变换的程序:function Y=power_enhance(X, gamma, c)% 对输入图像X 进行幂律变换if ~isa(X,'double')X=im2double(X);endY=c*X.^gamma;(2) 主程序:X=imread('Fig0308(a)(fractured_spine).tif');figure(1)imshow(X);c=1; gamma=0.3;Y= power_enhance(X, gamma, c);figure(2)imshow(Y)c=1,gamma=0.3时的运行结果: c=1, gamma=0.4时的运行结果: c=1, gamma=0.6时的运行结果:5. 实验结果分析随着伽马值从0.6减小到0.4,更多的细节变得可见了。
当伽马值进一步减小到0.3时,背景中的细节得到了进一步增强,但对比度会降低到图像开始有轻微“冲淡”外观的那一点,尤其是在背景中。
比较所有的结果,在对比度和可辨识方面的最好增强在0.4时。
第二题 利用幂律变换进行图像增强(实现例3.2)1. 问题重现例3.2中的实验,即用幂律变换对冈萨雷斯《数字图像处理(第3版)》Fig.3.9(a)中的图像进行变换。
c 取1, gamma 分别取3, 4 和5 ,观察何时获得最佳的增强效果。
数字图像处理实验实验报告 实验二

数字图像处理实验实验报告(实验一)一、实验目的:1、直方图显示2、计算并绘制图像直方图3、直方图均衡化二.程序脚本clear all;RGB=imread('me.jpg');figure;imshow(RGB);title('图1 彩色图');%========================================================== I=rgb2gray(RGB);figure;imshow(I);title('图2 灰度图');%========================================================= figure;imhist(I);title('灰度直方图');%========================================================= hi=imhist(I);j=1;%为使画出的直方图更好看,在此进行了抽样for(i=1:256)if(mod(i,10)==1)h(j)=hi(i);j=j+1;endendn=0:10:255;figure;stem(n,h);axis([0 255 0 2500]);title('图3.1 stem显示直方图');figure;bar(n,h);axis([0 255 0 2500]);title('图3.2 bar显示直方图');figure;plot(n,h);axis([0 255 0 2500]);title('图3.3 plot显示直方图');%========================================================= I=rgb2gray(RGB);figure;subplot(3,2,1);imshow(I);title('图4.1 原始灰度图');subplot(3,2,2);imhist(I);title('图4.2 原始灰度直方图');%=============================J1=imadjust(I);subplot(3,2,3);imshow(J1);title('调整对比度以后的图');subplot(3,2,4);imhist(J1);title('调整对比度以后的灰度直方图');%=================================J2=histeq(I);subplot(3,2,5);imshow(J2);title('均衡化以后的的图');subplot(3,2,6);imhist(J2);title('均衡化以后的灰度直方图');三.实验结果图1 彩色图图2 灰度图010002000灰度直方图10020010020005001000150020002500图3.1 stem 显示直方图10020005001000150020002500图3.2 bar 显示直方图10020005001000150020002500图3.3 plot 显示直方图图4.1 原始灰度图10002000图4.2 原始灰度直方图0100200调整对比度以后的图010002000调整对比度以后的灰度直方图0100200均衡化以后的的图02000均衡化以后的灰度直方图100200。
数字图像处理实验二报告

贵州大学实验报告学院:专业:班级:姓名学号实验组实验时间指导教师成绩实验项目名称实验二:数字图像的空域增强处理实验目的通过本实验的学习使学生熟悉和掌握数字图像中的空域增强的一些典型方法:直方图的均衡化处理、平滑滤波、锐化滤波。
实验要求集中授课的教学形式实验原理1、直方图均衡化:基本思想:把原始图的直方图变换为均匀分布的形式,这样就增加了灰度值的动态范围从而达到增强图像整体对比度的效果。
其优点是能自动地增强整个图像的对比度。
均衡化步骤:(1)列出原始灰度级;(2)归一化原始灰度级;(3)统计原始直方图个灰度级像素kn;(4)计算原始直方图;(5)计算累计直方图;(6)确定映射关系(原则是:取最靠近的灰度级别);(7)统计新直方图各灰度级像素kn(8)计算新直方图;也可以用以下方法:(1)计算出原始图像的所有灰度级ks,1,,1,0-=Lk ;(2)统计原始图像各灰度即的像素数k n ;(3)计算原始图像的直方图n n s p kk =)(,1,,1,0-=L k ;(4)计算原始图像的累积直方图)()(00∑∑=====ki i s ki ik k s p n n s EH t ;(5)取整运算:])1int[(N kt N t k k +-=;(6)定义映射关系k k t s →;(7)统计新直方图各灰度级的像素数k n ;(8)计算新的直方图n n t p kk t =)(;2、邻域平均法对含噪声原始图像),(y x f 的每个像素点取一个邻域S 。
计算S 中的所有像素灰度级的平均值,作为空间域平均处理后图像),(y x g 的像素值。
即:∑∈=Sy x y x f My x g ),(),(1),(其中M 为邻域S 中的像素点数。
3、中值滤波对含噪声原始图像),(y x f 的每个像素点取一个邻域S (一般选取奇数点模板窗口)。
选取S 中的所有像素灰度级的中间值,作为空间域平均处理后图像),(y x g 的像素值。
数字图像处理实验报告.doc

数字图像处理试验报告实验二:数字图像的空间滤波和频域滤波姓名: XX学号: 2XXXXXXX实验日期:2017年4月26日1. 实验目的1. 掌握图像滤波的基本定义及目的。
2. 理解空间域滤波的基本原理及方法。
3. 掌握进行图像的空域滤波的方法。
4. 掌握傅立叶变换及逆变换的基本原理方法。
5. 理解频域滤波的基本原理及方法。
6. 掌握进行图像的频域滤波的方法。
2. 实验内容与要求1. 平滑空间滤波:1) 读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。
2)对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示。
3)使用函数 imfilter时,分别采用不同的填充方法(或边界选项,如零填充、’ replicate ’、’ symmetric ’、’ circular ’)进行低通滤波,显示处理后的图像。
4) 运用 for 循环,将加有椒盐噪声的图像进行10 次, 20 次均值滤波,查看其特点, 显示均值处理后的图像(提示 : 利用 fspecial 函数的’ average ’类型生成均值滤波器)。
5) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。
6)自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像。
2.锐化空间滤波1) 读出一幅图像,采用3×3 的拉普拉斯算子 w = [ 1, 1, 1; 1 – 81;1,1, 1]对其进行滤波。
2) 编写函数 w = genlaplacian(n) ,自动产生任一奇数尺寸n 的拉普拉斯算子,如 5×5的拉普拉斯算子w = [ 1 1 1 1 11 1 1 1 11 1 -24 1 11 1 1 1 11 1 1 1 1]3) 分别采用5×5,9×9,15×15 和 25×25 大小的拉普拉斯算子对blurry_moon.tif进行锐化滤波,并利用式 g(x, y)2 f (x, y) 完成图像的锐化增强,观察其有何f (x, y)不同,要求在同一窗口中显示。
数字图像处理实验二(直方图均衡化)

数字图像处理实验二直方图均衡化(直方图均衡化实质上是减少图象的灰度级以换取对比度的加大)例如:假设原图的灰度分布级为126(最大为256,也就是从0到255的级上的灰度都有或多或少的出现),经过直方图均衡化后,灰度分布级别将会小于126。
编程的时候请按照直方图均衡化公式进行。
下面给出大致的编程思路和源代码:其中黑框部分需要自己编写源代码1)利用第一次实验课提供的dhc.h 和dhc.c文件以获取位图的高宽以及从文件头到实际的位图数据的偏移字节数,从而实现对位图实际数据的操作。
利用include命令#include <stdio.h>#include <stdlib.h>#include <memory.h>#include "hdr.h"思考问题:#include <*.h> 和#include "*.h"在程序运行中有什么差别?2)定义结构指针struct bmphdr *hdr;定义用于直方图变量unsigned char *bitmap, new_color[256];定义计算灰度分布,灰度累计分布的数组int count[256], acum[256];3)main()函数编写//定义整数i,j 用于函数循环时的,nr_pixels为图像中像素的个数int i, j, nr_pixels;//定义两个文件指针分别用于提取原图像的数据和生成直方图均衡化后的图像FILE *fp, *fpnew;//定义主函数的参数包括:输入的位图文件名和输出的位图文件名,此处内容可以不要,在DOS下执行命令的时候再临时输入也可,为了方便演示,我这里直接把函数的参数确定了。
argc=3;argv[1]="test.bmp";argv[2]="testzf.bmp";//参数输入出错显示if (argc != 3) {printf("please input the name of input and out bitmap files\n");exit(1);}// 获取位图文件相关信息hdr = get_header(argv[1]);if (!hdr) exit(1);//以二进制可读方式打开输入位图文件fp = fopen(argv[1], "rb");if (!fp) {printf("File open error!\n");exit(1);}// 文件指针指向数据区域fseek(fp, hdr->offset, SEEK_SET);//计算位图像素的个数nr_pixels = hdr->width * hdr->height;bitmap = malloc(nr_pixels);//读取位图数据到bitmap中fread(bitmap, nr_pixels, 1, fp);fclose(fp);memset(count, 0, sizeof(count));//计算每个灰度级上像素的个数结果存入count[]数组中memcpy(acum, count, sizeof(acum));//计算灰度的累计分布for (i = 1; i < 256; i++)acum[i] += acum[i-1];//灰度直方图的均衡化(核心程序部分,请仔细分析)为了方便大家编程实现,这里直接给出了源代码,本实验最核心的部分就在这里//}//对所有的像素灰度值按照均衡化得到的灰度对应规则进行转换,结果存入bitmap[]中//fpnew = fopen(argv[2], "wb+");//由于位图文件的头部信息并没有因直方图均衡化而改变,因此输出图像的头部信息从原位图文件中拷贝即可:fwrite(hdr->signature, 2, 1, fpnew);fwrite(&hdr->size, 4, 1, fpnew);fwrite(hdr->reserved, 4, 1, fpnew);fwrite(&hdr->offset, 4, 1, fpnew);fwrite(&hdr->hdr_size, 4, 1, fpnew);fwrite(&hdr->width, 4, 1, fpnew);fwrite(&hdr->height, 4, 1, fpnew);fwrite(&hdr->nr_planes, 2, 1, fpnew);fwrite(&hdr->bits_per_pixel, 2, 1, fpnew);fwrite(&hdr->compress_type, 4, 1, fpnew);fwrite(&hdr->data_size, 4, 1, fpnew);fwrite(&hdr->resol_hori, 4, 1, fpnew);fwrite(&hdr->resol_vert, 4, 1, fpnew);fwrite(&hdr->nr_colors, 4, 1, fpnew);fwrite(&hdr->important_color, 4, 1, fpnew);if (hdr->offset > 54)fwrite(hdr->info, (hdr->offset - 54), 1, fpnew);////关闭fclose(fpnew);//释放内存(优化程序必需)free(hdr);free(bitmap);return 0;}。
数字图像处理实验报告2

实验二: 数字图像的空间域滤波——平滑滤波1. 1. 实验目的2.掌握图像滤波的基本定义及目的。
3.理解空间域滤波的基本原理及方法。
4.掌握进行图像的空域滤波的方法。
1. 2. 实验基本原理2.空间域增强空间域滤波是在图像空间中借助模板对图像进行领域操作, 处理图像每一个像素的取值都是根据模板对输入像素相应领域内的像素值进行计算得到的。
空域滤波基本上是让图像在频域空间内某个范围的分量受到抑制, 同时保证其他分量不变, 达到增强图像的目的。
空域滤波一般分为线性滤波和非线性滤波两类。
各种空域滤波器根据功能主要分为平滑滤波器和锐化滤波器。
平滑的目的可分为两类: 一类是模糊, 目的是在提取较大的目标前去除太小的细节或将目标内的小肩端连接起来;另一类是消除噪声。
锐化的目的是为了增强被模糊的细节。
结合这两种分类方法, 可将空间滤波增强分为四类:线性平滑滤波器(低通)非线性平滑滤波器(低通)线性锐化滤波器(高通)非线性锐化滤波器(高通)1)空间滤波器都是基于模板卷积, 其主要工作步骤是:2)将模板在图中移动, 并将模板中心与图中某个像素位置重合;3)将模板上的系数与模板下对应的像素相乘;4)将所有乘积相加;5)将和(模板的输出响应)赋给图中对应模板中心位置的像素。
3.平滑滤波器1)线性平滑滤波器线性低通平滑滤波器也称为均值滤波器, 这种滤波器的所有系数都是正数, 对3×3的模板来说, 最简单的是取所有系数为1, 为了保持输出图像任然在原来图像的灰度值范围内, 模板与象素邻域的乘积都要除以9。
MATLAB 提供了fspecial 函数生成滤波时所用的模板, 并提供filter2和imfilter 函数用指定的滤波器模板对图像进行运算。
函数fspecial 的语法格式为:h=fspecial(type);h=fspecial(type,parameters);其中参数type 指定滤波器的种类, parameters 是与滤波器种类有关的具体参数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二MATLAB图像运算一、实验目的
1.了解图像的算术运算在数字图像处理中的初步应用。
2.体会图像算术运算处理的过程和处理前后图像的变化。
二、实验步骤
1.图像的加法运算-imadd
对于两个图像f x,y和 (x,y)的均值有:
g x,y=1
f x,y+
1
(x,y)
推广这个公式为:
g x,y=αf x,y+β (x,y)
其中,α+β=1。
这样就可以得到各种图像合成的效果,也可以用于两张图像的衔接。
说明:两个示例图像保存在默认路径下,文件名分别为'rice.png'和'cameraman.tif',要求实现下图所示结果。
代码:
I1 = imread('rice.png');
I2 = imread('cameraman.tif');
I3 = imadd(I1, I2,'uint8');
I4 = imadd(I1, I2,'uint16');
subplot(2, 2, 1), imshow(I1), title('Ô-ʼͼÏñ1');
subplot(2, 2, 2), imshow(I2), title('Ô-ʼͼÏñ2');
subplot(2, 2, 3), imshow(I3), title('8λͼÏñÏÔʾ');
subplot(2, 2, 4), imshow(I4), title('16λͼÏñÏÔʾ');
结果截图:
2.图像的减法运算-imsubtract
说明:
背景图像可通过膨胀算法得到background = imopen(I,strel('disk',15));,要求实现下图所示结果。
示例代码如下:
I1 = imread('rice.png');
background = imerode(I1, strel('disk', 15));
rice2 = imsubtract(I1, background);
subplot(2, 2, 1), imshow(I1), title('Ô-ʼͼÏñ');
subplot(2, 2, 2), imshow(background), title('±³¾°Í¼Ïñ');
subplot(2, 2, 3), imshow(rice2), title('´¦ÀíºóµÄͼÏñ');
结果截图:
3.图像的乘法运算-immultiply
说明:示例图像保存在默认路径下,文件名分别为'moon.tif',要求实现下图所示结果(整体亮度增加1.5倍)。
代码如下:
moon = imread('moon.jpg');
moon2 = immultiply(moon, 1.5);
subplot(1, 2, 1), imshow(moon), title('Ô-ʼͼÏñ');
subplot(1, 2, 2), imshow(moon2), title('´¦ÀíºóµÄͼÏñ');
4.图像的除法运算-imdivide
K=imdivide (I,J);
图像的除法通常用于校正成像设备的非线性误差,也可用于检测两张图像间的差别,它给出的相应像素的变化比率,而不是每个像素的绝对差异。
代码如下:
>> I=imread('cameraman.tif');
>> J = double(I);
>> J = J*0.43+90;
>> I2 = uint8(J);
>> Ip = imdivide(I,I2);
>> imshow(Ip,[])
结果
5.图像更的几何运算
Matlab提供了图像大小变化、旋转、错切、删除及反射等图像的几何操作,达到图像的配准和几何校正的目的。
(1)改变图像的大小-imresize
说明:要求将图像大小缩小至原来的一半
代码:
I1 = imread('rice.png');
I2= imresize(I1, 0.5);
结果截图
(2)图像旋转-imrotate
说明:要求将图像逆时针旋转90度
代码:
I1 = imread('cameraman.tif');
I2= imrotate(I1, 90);
结果截图
(3)空间变换
说明:要求对图像进行仿射变换
>> I = imread('cameraman.tif');
tform = maketform('affine',[1 0 0; .5 1 0; 0 0 1]); J = imtransform(I,tform);
imshow(I), figure, imshow(J)
三、思考题
由图像算术运算的运算结果,思考图像减法运算在什么场合上发挥优势?。