第三次作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档