标度差值图像
2014-12-08 19:47
330 查看
标度差值图像主要应用在两张图像相减的时候,在实践中,大多数图像都是有8码显示,因此像素值在0到255之间,因此在差值图像中,像素值的取值为-255到255之间,因此在显示这一结果时需要对图像作标度。
下图是分别用两种方法标定后的结果,我首先是分别用方差为1 和方差10的高斯算子对图像进行滤波,然后相减得到DoG图像,由于存在负值,所以需要进行标定处理。从下图中我们可以发现,方法二的效果要比方法一好,轮空更加的明显,因为它覆盖了整个0到255的范围。
源代码下载地址
方法一:
对每一个像素值再加上255,然后除以2。该方法无法保证像素的取值可以覆盖0到255的全部8比特范围,但是所有的像素一定在这一范围。另外,在除以2过程中固有的截尾误差通常将导致精确度的损失。虽然有很多的不足,但是该非常的简单方便。方法二:
该方法弥补的方法一的缺点,它可以得到更高的精确度并使像素取值覆盖整个8比特的范围。我们首先提取最小值,并把它的负值加到所有的差值图像的像素中(如果最小值是-a(a>0),则加上a;如果最小值是a,则减去a;通过该操作后,差值图像中最小的值就为0了)。之后,每一个像素乘以255/Max,其中Max为上一步操作之后图像的中最大像素值,这样就将所有的像素标定到0到255的范围内。function result = scaleImg2(source) % scale the image(let the value between 0 and 255) % source - the image should be scaled with double data type % minVal = min(source(:)); source = source - minVal; maxVal = max(source(:)); result = uint8(source*255/maxVal); end
下图是分别用两种方法标定后的结果,我首先是分别用方差为1 和方差10的高斯算子对图像进行滤波,然后相减得到DoG图像,由于存在负值,所以需要进行标定处理。从下图中我们可以发现,方法二的效果要比方法一好,轮空更加的明显,因为它覆盖了整个0到255的范围。
源代码下载地址
注意事项:
在matlab中,把图像读到内存是保存在uint8数据类型中,所以能够保存的值是0到255之间。如果两图像相减之后得到负值,就会把截取,保存的值为0,最后会得到错误的差值图像。为了避免这样的错误,需要在相减之前转换成double类型,然后标定之后再转换成uint8进行显示。参考:
冈萨雷斯《数字图像处理》第二版相关文章推荐
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- LCL.VBS 病毒源代码
- PHP GD 图像处理组件的常用函数总结
- PHP图像处理之imagecreate、imagedestroy函数介绍
- jsvascript图像处理―(计算机视觉应用)图像金字塔
- Javascript图像处理思路及实现代码
- PHP图像处理之使用imagecolorallocate()函数设置颜色例子
- java数字图像处理基础使用imageio写图像文件示例
- Lua中的源代码预编译浅析
- javascript图像处理―边缘梯度计算函数
- Javascript图像处理―阈值函数实例应用
- Javascript图像处理―虚拟边缘介绍及使用方法
- php图像处理函数大全(推荐收藏)
- Javascript图像处理―图像形态学(膨胀与腐蚀)
- Javascript图像处理―平滑处理实现原理
- jQuery-digest | 咀嚼jQuery源码
- 掌握主流框架的源码实现,理解框架背后的思想(续) 3ff0
- 2048 C++源代码by Reason
- Spark源码分析(1) 从WordCount示例看Spark延迟计算原理
- 37、chen框架v2源代码和示例项目发布