视频二值化处理基本方法以及简单代码实现

本文介绍了基于opencv和vs2010环境下的视频二值化处理,包括三种方法:简单的阈值处理、平均值二值化和自适应阈值二值化。通过比较不同方法的优缺点,展示了如何将图像二值化应用于视频处理。
摘要由CSDN通过智能技术生成

参考了网上的一些博客,基于opencv和vs2010的环境,将图像二值化应用到视频处理中去,下面将方法进行介绍。
方法一:
对RGB彩色图像灰度化以后,扫描图像的每个像素值,值小于127的
将像素值设为0(黑色),值大于等于127的像素值设为255(白色)。该方法的好处是计算
量少速度快。缺点更多首先阈值为127没有任何理由可以解释,其次完全不考虑图像的
像素分布情况与像素值特征。可以说该方法是史最弱智的二值处理方法一点也不为过。

方法二:
最常见的二值处理方法是计算像素的平均值K,扫描图像的每个像素值如像素值大于K
像素值设为255(白色),值小于等于K像素值设为0(黑色)。该方法相比方法一,阈值的
选取稍微有点智商,可以解释。但是使用平均值作为二值化阈值同样有个致命的缺点,
可能导致部分对象像素或者背景像素丢失。二值化结果不能真实反映源图像信息。
代码中大于平均值的设为0,小于设为255

方法三:http://en.wikipedia.org/wiki/Thresholding_(image_processing)
使用近似一维Means方法寻找二值化阈值,该方法的大致步骤如下:
1.一个初始化阈值T,可以自己设置或者根据随机方法生成。
2. 根据阈值图每个像素数据P(n,m)分为对象像素数据G1与背景像素数据G2。(n为
行,m为列)
3.G1的平均值是m1, G2的平均值是m2
4. 一个新的阈值T’ = (m1 + m2)/2
5. 回到第二步,用新的阈值继续分像素数据为对象与北京像素数据,继续2~4步,
直到计算出来的新阈值等于上一次阈值。

编程实现如下:
#include "highgui.h"
#include "cv.h"
//函数声明
void RGB_Gray_Typical(IplImage *tempFrame, IplImage *grayImage);
void BinaryFilter (IplImage *grayImage,IplImage *FliterImage);
void BinaryFilterTypical (IplImage *grayImage,IplImage *FliterImage);
void AverageBinaryFilter (IplImage *grayImage,IplImage *FliterImage);
void ThresholdBinaryFilter(IplImage *grayImage,IplImage *FliterImage);
int main()
{
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值