边缘检测的各种畅想
边缘 检测 各种
2023-09-14 08:59:07 时间
一直以来对OpenCV的边缘检测不满意,现在的边缘检测主要是基于各种算子,很多时候,边缘没办法非常细致的分割出来,后面ML的加入提供了更多的思路,在这里记录一下,最近的一些探索和想法,首先上一张图。
目的在于提取图像中黑色纹路的地方,尝试过边缘增强,对比度增强算法,各种enhancement。
效果很不明显,尤其是做了以下mat的背景相减,会发现其实阴影区域的像素值跟其他区域的差距很不明显:https://www.cnblogs.com/tornadomeet/archive/2012/06/02/2531705.html
,后面又尝试了基于OpenCV的阴影识别和提取。
尝试包括:
在运动目标检测中,常常会出现由于光线被遮挡,或场景其他物体的遮挡,在目标附近或场景里出现阴影,阴影的出现对后期目标的正确分割与处理带了很大的不便。如今,国内外已有不少文献来研究这个问题,并且提出了各种各样的阴影去除算法。本文就其中的一种算法提出了一个通用的实现算法,该算法考虑了背景与前景颜色相近的情况,希望能给大家一些帮助:(介绍下算法的思路:算法首先对RGB颜色空间的值进行归一化处理,即:r=R/(R+G+B),g=G/(R+G+B), I=(R+G+B)/3。然后利用背景和当前帧r,g的插值和I的比例来确定阴影区域:
详细细节请参考文献:Detecting moving objects,ghosts and shadows in video streams
code:
// shadeImg is a binary image,the value th2 and th3 are chosen empirically here,set th2=0.6 th3=1.5, th4=7 void ShadeDetect(IplImage *currImg, IplImage *bkImg, IplImage *shdadeImg,double th1,double th2,double th3,double th4) { cvZero(shdadeImg); unsigned char* currData; unsigned char* bkData; unsigned char* shadeData; int i=0,j=0; int height=currImg->height; int width=currImg->width; double rb=0,gb=0,Ib=0,Rb=0,Gb=0,Bb=0; double rt=0,gt=0,It=0,Rt=0,Gt=0,Bt=0; //CvScalar cs=cvScalarAll(255); for (i=0;i<height;i++) { currData=(unsigned char*)currImg->imageData+i*currImg->widthStep; bkData=(unsigned char*)bkImg->imageData+i*bkImg->widthStep; shadeData=(unsigned char*)shdadeImg->imageData+i*shdadeImg->widthStep; for (j=0;j<width;j++) { // current normalized Rt=currData[j*3]; Gt=currData[j*3+1]; Bt=currData[j*3+2]; rt=Rt/(Rt+Gt+Bt); gt=Gt/(Rt+Gt+Bt); It=(Rt+Gt+Bt)/3; // Bk normalized Rb=bkData[j*3]; Gb=bkData[j*3+1]; Bb=bkData[j*3+2]; rb=Rb/(Rb+Gb+Bb); gb=Gb/(Rb+Gb+Bb); Ib=(Rb+Gb+Bb)/3; // judge whether is shadeimg if (fabs(rt-rb)<=th1 && fabs(gt-gb)<th1 && It/Ib>=th2 && It/Ib<=th3 && fabs(It-Bt)<th4) { shadeData[j]=255; } } } }
代码改成mat格式,发现没有th1,把论文也撸了一遍也没看到,自己尝试了一些经验值,发现没啥效果。
尝试二、
相关文章
- 【华为云技术分享】云图说 | 华为云智能边缘平台IEF:智能边缘 让AI触手可及
- 如何计算边缘计算的成本
- 更灵活的边缘云原生运维:OpenYurt 单元化部署新增 Patch 特性
- 阿里云如何基于标准 K8s 打造边缘计算云原生基础设施
- 使用边缘检测,将图像旋转到水平位置
- 什么是 CDN 边缘服务器 - Edge Server
- CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)
- 基于KubeEdge的边缘节点分组管理设计与实现
- 5G边缘计算:开源架起5G MEC生态发展新通路
- m基于高斯滤波和八方向sobel边缘提取的道路检测和提取算法matlab仿真
- m基于形态学处理和边缘检测的人员跟踪检测算法matlab仿真
- 《多接入边缘计算(MEC)及关键技术》读书笔记 | 第4章 基于MEC的本地分流技术
- C# winform 实现窗口靠近屏幕边缘自动吸附
- 图像处理:推导三种边缘检测算法(Sobel,FFT,FHT)
- 【课题总结】OpenCV 抠图项目实战(7)边缘检测
- 【youcans 的 OpenCV 例程200篇】151. 边缘检测中的平滑处理
- 实时边缘检测
- sobel算法边缘检测python版
- 基于FPGA的图像sobel边缘提取算法实现,包含testbench和matlab验证程序
- Python - Opencv应用实例之CT图像检测边缘和内部缺陷
- 如何使用OpenCV进行图像的边缘检测和边缘增强?
- 【OpenCV】Chapter9.边缘检测与图像分割