温控器控制技术
太阳能应用技术
传感器应用技术
智能控制技术
下载资料

当前位置:首页 > 技术手册
图像边缘检测-方差法
发布日期:2012-03-12 浏览次数:2524
在概率论和数理统计中,方差(英文Variance)用来度量随机变量和其数学期望(即均值)之间的偏离程度。在许多实际问题中,研究随机变量和均值之间的偏离程度有着很重要的意义。下面我将用方差在图像上做一种边缘检测算法。

通过对地图的特征分析,发现在地图所在地物的边缘、交界以及文字注记处的像素值变化较大。所以用方差来作为边缘地带的特征值处理,给出以下步骤:

Step1. 得到图像内容;
Step2. 按照设定的大小分成N*N的小块,试验中设定N=8;
Step3. 计算每块像素值的均值和方差;
Step4. 方差按照规则对应于255级灰度拉伸;这里只是把方差值除以最大方差值再乘以255;
Step5. 生成图像。

这样就得到了一副显示边缘的成果图。

具体代码如下:

BOOL CWMRasterDCTExtract::VarianceZeroWmarkMakep(HANDLE hImage)
{
 if(hImage==NULL)
 {
  WriteLog(TRA_LEVEL_WARN,_T("CWMRasterDCTExtract::VarianceZeroWmarkMakep, Image is null"));
  return FALSE;
 }
 int i, j;
 int nTestNum = 230;
 BITMAPINFOHEADER ds;
 memcpy(&ds,hImage, sizeof(ds));
 int effwdt = ((((ds.biBitCount * ds.biWidth ) + 31) / 32) * 4);
 int nPad = effwdt - (((ds.biWidth * ds.biBitCount) + 7) / 8);
 BYTE* pbBits = (BYTE*)hImage + *(DWORD*)hImage + ds.biClrUsed * sizeof(RGBQUAD);
 WriteLog(TRA_LEVEL_DEBUG,_T("CWMRasterDCTExtract::VarianceZeroWmarkMakep, Pic's width=%d,height=d"),ds.biWidth,ds.biHeight);
 BYTE* pImage=NULL;
 
 // 得到图像内容
 LONG k,l,biWidth,biHeight;
 biWidth=ds.biWidth;
 biHeight=ds.biHeight;
 // 生成
 CString filename;
 char szFilter[]="BMP文件(*.bmp)|*.bmp||";
 CFileDialog dlg(FALSE,"bmp",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
 WriteLog(TRA_LEVEL_INFO,_T("CWMRasterDCTExtract::VarianceZeroWmarkMakep, 选择保存零水印文件..."));
 if(dlg.DoModal()==IDOK)
 {
  filename=dlg.GetPathName();
  int nIndex=0; 
  double dInput[1024];// 数据容器32*32
  double dMaxE=0.0;
  double dSum,dE;
 
  if(ds.biBitCount==8)
  {
   pImage = new BYTE[effwdt*ds.biHeight];
   memset(pImage,0,effwdt*ds.biHeight);
   m_ipFramework->ShowProgressCtrl();
   int nStep = 2;
   biHeight = ds.biHeight/nStep*nStep;
   biWidth = ds.biWidth/nStep*nStep;
   for (i=0; i<biHeight; i+=nStep)
   {
    for (j=0; j<biWidth; j+=nStep)
    {
     for(k=0;k<nStep;k++)
     {
      for(l=0;l<nStep;l++)
      {
       dInput[k*nStep+l] = pbBits[(i+k)*effwdt + (j+l)];
      }
     }
     CalculateMean(dInput,nStep*nStep,&dSum,&dE);
     if(dMaxE<dE)
     {
      dMaxE = dE;
     }
     // 测试断点条件
     if(nIndex==nTestNum)
     {
     }
    
     if(dE>0.0)
     {/*
      BYTE byValue = dE/30.0;
      for(k=0;k<nStep;k++)
      {
       for(l=0;l<nStep;l++)
       {
        pImage[(i+k)*effwdt + (j+l)] = byValue;
       
       }
      }*/
     
      //WriteLog(TRA_LEVEL_DEBUG,_T("CWMRasterDCTExtract::VarianceZeroWmarkMakep, Index=%d, Sum=%f, Ex=%f!"), nIndex, dSum,dE);
     }
     nIndex++;
    }
    m_ipFramework->SetPosProgressCtrl(int((i+1)*100/ds.biHeight));
   }
   m_ipFramework->SetPosProgressCtrl(100);
   m_ipFramework->HideProgressCtrl();

   WriteLog(TRA_LEVEL_DEBUG,_T("CWMRasterDCTExtract::VarianceZeroWmarkMakep, MaxEx=%f!"), dMaxE);
   // 归一化
   for (i=0; i<biHeight; i+=nStep)
   {
    for (j=0; j<biWidth; j+=nStep)
    {
     for(k=0;k<nStep;k++)
     {
      for(l=0;l<nStep;l++)
      {
       dInput[k*nStep+l] = pbBits[(i+k)*effwdt + (j+l)];
      }
     }
     CalculateMean(dInput,nStep*nStep,&dSum,&dE);

     if(dE>0.0)
     {
      BYTE byValue = dE/dMaxE*255;
      for(k=0;k<nStep;k++)
      {
       for(l=0;l<nStep;l++)
       {
        pImage[(i+k)*effwdt + (j+l)] = byValue;
       }
      }
     }
     nIndex++;
    }
   }

   // 保存文件
   SaveAsBmpFileEx(filename, 8, effwdt, ds.biHeight, pImage);
  }
  else
  {
   WriteLog(TRA_LEVEL_WARN,_T("CWMRasterDCTExtract::VarianceZeroWmarkMakep, no support this format"));
  }
 }
 else
 {
  WriteLog(TRA_LEVEL_INFO,_T("CWMRasterDCTExtract::VarianceZeroWmarkMakep, Cancel."));
 }

 if(pImage!=NULL)
 {
  delete pImage;
 }
 return TRUE;
}

** 奇普尼克Chiptronic公司在电源控制方面拥有成熟且完整的控制解决方案,自主研发和创新能力是我们的核心竞争优势,主要产品有:单相整流触发板、三相整流触发板、可控硅触发板、可控硅调功板、可控硅调压板、电机软启动触发板、晶闸管调整器、电源智能控制器、恒流恒压触发板等,同时为客户提供包括标准或非标类方案设计、智能控制整合和售后服务的一站式控制解决方案。
关于我们 | 新的网站 | 产品讯息 | 研发及技术 | 服务与支持 | 隐私政策 | 联系我们 粤ICP备10019209号
Copyright©2012 Chiptronic版权所有 电话:0755-18926078358 传真:0755-83352315 Email:chiptronic@126.com
三相可控硅触发板|单相可控硅触发板|十二脉波三相触发板|软启动器触发板|电机软起动柜控制板|电机软起动器|全控整流触发板|晶闸管触发器|可控硅触发器|可控硅调压器
无触点整流柜触发板|直流电机调速触发板|电解电镀电源整流触发板|充放电可控硅触发板|励磁电机可控硅触发板|可控硅整流柜触发板|电加热可控硅触发板|承接控制板订制加工
诚信通企业            深圳网络110