简单高效的图片降噪方法
来源:互联网 发布:怎么植入php一句话木马 编辑:程序博客网 时间:2024/05/03 03:23
图片降噪在很多场合下都要使用到,譬如我遇到的医疗产品。
计算机通过USB口从医疗产品中获取图像,但由于硬件的原因,清晰度一直不够,有很多噪点。
降噪不可避免。降噪算法就是主要问题了。
下面介绍一种简单高效的降噪方法。
由于硬件拍照造成的噪点是随机的,要去除这些随机噪点的方法,其实很简单,多拍几张,5张、10张。
对现在的拍照设备来说,拍个10张图片,也花费不了多长时间,都在毫秒级别。
然后对这几张图片进行叠加,这样的话,那些随机噪点就会被去除掉。原理我就不说了。可以参考随机信号理论。
而且效率也很高,都是在内存中操作。
下面给出Delphi叠加图片函数:
procedure OverlyBmp(const bmp: TArray<TBitmap>; bmpResult: TBitmap);var III, JJJ, KKK : Integer; P : TArray<PRGBTriple>; Q : PRGBTriple; intR, intG, intB: Integer; intLen : Integer;begin intLen := Length(bmp); SetLength(P, intLen); for III := 0 to bmp[0].Height - 1 do begin for KKK := 0 to intLen - 1 do begin P[KKK] := bmp[KKK].ScanLine[III]; end; Q := bmpResult.ScanLine[III]; for JJJ := 0 to bmp[0].Width - 1 do begin intR := 0; intG := 0; intB := 0; for KKK := 0 to intLen - 1 do begin intR := intR + P[KKK]^.rgbtRed; intG := intG + P[KKK]^.rgbtGreen; intB := intB + P[KKK]^.rgbtBlue; end; intR := Byte(intR div intLen); intG := Byte(intG div intLen); intB := Byte(intB div intLen); Q^.rgbtRed := intR; Q^.rgbtGreen := intG; Q^.rgbtBlue := intB; for KKK := 0 to intLen - 1 do begin Inc(P[KKK]); end; Inc(Q); end; end; bmpResult.HandleType := bmDDB;end;
上面的函数,要求图片是BMP位图,24位。图片大小一致。
其它颜色位数的可自行改写该函数。
我称这种降噪方法为叠加降噪。
1 0
- 简单高效的图片降噪方法
- Android一种高效压缩图片的方法
- Android一种高效压缩图片的方法
- 简单高效的开Thread的方法
- 一个简单高效的equalsHandlesNulls方法
- 简单高效的代码部署方法
- php生成随机数,简单高效的方法
- 简单高效的JS 幻灯片图片播放特效
- C# 的高效方法取得图片的像素区数据
- 上传图片的简单方法
- Android高效压缩图片不失真的方法总结
- 让工作变得高效而简单的10种方法
- 让工作变得高效而简单的10种方法
- 让工作变得高效而简单的10种方法
- 让工作变得简单而高效的10种方法
- Android Studio 导.so文件简单、高效的方法
- pdf转换成word格式的高效简单方法
- APP最简单高效的营销方法:营销自动化智能化
- Linux内核设计与实现-进程管理与进程调度
- java并发编程,Thread类的使用
- 想要学习Linux技术,先好好的读一本Linux书籍吧
- 在前端开发中值得推荐的常用工具
- Linux中sed命令介绍
- 简单高效的图片降噪方法
- vs2012 格式化代码和快速注释快捷键
- 2017-1-15
- Qt for Mac 设置软件开机自启动
- Python 栈和队列
- SKStoreProductViewController中的坑
- android webView工具类
- C++易错:(四)&&与&
- PyQt5的学习之路(二)