用Matlab实现简易图片中的星星计数及位置标记
By C.Z.H --814484233@http://www.doczj.com/doc/0ad22625195f312b3069a5c7.html
在天文观测中,统计出星星的数量以及标记出位置对于研究不同时刻同一角度观测有着重要的意义,可以用来分析不同时刻行星的位移变化而从推测行星的运动趋势。而Matlab 有着强大的矩阵处理功能,而图片则由数据矩阵记录图片像素信息。利用Maltab结合图像处理和识别技术可自动化实现星星计数和标记等简单功能。Matlab中支持真彩色图像、索引图像、灰度图像、二值图像4种不同的图像类型,不同类型的图像在Matlab中存储形式不同,部分图像间是可以进行转化的。
一、在灰度图中利用极大值方法计数和标记
目前用数码相机获取图像格式为BMP或JPG的真彩图,真彩图像是既含亮度信息又含色彩信息的图像,一幅 m*n大小的真彩图像要由 m*n*3元素类型为字节的矩阵表示,其中数字3指的是像素中的RGB三层分量。而灰度图像是只含亮度信息不含色彩信息的图像,一副灰度图像可以由m*n矩阵来表示。将真彩色图像转换为灰度图像,一方面可以去掉一些无用的信息;另一方面大幅度减少图像的数据量,减轻后期处理的工作量,因此灰度处化处理是图像处理中很重要的一步。把真彩图转化成灰度图后,进行滤波降噪。我们近似的认为每一个星星的亮度都可以看成高斯波包或者类似高斯形状的波包。此时,就可以利用寻找极大值法,标记和统计出星星的位置和数量。其原理为:一维的情况很容易找出一数列的极大值,对于二维情况,我们只要使二维图片的x方向和y方向同时满足极大值的情况就是我们要找的二维极大值,也就是我们要找的星星,图1通过程序计算,统计出72颗星。范例Matlab 程序见附录1。