广工数字图像处理课程设计直方图均衡化源文件(vc++和MATLAB)(2)

2020-06-07 14:27

#endif

//DBI.H:header file //

//////////////////////// //CDIB class

class CDIB:public CObject{

public: int m_nImType; void close(); void UpdateData(); void InvalidateData(); BYTE *m_pdata; BYTE *m_pR,*m_pG,*m_pB; void ShowDIB(CDC *,int,int,int,int,BYTE*,BITMAPINFO*); bool m_bLoaded; CDIB(); virtual ~CDIB(); BITMAPINFO* m_pBMI; //BITMAPINFO pointer BYTE* m_pDIBData; //DIB data pointer BYTE* m_pDumpDIBData; BITMAPFILEHEADER bfh; BITMAPINFOHEADER bih; CPalette *m_pPalette;

DWORD dataBytes; bool SaveFile(LPCTSTR lpszFileName); virtual bool LoadFromFile(LPCTSTR lpszFileName); int GetDIBWidth() { return m_pBMI->bmiHeader.biWidth; } int GetDIBHeight() { return m_pBMI->bmiHeader.biHeight; } };

////////////////////////

#endif // !defined (__DIB_H__)

MATLAB程序;

RGB = imread('1.png'); % 读取彩色图 subplot(131); imshow(RGB); title('彩色图');

I=rgb2gray(RGB); % 将彩色图转化为灰度图 subplot(132); imshow(I); title('灰度图');

[R, C] = size(I);

% 统计每个像素值出现次数 cnt = zeros(1, 256); for i = 1 : R for j = 1 : C

cnt(1, I(i, j) + 1) = cnt(1, I(i, j) + 1) + 1; end end

f = zeros(1, 256);

f = double(f); cnt = double(cnt);

% 统计每个像素值出现的概率, 得到概率直方图 for i = 1 : 256

f(1, i) = cnt(1, i) / (R * C); end

% 求累计概率,得到累计直方图 for i = 2 : 256

f(1, i) = f(1, i - 1) + f(1, i); end

% 用f数组实现像素值[0, 255]的映射。 for i = 1 : 256

f(1, i) = f(1, i) * 255; end

% 完成每个像素点的映射

I = double(I); for i = 1 : R for j = 1 : C

I(i, j) = f(1, I(i, j) + 1); end end % 输出

I = uint8(I); subplot(133); imshow(I);

title('直方图均衡化');


广工数字图像处理课程设计直方图均衡化源文件(vc++和MATLAB)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:笔记本各品牌质量大体排行

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: