第三次作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、叙述图像文件的主要格式;叙述空间域图像锐化的目的和主要方法
1、图像文件的主要格式有8种,如下所示:
○1BMP格式: Windows系统下的标准位图格式,未经过压缩,一般图像文件会比较大。在很多软件中被广泛应用。
○2JPEG格式:也是应用最广泛的图片格式之一,它采用一种特殊的有损压缩算法,将不易被人眼察觉的图像颜色删除,从而达到较大的压缩比(可达到2:1甚至40:1),因为JPEG 格式的文件尺寸较小,下载速度快,所以是互联网上最广泛使用的格式。
○3GIF格式:最大的特点是不仅可以是一张静止的图片,也可以是动画,并且支持透明背景图像,适用于多种操作系统,“体型”很小,网上很多小动画都是GIF格式。但是其色域不太广,只支持256种颜色。
○4PSD格式:Photoshop的专用图像格式,可以保存图片的完整信息,图层、文字都可以被保存,图像文件一般较大。
○5PNG格式:与JPG格式类似,网页中有很多图片都是这种格式,压缩比高于GIF,支持图像透明,可以利用Alpha通道调节图像的透明度,是网页三剑客之一Fireworks的源文件。
○6TIFF格式:它的特点是图像格式复杂、存贮信息多,在Mac中广泛使用的图像格式,正因为它存储的图像细微层次的信息非常多,图像的质量也得以提高,故而非常有利于原稿的复制。很多地方将TIFF格式用于印刷。
○7TGA格式:TGA的结构比较简单,属于一种图形、图像数据的通用格式,在多媒体领域有着很大影响,在做影视编辑时经常使用,例如3DS MAX输出TGA图片序列导入到AE里面进行后期编辑。
○8EPS格式:苹果Mac机的用户则用得较多。它是用PostScript语言描述的一种ASCII码文件格式,主要用于排版、打印等输出工作。
2、空间域图像锐化的目的
一是增强图像的边缘,使模糊的图像变得清晰起来;这种模糊不是由于错误操作,就是特殊图像获取方法的固有影响。二是提取目标物体的边界,对图像进行分割,便于目标区域的识别等。通过图像的锐化,使得图像的质量有所改变,产生更适合人观察和识别的图像。
空间域图像锐化的主要方法
一是增强图像的边缘,使模糊的图像变得清晰起来;这种模糊不是由于错误操作,就是特殊图像获取方法的固有影响。二是提取目标物体的边界,对图像进行分割,便于目标区域的识别等。通过图像的锐化,使得图像的质量有所改变,产生更适合人观察和识别的图像。
所以有以下三种锐化方法:梯度算子、其他锐化算子、拉普拉斯算子。
○1梯度算子
图像的边缘最直观的表现就是边缘两侧的灰度值相差比较大,在微积分中我们学过梯度的概念梯度是一个列向量,可表示为:
G[f(x,y)]=[∂f∂x
∂f
∂y ]=[G
x
G
y
]T=[∂f
∂x
∂f
∂y
]T
而某点处梯度的模很好的反应了该点两侧的变化大小。所以,梯度值很大的点也就代表了图像的边缘,而在实际计算中,为了降低运算量,一般用一下两种方法来代替模运算
由于数字图像处理中处理的是数字离散信号,所以我们用差分来等同于连续信号中的微分运算。典型的梯度运算有
而另一种称为Roberts梯度的差分运算可由下来表示
实现上述方法的代码
import cv
def Sharp(image,flag1=0,flag2=0):
w = image.width
h = image.height
size = (w,h)
iSharp = cv.CreateImage(size,8,1)
for i in range(h-1):
for j in range(w-1):
if flag2 == 0:
x = abs(image[i,j+1]-image[i,j])
y = abs(image[i+1,j]-image[i,j])
else:
x = abs(image[i+1,j+1]-image[i,j])
y = abs(image[i+1,j]-image[i,j+1])
if flag1 == 0:
iSharp[i,j] = max(x,y)
else:
iSharp[i,j] = x+y
return iSharp
image = cv.LoadImage('lena.jpg',0)
iMaxSharp = Sharp(image)
iAddSharp = Sharp(image,1)
iRMaxSharp = Sharp(image,0,1)
iRAddSharp = Sharp(image,1,1)
cv.ShowImage('iMaxSharp',iMaxSharp)
cv.ShowImage('image',image)
cv.ShowImage('iAddSharp',iAddSharp)
cv.ShowImage('iRAddSharp',iRAddSharp)
cv.ShowImage('iRMaxSharp',iRMaxSharp)
cv.WaitKey(0)
○2其他锐化算子
利用梯度和差分原理组成以下锐化算子:
Sobel算子
Prewitt算子
Isotropic算子
实现该算子算法的代码:
import cv
def SuanSharp(image,arrayX,arrayY):
w = image.width
h = image.height
size = (w,h)
iSuanSharp = cv.CreateImage(size,8,1)
tmpX = [0]*9
tmpY = [0]*9
for i in range(1,h-1):
for j in range(1,w-1):
for k in range(3):
for l in range(3):
tmpX[k*3+l] = image[i-1+k,j-1+l]*arrayX[k*3+l] tmpX[k*3+l] = image[i-1+k,j-1+l]*arrayX[k*3+l] iSuanSharp[i,j] = sum(tmpX)+sum(tmpY)
return iSuanSharp