用Visual C++实现图像平滑怎么读取BMP格式图像?
实现图像的预处理,二值化等方法?平滑,又叫降噪。。我自学的课程有些地方不是很懂,来请教各位牛人。。。...
实现图像的预处理,二值化等方法?
平滑,又叫降噪。。我自学的课程有些地方不是很懂,来请教各位牛人。。。 展开
平滑,又叫降噪。。我自学的课程有些地方不是很懂,来请教各位牛人。。。 展开
3个回答
展开全部
MFC的话可以用CBITMAP类来处理bmp,读取的话用win32 api loadimage();
平滑不理解,平滑移动?简单点设置个后台缓冲,俗称double buffer
二值化的话先把彩色RGB的转化为黑白,比较常用的是转成亮度 Luminance=0.3 R + 0.59 G + 0.11 B,亮度的范围是0-255,把RBG都设置成亮度值,显示出来的就是黑白的了,然后设置个shreshold,比如是128,然后把亮度大于128都都设成255,小于128的都设成0
降噪的算法很多,主要有spatial filer,也可以用frequency filer,中文我不知道怎么翻,前一个不做频域变换的,后一个做了频域变换再处理。
spatial filer就是个axa的矩阵,然后对每个像素过滤。
比如
|1 2 1|
|2 4 2| X 1/16
|1 2 1|
frequency filter是做个过滤掉频域上高频的部分。
一般把一块像素区,8x8或是16x16 做2D DCT,做zigzag,然后过滤掉高频,窗口要看你的要求,然后做IDCT.出来就是你要的东西了。
平滑不理解,平滑移动?简单点设置个后台缓冲,俗称double buffer
二值化的话先把彩色RGB的转化为黑白,比较常用的是转成亮度 Luminance=0.3 R + 0.59 G + 0.11 B,亮度的范围是0-255,把RBG都设置成亮度值,显示出来的就是黑白的了,然后设置个shreshold,比如是128,然后把亮度大于128都都设成255,小于128的都设成0
降噪的算法很多,主要有spatial filer,也可以用frequency filer,中文我不知道怎么翻,前一个不做频域变换的,后一个做了频域变换再处理。
spatial filer就是个axa的矩阵,然后对每个像素过滤。
比如
|1 2 1|
|2 4 2| X 1/16
|1 2 1|
frequency filter是做个过滤掉频域上高频的部分。
一般把一块像素区,8x8或是16x16 做2D DCT,做zigzag,然后过滤掉高频,窗口要看你的要求,然后做IDCT.出来就是你要的东西了。
展开全部
平滑一般用中值滤波效果比较理想,而且你模板越大,效果越好!
二值化方法的选用可以根据实际情况来确定算法:
如目标图像的直方图呈双峰状,可以考虑用直方图法二值化,如果边缘信息很丰富(图像边缘很突出)那么可以选用基于边缘提取的二值化方法(因为二值化的阈值很明显已经在边缘上了,你只要知道边缘的位置,那么相应的阈值也就出来带来)。还有很多其他的方法,我这就不罗列了
二值化方法的选用可以根据实际情况来确定算法:
如目标图像的直方图呈双峰状,可以考虑用直方图法二值化,如果边缘信息很丰富(图像边缘很突出)那么可以选用基于边缘提取的二值化方法(因为二值化的阈值很明显已经在边缘上了,你只要知道边缘的位置,那么相应的阈值也就出来带来)。还有很多其他的方法,我这就不罗列了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关注
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询