如何选取灰度变换函数

B(x, y) f A x, y
Notice:
(1)与局部(邻域)运算的差别,输入像素-输出像素一一对应; (2)与几何运算的差别,不改变图像的空间关系; (3)又称为对比度增强,对比度拉伸或灰度变换。
1 引言
2)点运算的种类
(1)线性点运算
GST函数f (D)为线性,即
为DB。
对变换函数f的要求是单值且单调递增,值空间在[0,255]。
2 点运算和直方图
2 点运算和直方图
Step1 Step2
H DBDB
DB
B
D dD
H DA DA
DA
A
D dD
HB DB DB H A DA DA
H
B

DB


HA
DB
DA

DA
HB

DB


HA
dDB
DA


dDA
HA DA
d dDA
f DA
将DA换成DB,得
HB
D

H A f 1 D f ' f 1 D
其中f ' df dD
2 点运算和直方图
3)举例
(1)线性点运算性质:
DA

f
1 DB DB
将感兴趣特征的对比度扩展使之占据可显示灰度级的更 大部分。
1 引言
(3)显示标定(display calibration)
显示设备不能线性地将灰度值转换为光强度。 因此点运算和显示非线性组合,以保持显示图 像时的线性关系。
(4)轮廓线确定
用点运算的方法进行阈值化。
(5)裁剪
每次点运算的最后一步,都将负值置为0;而将 正值约束在灰度级最大值Dm。
2 点运算和直方图
例子2:假定原直方图为高斯函数
D1002
HAD e
800
HB
D

1

D 1.2
100 50 1.2
2
e
800
1.2
1
HA(D)
0.8
0.6
0.4
0.2
HB(D)
0
20 40 60 80 100 120 140 160 180 200 220 240
2 点运算和直方图
1)为什么讨论两者关系?
为使输出灰度产生特定形式的输出直方图,而逆向寻 求点运算函数的过程。
2)输出直方图
DB f DA DA f 1 DB
分两步完成: (1)分子为输入直方图,但自变量从DA替换为DB。 (2)分母为灰度变换函数的导数,如果出现DA也替换
b
a
HB
D

1 a
HA

D a
b

*b>0,直方图向右平移,图像变亮;
*b<0,直方图向左平移,图像变暗;
*a>1,直方图对比度加大。
例子1:lena
DB 1.2 DA 50
2 点运算和直方图
2 点运算和直方图
DB 1.2 DA 50 213≈1.2*138+50
五、直方图匹配
六、光度学校正和显示校正
七、要点总结
习题
1 引言
1)点运算(point operation)定义 对于一幅输入图像,将产生一幅输出图像,输出 图像的每个像素点的灰度值由输入像素点决定。 点运算由灰度变换函数(gray-scale transformation, GST)确定。
260 240
f x x 0.8 x 255 x
220
255
200
180
160
140
120
100
80
60
40
20
0 20 40 60 80 100 120x 140 160 180 200 220 240
1 引言
lenna.bmp
f x x 0.8 x 255 x
255
1 引言
3)应用
(1)光度学标定(photometric calibration)
希望数字图像的灰度能够真实反映图像的物理特性。如 去掉非线性; 变换灰度的单位。
(2)对比度增强(contrast enhancement)或对 比度扩展(contrast stretching)
数字图像处理
第四章 点运算
CH4 点运算
一、引言
图 如 图像 何 像增 观 增强 察 强:到 两改图 种善像 方图更 法像多: 基,细已于节使图,图如像像何灰看达度起到值来较统更好计好. 的对 方比 法;度基. 于图像空间频率的方法.
二、点运算和直方图
三、直方图均衡化
四、直方图规定化
2 点运算和直方图
(2) 二阶点运算
DB
f DA 255
DA 255
2 DA2 255
2 点运算和直方图
例子3:假定原直方图为高斯函数
H A DA eDA2
1
HB
DB
eDB 2 DB
0.8
HA
0.6
0.4
0.2
HB
此处用的灰度变换公 式为DB=DA^2
DB f (DA ) DA b
显然, 若a 1,b 0,图象像素不发生变化; 若a 1,b 0,图象所有灰度值上移或下移; 若a 1,输出图象对比度增强; 若0 a 1,输出图象对比度减小; 若a 0,暗区域变亮,亮区域变暗,图象求补。
1Байду номын сангаас引言

*
f(D)

Dm 2
1

1 sin(
)
sin
D Dm

1 2

2

效果同上。

*f(D)
Dm 2
1

1 tan(

)
tan
D Dm

1 2

2

效果与上相反。
常用对数函数、幂次 函数和分段线性函数
1 引言
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
2 点运算和直方图
(3)其它情形 *若灰度变换函数存在0斜率,则输出直方图将产生
尖峰; *若灰度变换函数存在斜率无穷大,则输出直方图
将部分区域扩展为一定宽度; *若灰度变换函数不存在反函数,可以将输入直方
lenna.bmp
DB DA 50
DB 1.5 DA
DB 0.8 DA DB 1 DA 255
1 引言
(2)非线性点运算
以非线性灰度变换函数为例,如
* f(D) D C D Dm D
将增加中间范围像素的灰度级,而只使暗像素和亮像素作较小改变。
合集下载

4-1、图像增强之灰度变换和彩色增强

4-1、图像增强之灰度变换和彩色增强

g=9*log(f+1)
作用:将暗的部分扩展,而将亮的部分抑制。(示例)
4、直方图均衡化
直方图均衡方法的基本思想是对 在图像中像素个数多的灰度级进行展 宽,而对像素个数少的灰度级进行缩 减。从而达到清晰图像的目的。 用以改变图像整体偏暗或整体偏亮, 灰度层次不丰富的情况,将直方图的 分布变成均匀分布
2、 对比度展宽(灰度线性变换)
一、对比度展宽的目的:
是一点对一点的灰度级的影射。设新、旧图的 灰度级分别为g和f,g和f 均在[0,255]间变化。 实质是旧图到新图的灰度级的逐点映射。 g=G(f) 目的:将人所关心的部分强调出来。 特点:变换前后像素个数不变,但不同像素之间的 灰度差变大,对比度加大,视觉效果增强gγຫໍສະໝຸດ 255gbβ
ga
β
α
a b 255
f
a
b 255
f
2、对比度展宽 三、灰级窗切片:
只保留感兴趣的部分,其余部分置为 0。如: 0
g
255
a
b
255
f
2、对比度展宽
四、二值化图像: 可将多灰度的图像转换成黑白二值 图像;方法是对图像取一阈值,大 于该阈值的像素赋予灰度1,小于该 阈值的像素赋予灰度0
I ( x, y) e( x, y) g ( x, y)
g ( x, y) e ( x, y) I ( x, y)
1
1、灰度级的修正
灰度级修正的方法: (1)先用该系统对一已知亮度均匀的图像进行 记录,得到一个实际的“非均匀曝光”的图像, 求得是图像发生畸变的比例因子 (2)当用同一系统对其他图像进行记录时,便 可通过该比例因子求出理想图像
51

Python图像运算之图像灰度线性变换详解

Python图像运算之图像灰度线性变换详解

Python图像运算之图像灰度线性变换详解⽬录⼀.灰度线性变换⼆.图像灰度上移变换三.图像对⽐度增强变换四.图像对⽐度减弱变换五.图像灰度反⾊变换六.总结⼀.灰度线性变换图像的灰度线性变换是通过建⽴灰度映射来调整原始图像的灰度,从⽽改善图像的质量,凸显图像的细节,提⾼图像的对⽐度。

灰度线性变换的计算公式如(12-1)所⽰:该公式中DB表⽰灰度线性变换后的灰度值,DA表⽰变换前输⼊图像的灰度值,α和b为线性变换⽅程f(D)的参数,分别表⽰斜率和截距[1-4]。

当α=1,b=0时,保持原始图像当α=1,b!=0时,图像所有的灰度值上移或下移当α=-1,b=255时,原始图像的灰度值反转当α>1时,输出图像的对⽐度增强当0<α<1时,输出图像的对⽐度减⼩当α<0时,原始图像暗区域变亮,亮区域变暗,图像求补如图12-1所⽰,显⽰了图像的灰度线性变换对应的效果图。

⼆.图像灰度上移变换该算法将实现图像灰度值的上移,从⽽提升图像的亮度。

DB=DA+50具体实现代码如下所⽰。

由于图像的灰度值位于0⾄255区间之内,所以需要对灰度值进⾏溢出判断。

# -*- coding: utf-8 -*-# By:Eastmountimport cv2import numpy as npimport matplotlib.pyplot as plt#读取原始图像img = cv2.imread('luo.png')#图像灰度转换grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#获取图像⾼度和宽度height = grayImage.shape[0]width = grayImage.shape[1]#创建⼀幅图像result = np.zeros((height, width), np.uint8)#图像灰度上移变换 DB=DA+50for i in range(height):for j in range(width):if (int(grayImage[i,j]+50) > 255):gray = 255else:gray = int(grayImage[i,j]+50)result[i,j] = np.uint8(gray)#显⽰图像cv2.imshow("Gray Image", grayImage)cv2.imshow("Result", result)#等待显⽰cv2.waitKey(0)cv2.destroyAllWindows()其输出结果如图12-2所⽰,图像的所有灰度值上移50,图像变得更⽩了。

matlab 灰度算法 -回复

matlab 灰度算法 -回复

matlab 灰度算法-回复【MATLAB灰度算法】灰度算法是一种将彩色图像转化为黑白图像的方法,在计算机视觉和图像处理领域被广泛使用。

MATLAB是一种强大的数学计算工具,它提供了丰富的图像处理函数和工具箱,可用于实现灰度算法。

本文将逐步回答如何使用MATLAB实现灰度算法,并介绍一些常用的灰度算法技术。

# 第一步:图像读取与显示在MATLAB中,可以使用`imread`函数读取图像,使用`imshow`函数显示图像。

我们首先需要读取一张彩色图像,并将其显示出来。

matlab读取彩色图像rgbImage = imread('image.jpg');显示彩色图像imshow(rgbImage);title('Original Image');# 第二步:转化为灰度图像灰度图像是一种每个像素只有一个灰度值(亮度值)的图像。

在MATLAB中,可以使用`rgb2gray`函数将彩色图像转化为灰度图像。

matlab将彩色图像转化为灰度图像grayImage = rgb2gray(rgbImage);显示灰度图像imshow(grayImage);title('Grayscale Image');# 第三步:灰度化算法选择灰度化算法决定了如何将彩色图像中的RGB信息转化为灰度图像中的灰度值。

常用的灰度化算法有平均值法、加权平均法和分量最大法等。

下面分别介绍这些算法并给出MATLAB代码实现。

平均值法平均值法是最简单的灰度化算法之一,它将彩色图像的RGB分量的平均值作为灰度值。

具体实现如下:matlab平均值法灰度化averageGrayImage = (rgbImage(:, :, 1) + rgbImage(:, :, 2) + rgbImage(:, :, 3)) / 3;显示平均值法灰度图像imshow(averageGrayImage);title('Average Grayscale Image');加权平均法加权平均法是一种考虑了RGB分量的亮度影响的灰度化算法。

灰度变换函数

灰度变换函数

灰度变换函数灰度变换函数是一种常见的图像处理方法,通过对图像的像素值进行线性变换,可以实现图像的亮度调整和对比度增强等效果。

下面是一个全面详细的灰度变换函数。

```pythondef gray_transform(img, a, b, c, d):"""灰度变换函数:param img: 输入图像,格式为numpy数组:param a: 线性变换的斜率,浮点数:param b: 线性变换的截距,浮点数:param c: 灰度级范围的下限,整数:param d: 灰度级范围的上限,整数:return: 输出图像,格式为numpy数组"""# 判断输入参数是否合法if not isinstance(img, np.ndarray) or len(img.shape) != 2:raise ValueError("输入图像必须是二维numpy数组")if not isinstance(a, float) or not isinstance(b, float):raise ValueError("线性变换参数必须是浮点数")if not isinstance(c, int) or not isinstance(d, int):raise ValueError("灰度级范围必须是整数")if c < 0 or d > 255:raise ValueError("灰度级范围必须在0-255之间")# 对输入图像进行线性变换,并将结果转化为整型数据类型out_img = np.round(a * img + b).astype(np.uint8)# 对输出图像进行灰度级范围限制,将超出范围的像素值裁剪到范围内out_img = np.clip(out_img, c, d)return out_img```上面的函数中,我们使用了numpy库来处理图像数据。

各灰度级的变换函数值sk公式

各灰度级的变换函数值sk公式

各灰度级的变换函数值sk公式在数字图像处理中,图像的灰度级是指像素点的亮度强度的级别,通常以0-255的数字表示。

图像灰度级的变换函数值sk是指将原始图像中的一个灰度级映射到另一个灰度级时,所需要的函数值。

灰度级变换是数字图像处理中常用的操作之一,其主要作用是改变图像的亮度、对比度、色彩等特征,从而使图像更加清晰、鲜艳、易于识别和处理。

不同的图像灰度级变换函数可以产生不同的效果,因此在实际应用中需要根据具体的需求选择适当的函数。

下面我们将详细介绍各灰度级的变换函数值sk公式,以及它们的作用和应用场景:1. 线性变换函数线性变换函数是最常用的一种灰度级变换函数,其公式为:s_k = [(L-1)/(H-L)]*(r_k-L)其中,L和H分别表示原始图像灰度级的最小值和最大值,r_k表示原始图像的像素值,s_k表示变换后的像素值。

线性变换函数的作用是增加或减小图像的对比度,使图像更加清晰、鲜明。

它常用于图像增强、亮度调整和对比度调整等操作中。

2. 对数变换函数对数变换函数的公式为:s_k = c * log(1+r_k)其中,c为常数,r_k和s_k的含义同上。

对数变换函数的主要作用是扩展暗部细节,减少高光区域的亮度,从而达到良好的曝光平衡。

它常用于夜间拍摄或者对内部细节有特殊需求的图像处理中。

3. 幂律变换函数幂律变换函数的公式为:s_k = c * r_k^γ其中,c为常数,γ为幂律指数,r_k和s_k的含义同上。

幂律变换函数的主要作用是突出图像细节、增加图像对比度和色彩饱和度,使图像更加明亮鲜艳。

它适用于各种类型的图像处理,尤其是自然景观、建筑和人像等领域。

4. 反转变换函数反转变换函数的公式为:s_k = L-1-r_k其中,L为原始图像的灰度级最大值,r_k和s_k的含义同上。

反转变换函数的作用是颠倒图像亮度的分布,使原来的暗区变为明区,明区变为暗区,从而产生强烈的视觉反差。

它常用于黑白摄影、动画和游戏制作等领域。

灰度反转函数

灰度反转函数

灰度反转函数灰度反转函数介绍灰度反转是一种图像处理方法,它将图像中的亮度值取反,使得原来较暗的区域变为较亮的区域,原来较亮的区域变为较暗的区域。

这种处理方法通常用于增强图像的对比度和清晰度。

实现思路灰度反转函数可以通过以下步骤实现:1.读取图像文件并将其转换为灰度图像。

2.对每个像素点进行灰度值反转计算。

3.将计算后的结果保存为新的图像文件。

代码实现下面是一个Python实现灰度反转函数的示例代码:```pythonimport cv2def invert_grayscale(image_path, output_path):# 读取图像文件并将其转换为灰度图像image = cv2.imread(image_path)gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 对每个像素点进行灰度值反转计算inverted_image = 255 - gray_image# 将计算后的结果保存为新的图像文件cv2.imwrite(output_path, inverted_image)```使用示例下面是一个使用示例:```pythonimage_path = 'example.jpg'output_path = 'inverted_example.jpg'invert_grayscale(image_path, output_path)```注意事项在使用该函数时,需要注意以下几点:1.输入和输出的图像文件路径必须存在。

2.输入图像文件必须是彩色图像,否则需要先将其转换为灰度图像。

3.输出图像文件的格式可以是任何OpenCV支持的格式,例如JPEG、PNG等。

4.该函数只能对灰度值进行反转,如果需要对颜色进行反转,则需要使用其他方法。

总结灰度反转函数是一种简单但有效的图像处理方法,它可以增强图像的对比度和清晰度。

(7)图像处理-图像的线性灰度变换

图像的线性灰度变换线性灰度变换的两种方法:(1)全图变换(2)两端截取的分段变换(1)全图变换变换公式为g(x)=f(x)*c+R其中f(x)为图像的输入灰度,g(x)为图像的输出灰度若设输入图像的灰度范围为(fmin,fmax),输出的灰度范围为(gmin,gmax)则变换公式为g(x)=(gmax-gmin)/(fmax-fmin)*(f(x)-fmin)+gmin一般来说为灰度拉伸,即gmin<fmin,gmax>fmax,对于一副一般的正常灰度图像fmin=0,fmax=255。

以下为实现代码:void CDipView::OnGraystrectch(){CDipDoc*pDoc=GetDocument();if(!(pDoc->m_pBmi&&pDoc->m_pBmData)){MessageBox(_T("No Object"),MB_OK);}else{int flag=0;//是否灰度图标记int i_top=pDoc->m_pBmi->bmiHeader.biHeight;int j_top=pDoc->m_pBmi->bmiHeader.biWidth*3;int w=pDoc->m_pBmi->bmiHeader.biSizeImage/i_top;double gmin=pDoc->m_pBmData[0],gmax=pDoc->m_pBmData[0];for(int i=0;i<i_top;i++){for(int j=0;j<j_top;j+=3){if(!((pDoc->m_pBmData[i*w+j]==pDoc->m_pBmData[i*w+j+1])&&(pDoc->m_pBmData[i*w+j+1]==pDoc->m_pBmData[i*w+j +2]))){flag=1;break;}}if(flag){break;}}//判断是否灰度图if(flag){MessageBox(_T("不是灰度图"),MB_OK);m_type=0;}else{for(int i=0;i<i_top;i++){for(int j=0;j<j_top;j+=3){gmin=min(gmin,pDoc->m_pBmData[i*w+j]);gmax=max(gmax,pDoc->m_pBmData[i*w+j]);}}for(int i=0;i<i_top;i++){for(int j=0;j<j_top;j+=3){pDoc->m_pBmData[i*w+j]=(byte)(255.0/(gmax-gmin)*(pDoc->m_pBmData[i*w+j]-gmin));pDoc->m_pBmData[i*w+j+1]=(byte)(255.0/(gmax-gmin)*(pDoc->m_pBmData[i*w+j+1]-gmin));pDoc->m_pBmData[i*w+j+2]=(byte)(255.0/(gmax-gmin)*(pDoc->m_pBmData[i*w+j+2]-gmin));}}Invalidate();}}// TODO: 在此添加命令处理程序代码}直方图的变化(2)两端截取的灰度拉伸很多时候图片的大部分像素的灰度级在(fmin,fmax)内分布,少部分分布在小于fmin和大于fmax的区间内,此时用下式进行变换:g(x)=gmin f(x)<fming(x)= (gmax-gmin)/(fmax-fmin)*(f(x)-fmin)+gmin fmin<=f(x)<=fmaxg(x)=gmax f(x)>fmax缺点:会造成小部分信息的丢失具体实现代码如下:void CDipView::OnAutostrecth(){CDipDoc*pDoc=GetDocument();if(!(pDoc->m_pBmi&&pDoc->m_pBmData)){MessageBox(_T("No Object"),MB_OK);}else{int flag=0;//是否灰度图标记int i_top=pDoc->m_pBmi->bmiHeader.biHeight;int j_top=pDoc->m_pBmi->bmiHeader.biWidth*3;int w=pDoc->m_pBmi->bmiHeader.biSizeImage/i_top;double gmin,gmax;for(int i=0;i<i_top;i++){for(int j=0;j<j_top;j+=3){if(!((pDoc->m_pBmData[i*w+j]==pDoc->m_pBmData[i*w+j+1])&&(pDoc->m_pBmData[i*w+j+1]==pDoc->m_pBmData[i*w+j +2]))){flag=1;break;}}if(flag)break;}//判断是否灰度图if(flag){MessageBox(_T("不是灰度图"),MB_OK);m_type=0;}else{long y[256];///全赋初值为零///for(int i=0;i<256;i++){y[i]=0;}////灰度分布统计////for(int i=0;i<i_top;i++){for(int j=0;j<j_top;j+=3){y[(pDoc->m_pBmData[i*w+j])]++;}}for(int i=0;i<256;i++){if(y[i]>300){gmin=i;break;}}for(int i=255;i>=0;i--){if(y[i]>300){gmax=i;break;}}for(int i=0;i<i_top;i++){for(int j=0;j<j_top;j+=3){if(pDoc->m_pBmData[i*w+j]<=gmin){pDoc->m_pBmData[i*w+j]=gmin;pDoc->m_pBmData[i*w+j+1]=gmin;pDoc->m_pBmData[i*w+j+2]=gmin;}if(pDoc->m_pBmData[i*w+j]>=gmax){pDoc->m_pBmData[i*w+j]=gmax;pDoc->m_pBmData[i*w+j+1]=gmax;pDoc->m_pBmData[i*w+j+2]=gmax;}pDoc->m_pBmData[i*w+j]=(byte)min(255,(255.0/(gmax-gmin)*(pDoc->m_pBmData[i*w+j]-gmin)));pDoc->m_pBmData[i*w+j+1]=(byte)min(255,(255.0/(gmax-gmin)*(pDoc->m_pBmData[i*w+j+1]-gmin)));pDoc->m_pBmData[i*w+j+2]=(byte)min(255,(255.0/(gmax-gmin)*(pDoc->m_pBmData[i*w+j+2]-gmin)));}}Invalidate();}}}直方图变化。

灰度变换算法原理

灰度变换算法原理
灰度变换算法是一种像素值映射的算法,它可以通过对图像的像素值进行线性或非线性变换来改变图像的对比度、亮度、色调等特征,以达到增强图像的目的。

具体来说,灰度变换算法的原理如下:
1. 像素值的定义:对于灰度图像,每个像素的取值范围在0-255之间,其中0表示黑色,255表示白色,其他值则表示不同的灰度级别。

2. 灰度变换函数的选择:灰度变换函数(也称为灰度映射函数)可以是线性函数、非线性函数、对数函数等。

根据需要调整图像的对比度、亮度等特征,可以选择不同的灰度变换函数。

3. 灰度变换的实现:将灰度变换函数应用到图像的每个像素上,计算出新的像素值,从而得到一张新的图像。

这样的变换可以在空间域或频域中进行。

总之,灰度变换算法通过对图像的像素值进行变换,可以有效地增强图像的质量和特征,提高图像信息的可读性和可用性。

opencv转换灰度算法

opencv转换灰度算法OpenCV 是一个功能强大的计算机视觉库,它可以通过各种算法来处理图像和视频。

其中最基本的算法就是灰度转换。

灰度转换是将一幅彩色图像转换为灰度图像的过程,其目的是使图像更加简单,并且可以减少计算量。

下面我们来了解一下 OpenCV 中的灰度转换算法。

OpenCV 中的灰度转换算法主要有两种:平均值法和加权平均值法。

平均值法是将原图中每个像素的 RGB 值取平均值,然后得到一幅灰度图像。

而加权平均值法则是将红、绿、蓝三种颜色的权值乘以对应像素点的值,再相加得到一个灰度值。

平均值法实现灰度转换的代码如下:```pythonimport cv2# 读取一张彩色图像img = cv2.imread('image.png')# 平均值法转换为灰度图像gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 显示灰度图像cv2.imshow('gray', gray)cv2.waitKey(0)```在加权平均值法中,我们可以自定义颜色的权值,以达到不同的灰度效果。

下面是加权平均值法实现灰度转换的代码:```pythonimport cv2# 读取一张彩色图像img = cv2.imread('image.png')# 定义颜色的权值b = 0.114g = 0.587r = 0.299# 加权平均值法转换为灰度图像gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)rows, cols = gray.shapefor i in range(rows):for j in range(cols):gray[i, j] = b * img[i, j, 0] + g * img[i, j, 1] + r * img[i, j, 2]# 显示灰度图像cv2.imshow('gray', gray)cv2.waitKey(0)```从效果来看,加权平均值法比平均值法更加逼真,但是计算量较大。

灰度图像直方图均衡化变换函数算法.docx

灰度图像直方图均衡化变换函数算法方案一:1) 灰度图像直方图均衡化算法步骤:1、列出原始图像和变换后图像的灰度级I: j = 0, 1, -L-1,其中L是灰度级的个数;2、统计原始图像个灰度级的像素个数Ni;3、计算原始图像直方图:p(i)=Ni/N,N为原始图像像素总数;4、计算累计直方图P j =》p(k), k二0, l・・・j;5、利用灰度变换函数计算变换后的灰度值,并四舍五入:j=INT[(L-l)Pj+0. 5];6、确定灰度变换关系i->j,据此将原图像的灰度值f(m, n) = i修正为g(m, n)=j;7、统计变换后各灰度级的像素个数Nj;8、计算变换后图像的直方图p(j)二Nj/N;2) m文件I=imread('football.jpg 1 );1=1(:, :,1);[m z n]=size (I);num=m*n;pre_mat=zeros(1,256);aft_mat=zeros(1,256);for i=l:mfor j=l:npre_mat(I(i z j)+1)= pre_mat(I(i z j)+1)+1;endendaft_mat (I) =aft_mat (I) /num;for k=2:256s (k) =pre_mat (k) /num;aft_mat (k) =aft_mat (k-l) + s (k);endM=zeros(叫n);aft_mat=aft_mat*255;for i=l:mfor j=l:nM(i z j)=aft_mat(I (i,j)+1);endendJ=uint8(M)subplot (3,2f l)imshow(I);1.原始图像T;subplot (3,2,2) imhist(I);title(*2.原始图像直方图'); subplot(3,2^3) imshow(J);title (! 3.均衡化图像'); subplot (3,2,4) imhist(J);title 「4 •均衡化图像直方图*);A=histeq(I); subplot(3,2^5) imshow(A);title(*5.系统均衡化图像T ; subplot (3,2,6) imhist(A);title 「6・系统均衡化图像直方图1)经实际验证:该方案对黑白图片均衡化处理有较好的效果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档