Opencv 之阈值处理操作

   日期:2020-09-06     浏览:97    评论:0    
核心提示:图像的二值化:将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。API函数CV_EXPORTS_W double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );含义:src:源图像,可以为8位的灰度图,也可以为32位的彩色图像。(一般取灰度图

图像的二值化:将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。

API函数
CV_EXPORTS_W double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );
含义:
src:源图像,可以为8位的灰度图,也可以为32位的彩色图像。(一般取灰度图处理)
dst:输出图像
thresh:阈值
maxval:dst图像中最大值
type:阈值类型,





源程序
#include “stdafx.h”

//本节讲述 图像处理之 图像金字塔-上采样和下采样;
#include <opencv2/opencv.hpp>
#include
#include <math.h>

using namespace std;
using namespace cv;

Mat src, dst, asd,gray_src;
int threshold_value = 127;
int threshold_max = 255;
int type_value = 2;
int type_max = 4; //通过滑动切换阈值类型,5种

//const char*
void shreshold_demo(int,void*);
const char*output_title = “阈值操作”;

int main(int argc, char**argv)
{
src = imread(“C:/Users/Rubison.DELL/Desktop\杂物/壁纸/小白2.jpg”); //存放自己图像的路径
if (!src.data)
{
printf(“could not load image…\r\n”);
return -1;
}

char input_title[] = "原图";
namedWindow(input_title, CV_WINDOW_AUTOSIZE);
namedWindow(output_title, CV_WINDOW_AUTOSIZE);
imshow(input_title,src);

createTrackbar("Threshold value", output_title, &threshold_value, threshold_max, shreshold_demo);
createTrackbar("type value", output_title, &type_value, type_max, shreshold_demo);
shreshold_demo(0,0);

waitKey(0);
destroyAllWindows();
return 0;

}

void shreshold_demo(int, void*)
{
cvtColor(src, gray_src, CV_BGR2GRAY);
threshold(gray_src, dst, threshold_value, threshold_max, type_value); //注意 !这里type_value本应该是阈值类型,
imshow(output_title, dst); //由于它的类型对应0到4,既被赋值,可以通过改变变量type_value的值从而改变阈值类型

}

程序验证

补充 (该部分均为转载,出处位于首段)
自适应阈值化(THRESH_OTSU)和三角形算法(THRESH_TRIANGLE)算法

自适应阈值:转载出处
OTSU算法(大津法)是一种图像灰度自适应的阈值分割算法。大津法按照图像上灰度值的分布,将图像分成背景和前景两部分看待,前景就是我们要按照阈值分割出来的部分。背景和前景的分界值就是我们要求出的阈值。遍历不同的阈值,计算不同阈值下对应的背景和前景之间的类内方差,当类内方差取得极大值时,此时对应的阈值就是OTSU算法(大津法)所求的阈值。

Otsu实现思路

  1. 计算0~255各灰阶对应的像素个数,保存至一个数组中,该数组下标是灰度值,保存内容是当前灰度值对应像素数
  2. 计算背景图像的平均灰度、背景图像像素数所占比例
  3. 计算前景图像的平均灰度、前景图像像素数所占比例
  4. 遍历0~255各灰阶,计算并寻找类间方差极大值

三角法图像二值化:三角法阈值分割–转载

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服