收藏 分享(赏)

求阈值最佳方法.doc

上传人:jw66tk88 文档编号:7013478 上传时间:2019-04-30 格式:DOC 页数:3 大小:41KB
下载 相关 举报
求阈值最佳方法.doc_第1页
第1页 / 共3页
求阈值最佳方法.doc_第2页
第2页 / 共3页
求阈值最佳方法.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、OTSU 算法是由日本学者 OTSU 于 1979 年提出的一种对图像进行二值化的高效算法。1. OTSU 算法原理简介对于一幅图像,设当前景与背景的分割阈值为 t 时,前景点占图像比例为 w0,均值为 u0,背景点占图像比例为 w1,均值为 u1。则整个图像的均值为 u = w0*u0+w1*u1。建立目标函数 g(t)=w0*(u0-u)2+w1*(u1-u)2,g(t)就是当分割阈值为 t 时的类间方差表达式。OTSU 算法使得 g(t)取得全局最大值,当 g(t)为最大时所对应的 t 称为最佳阈值。OTSU 算法又称为最大类间方差法。2.OTSU 算法例程下面是 OSTU 算法的 C

2、语言代码及其测试,代码基于 opencv。cpp view plaincopy1. #include 2. #include 3. 4. int otsu(IplImage *image) 5. 6. assert(NULL != image); 7. 8. int width = image-width; 9. int height = image-height; 10. int x=0,y=0; 11. int pixelCount256; 12. float pixelPro256; 13. int i, j, pixelSum = width * height, threshold =

3、 0; 14. 15. uchar* data = (uchar*)image-imageData; 16. 17. /初始化 18. for(i = 0; i widthStep + j+; 30. 31. 32. 33. 34. /计算每个像素在整幅图像中的比例 35. for(i = 0; i deltaMax) 70. 71. deltaMax = deltaTmp; 72. threshold = i; 73. 74. 75. /返回最佳阈值; 76. return threshold; 77. 78. 79. int main(int argc, char* argv) 80. 8

4、1. IplImage* srcImage = cvLoadImage(“D:technologyCVDatabaseimagerice.png“,0); 82. assert(NULL != srcImage); 83. 84. cvNamedWindow(“src“); 85. cvShowImage(“src“,srcImage); 86. 87. IplImage* biImage = cvCreateImage(cvGetSize(srcImage),8,1); 88. 89. /计算最佳阈值 90. int threshold = otsu(srcImage); 91. /对图像二值化 92. cvThreshold(srcImage,biImage,threshold,255,CV_THRESH_BINARY); 93. 94. cvNamedWindow(“binary“); 95. cvShowImage(“binary“,biImage); 96. 97. cvWaitKey(0); 98. 99. cvReleaseImage( 100. cvReleaseImage( 101. cvDestroyWindow(“src“); 102. cvDestroyWindow(“binary“); 103. 104. return 0; 105.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报