文档介绍:2. 图像的灰度直方图 3. 图像的增强(一)图像的读入在计算机中一幅二维数字图像可以用一个矩阵表示,该矩阵中的元素是位于相应坐标位置的图像灰度值。对图像处理,往往都是对像素灰度的操作,在图像处理中,直接对像素进行的操作称为空间域(简称空域)处理。在 matlab 里读入一幅图片用函数 imread ();例如读入眼睛图像语句为: im=imread (’H: \ ‘); figure , imshow 图片如下: 一、图像的灰度图像(二)图像的灰度变换 MATLAB 中,用函数 imadjust 可完成灰度图像的灰度变换。其基本语法在格式为: g = imadjust(p,[low_in high_in],[low_out high_out], gamma) 其中, p为读入到 MATLAB 中的待变换图像矩阵; [low_in high_in] 指定 p图像中被执行变换操作的灰度范围, [low_out high_out] 是p图像中的像素变换后被映射到 low_out ~ high_out 的灰度级上。默认状态下, [low_out high_out] 及[low_in high_in] 为空,此时等价于[0 1],表明输入与输出灰度级为 0~ 255 ( uint8 )或 0~ 65535 ( uint16 )。参数 gamma 是指变换映射的方式, 默认方式时 gamma 取作 1,完成线性映射,这时变换前后的灰度级没有被加权; 当 gamma 小于 1,则映射被加权至更高的灰度级; 相反当 gamma 大于 1,输出则被加权映射至较低的灰度级。 p = imread(''); g1 = imadjust(p,[ ],[]); subplot(1,2,1); imshow(p); xlabel('(a)'); subplot(1,2,2); imshow(g1); xlabel('(b)'); 例如:(三)彩色图像转换位灰度图像 matlab 中用函数 rgb2gray ()来使彩色图像装化为灰度图像。语法为 w=rgb2gray (q);例如:代码为: A=imread('H:\'); subplot(1,2,1);imshow(A); B=rgb2gray(A); subplot(1,2,2),imshow(B) (四)对图像分为 RGB 三部分灰度函数为例如: A=imread('H:\'); >> R=A(:,:,1); >> G=A(:,:,2); >> B=A(:,:,3); >> subplot(1,3,1);imshow(R); subplot(1,3,2),imshow (G);subplot(1,3,3),imsho w(B) >> 注: “:”表示方阵的大小,可省略。可用[m n]=size() 二、图像的灰度直方图灰度直方图用 imhist () A=imread('H:\'); >> R=A(:,:,1); G=A(:,:,2); B=A(:,:,3); subplot(1,3,1);imhist (R); subplot(1,3,2),imhist (G); subplot(1,3,3),imhist (B)三、求眼睛直径?代码: im=imread(''); ? im1=rgb2gray(im); ? im1=medfilt2(im1,[10 10]);medfilt2 是一个二维中值滤波函数,其基本语法格式为: ? hp = medfilt2(p, [m n], padopt) ?,m及n规定了邻域的大小, padopt 指定了边界填充方式,默认方式为 zeros ? BW = edge(im1,'sobel'); 图像边缘的检测 [e , s] = edge(p, 'method', para) ? method 是边缘检测的类型, para 为与 edge 对应的参数, e为与 p同样大小的逻辑矩阵,在检测到边缘的位置时值为 1,其它位置则为 0,s为一可选参数。?[imx,imy]=size(BW); ? msk=[0 0 0 0 0; ? 0 1 1 1 0; ? 0 1 1 1 0; ? 0 1 1 1 0; ? 0 0 0 0 0;]; ? B=conv2(double(BW),double(msk)); MATLAB 图像处理工具箱中的函数 bwlabel 是把四连通或八连通的区域连接起来, 调用