PAGE 1
PAGE 8
数字图象处理技术报告
小组成员:陈龙斌(组长),王颖波,王育峰,吴震,洪泉
二. 小组完成的工作:
每人各自完成FFT.
陈龙斌: Hough变换(直线检测),伪彩色增强,二值化,微分运算,Huffman编码;提供读写文件和各成员的位图读写接口,完成原型系统的建立。
王颖波: DCT变换压缩、复原;图象平滑、图象锐化、中值滤波、直方图均衡、灰度级变换;边缘检测(Kirsch,Sobel);任意模板的输入、应用。
王育峰 几何变换(放大、缩小、倾斜、鼓形变换)
吴震 Walsh正反变换,DCT正反变换
洪泉 粗化、细化、膨胀、收缩。
三.实现环境:Pentium II, WindowsNT 4.0, Visual C++ 5.0, 24bit真彩
四.小组成员的技术报告:
陈龙斌:
■为小组成员提供的图象处理通用类CGraph.
构造:可以根据磁盘上的文件构造类对象,也可以根据给定的大小创建类对象。
操作:支持对位图的直接读取、显示。
要求:调色板的缺省设置为灰度图,即所有的图必须是灰度图。
class CGraph
{
public:
CGraph(LPCTSTR lpszPathName);//根据文件名创建类对象
CGraph(int,int,BYTE*);//根据给定的大小和数据创建类对象
CGraph(int,int,double*);//根据给定的大小创建类对象
CGraph(int,int);// 根据给定的大小创建类对象
Void ColorInhence()//;伪彩色增强
Void Show(int px,int py,CDC* pDC);//在(x,y)位置显示位图
BYTE Getxy(int,int);//读取位图(I,j)处的灰度值
BOOL Setxy(int,int,double);// 设置位图(I,j)处的灰度值
BYTE* GetByteData();//取得位图数据
int GetHeight(){return bm.bmHeight;}//返回位图的高
int GetWidth(){return bm.bmWidth;}//返回位图的宽
};
■Hough变换
原理:原空间的一点(x,y)对应于变换空间中的一条曲线
xicosθ+yisinθ=r
对原图象的所有点进行变换,得到变换空间一组曲线。这组曲线的交点处(或曲线经过密集处),不妨设为(r, θ). (r, θ)对应于原空间的一条直线。可认为此直线即检测出的直线。为了判定曲线的交点或密集处,设置了门限T.T的大小可以根据实际的图象进行变化。
实现:使用一个类,读入原图,输出变换空间的描述图。
class CHough
{public:
CGraph* inputgraph;;//输入图象
CGraph* outputgraph;//输出图象
void hough();//霍夫变换
CHough(CGraph* inputgraph, CGraph* outputgraph, intthr=10); //thr为门限值,缺省为10。
~CHough();
privated:
。。。。。。
};
■伪彩色增强
分别对RGB三色进行如下的变换,输出到真彩色显示器即可。
绿色值(G)红色值(R)
绿色值(G)
红色值(R)
灰度值x灰度值x
灰度值x
灰度值x
兰色值(B)
兰色值(B)
灰度值x
灰度值x
■Huffman编码:
运用了两个类:Cbits和ChuffTree
类Cbits是用来完成位的操作。提供读写文件的接口,使程序能够以位为单位对文件进行存储、读取。
class CBits {
public:
CBits();//构造函数
DWORD GetCount();//返回位的数目
void Initial();//初始化
int GetABit();//返回当前位
DWORD GetSize();//返回最大位数
BOOL SetABit(DWORD,int);//存入一个位
void SaveFile(LPCTSTR );//存盘
void ReadFile(LPCTSTR );//读盘
DWORD AddBit(int );//添加一个位
virtual ~CBits();
protected:
。。。。。。
}
类CHuffTree用于将给定的数组进行编码,并存入位类中。它的成员函数CreateTree用于根据输入的各灰度的统计数目构造Huffman树。成员函数Translate用于将参数中的灰度值转换成二进制码。
class CHuffTree
{
public
原创力文档

文档评论(0)