⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 天极yesky - 全球中文it第一门户 - 软件 - visual c++ 实现数字化图像的分割3.htm

📁 Visual C++ 实现数字化图像的分割好文章和代码
💻 HTM
📖 第 1 页 / 共 3 页
字号:
                    <TR>
                      <TD colSpan=2><FONT class=f21><B>[文章信息]</B></FONT></TD></TR>
                    <TR>
                      <TD colSpan=2 height=10></TD></TR>
                    <TR>
                      <TD vAlign=top width=62>作者:</TD>
                      <TD vAlign=top width=158><FONT 
                    color=#0e3e92>刘涛</FONT></TD></TR>
                    <TR>
                      <TD vAlign=top>时间:</TD>
                      <TD vAlign=top><FONT 
                    color=#0e3e92>2003-06-24</FONT></TD></TR>
                    <TR>
                      <TD vAlign=top>出处:</TD>
                      <TD vAlign=top><FONT color=#0e3e92>yesky</FONT></TD></TR>
                    <TR>
                      <TD vAlign=top>责任编辑:</TD>
                      <TD vAlign=top><FONT color=#0e3e92>方舟</FONT></TD></TR>
                    <TR>
                      <TD colSpan=2 height=10></TD></TR></TBODY></TABLE>
                  <TABLE cellSpacing=0 cellPadding=0 width=220 border=0>
                    <TBODY>
                    <TR>
                      <TD colSpan=2><FONT class=f21><B>[文章导读]</B></FONT></TD></TR>
                    <TR>
                      <TD colSpan=2 height=10></TD></TR>
                    <TR>
                      <TD vAlign=top colSpan=2><SPAN 
                        class=f14>图像处理的关键一步是对包含有大量各式各样景物信息的图像进行分解</SPAN></TD></TR>
                    <TR>
                      <TD colSpan=2 height=10></TD></TR></TBODY></TABLE>
                  <SCRIPT 
                  language=JavaScript><!--var ad_id=1003//--></SCRIPT>

                  <SCRIPT language=JavaScript 
                  src="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/10.js"></SCRIPT>
                </TD>
                <TD width=5></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
    <TD width=1 bgColor=#b9bebe rowSpan=13></TD>
    <TD vAlign=top align=middle width=170 bgColor=#ffffff rowSpan=13>
      <TABLE cellSpacing=5 cellPadding=0 width=165 border=0>
        <TBODY>
        <TR>
          <TD align=middle>
            <SCRIPT language=JavaScript><!--var ad_id=0403//--></SCRIPT>

            <SCRIPT language=JavaScript 
            src="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/04.js"></SCRIPT>
          </TD></TR></TBODY></TABLE>
      <TABLE height=28 cellSpacing=0 cellPadding=0 width=160 
      background="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/2004-30.gif" 
      border=0>
        <TBODY>
        <TR>
          <TD align=middle><B>advertisement</B></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width=160 border=0>
        <TBODY>
        <TR>
          <TD width=1 bgColor=#adadad></TD>
          <TD align=middle bgColor=#ffffff><SPAN id=sv></SPAN></TD>
          <TD width=1 bgColor=#adadad></TD></TR></TBODY></TABLE>
      <TABLE height=1 cellSpacing=0 cellPadding=0 width=160 bgColor=#adadad 
      border=0>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE>
      <TABLE height=10 cellSpacing=0 cellPadding=0 width=160 border=0>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE>
      <TABLE height=28 cellSpacing=0 cellPadding=0 width=160 
      background="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/2004-30.gif" 
      border=0>
        <TBODY>
        <TR>
          <TD align=middle><B>热点推荐</B></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width=160 border=0>
        <TBODY>
        <TR>
          <TD width=1 bgColor=#adadad></TD>
          <TD align=middle bgColor=#ffffff>
            <TABLE cellSpacing=0 cellPadding=2 width=150 border=0>
              <TBODY>
              <TR>
                <TD width=7>· </TD>
                <TD width=143><A 
                  href="http://www.yesky.com/SoftChannel/72339069014638592/20041115/1875873.shtml" 
                  target=_blank>11.15软件精选 制作MSI文件</A></TD></TR>
              <TR>
                <TD width=7>· </TD>
                <TD width=143><A 
                  href="http://www.yesky.com/SoftChannel/72348986094125056/20041113/1875362.shtml" 
                  target=_blank>闪客五周年之闪客光荣榜</A></TD></TR>
              <TR>
                <TD width=7>· </TD>
                <TD width=143><A 
                  href="http://www.yesky.com/SoftChannel/72346782775902208/20041115/1875748.shtml" 
                  target=_blank>用Winamp“品尝”无限音乐</A></TD></TR>
              <TR>
                <TD width=7>· </TD>
                <TD width=143><A 
                  href="http://www.yesky.com/SoftChannel/72356695560421376/20041115/1875845.shtml" 
                  target=_blank>网络加、解密的技术应用</A></TD></TR>
              <TR>
                <TD width=7>· </TD>
                <TD width=143><A 
                  href="http://www.yesky.com/SoftChannel/72351185218043904/20041115/1875789.shtml" 
                  target=_blank>闪客五周年之闪客光荣榜:zoron</A></TD></TR></TBODY></TABLE></TD>
          <TD width=1 bgColor=#adadad></TD></TR></TBODY></TABLE>
      <TABLE height=1 cellSpacing=0 cellPadding=0 width=160 bgColor=#adadad 
      border=0>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=1 bgColor=#b9bebe rowSpan=13></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#f0f2fb height=5></TD></TR>
  <TR>
    <TD vAlign=top 
    background="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/newhard-040906_c_1.gif" 
    bgColor=#f0f2fb height=1></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#dee2f5>
      <TABLE height=25 cellSpacing=0 cellPadding=0 width=590 align=center 
      border=0>
        <TBODY>
        <TR>
          <TD width=90><FONT class=f21><B>[正文]</B></FONT></TD>
          <TD align=right width=480>
            <P align=right><FONT color=red><A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789_1.shtml">上一页</A>&nbsp;&nbsp;<A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789.shtml">1</A> 
            <A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789_1.shtml">2</A> 
            3 <A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789_3.shtml">4</A> 
            <A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789_4.shtml">5</A> 
            &nbsp;<A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789_3.shtml">下一页</A></FONT></P></TD>
          <TD align=middle width=20></TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD vAlign=top 
    background="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/newhard-040906_c_1.gif" 
    bgColor=#f0f2fb height=1></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#f0f2fb height=10></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#f0f2fb>
      <TABLE cellSpacing=0 cellPadding=0 width=590 align=center border=0>
        <TBODY>
        <TR>
          <TD><SPAN 
            class=f14>  Kirsch算子实现起来相对来说稍微麻烦一些,它采用8个模板对图像上的每一个像素点进行卷积求导数,这8个模板代表8个方向,对图像上的8个特定边缘方向作出最大响应,运算中取最大值作为图像的边缘输出(上述算法中用到的8个模板在下面的实现代码中给出)。为了便于读者理解该算法的实现,这里我们给出实现该算法的函数代码,读者可以稍加改动应用到自己的项目中去。<BR><BR>
            <TABLE cellPadding=0 width="100%" bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD>BOOL Kirsch(BYTE *pData,int Width,int 
                  Height)<BR>{//定义实现Kirsch算法的8个模板;<BR>int 
                  i,j,s,t,k,max,sum[8];<BR>static 
                  a[3][3]={{+5,+5,+5},{-3,0,-3},{-3,-3,-3}};<BR>static 
                  a1[3][3]={{-3,+5,+5},{-3,0,+5},{-3,-3,-3}};<BR>static 
                  a2[3][3]={{-3,-3,+5},{-3,0,+5},{-3,-3,+5}};<BR>static 
                  a3[3][3]={{-3,-3,-3},{-3,0,+5},{-3,+5,+5}};<BR>static 
                  a4[3][3]={{-3,-3,-3},{-3,0,-3},{+5,+5,+5}};<BR>static 
                  a5[3][3]={{-3,-3,-3},{+5,0,-3},{+5,+5,-3}};<BR>static 
                  a6[3][3]={{+5,-3,-3},{+5,0,-3},{+5,-3,-3}};<BR>static 
                  a7[3][3]={{+5,+5,-3},{+5,0,-3},{-3,-3,-3}};<BR>BYTE 
                  *pData1;<BR>if(pData==NULL)<BR>{<BR>AfxMessageBox("图像数据为空,请读取图像数据!");<BR>return 
                  FALSE;<BR>}<BR>pData1=(BYTE*)new 
                  char[Width*Height];<BR>if(pData1==NULL)<BR>{<BR>AfxMessageBox("图像缓冲数据区申请失败,请重新申请图像数据缓冲区!");<BR>return 
                  FALSE ;<BR>}<BR>memcpy(pData1,pData, 
                  Width*8*Height);<BR>//kirsch算子处理,对每一像素点求取八个方向的导数;;<BR>for(i=1;i&lt;Height-1;i++)<BR>for(j=1;j&lt;Width-1;j++)<BR>{ 
                  <BR>sum[1]=sum[2]=sum[3]=sum[4]=sum[5]=sum[6]=sum[7]=sum[8]=0;<BR>for(t=-1;t&lt;2;t++)<BR>{<BR>for(s=-1;s&lt;2;s++)<BR>{ 
                  sum[1]+=*(pData+WIDTHBYTES(Width*8)*(i+t)+j+s)*a[1+t][1+s];<BR>sum[2]+=*(pData+WIDTHBYTES(Width*8)*(i+t)+j+s)*a1[1+t][1+s]; 
                  sum[3]+=*(pData+WIDTHBYTES(Width*8)*(i+t)+j+s)*a2[1+t][1+s]; 
                  sum[4]+=*(pData+WIDTHBYTES(Width*8)*(i+t)+j+s)*a3[1+t][1+s]; 
                  sum[5]+=*(pData+WIDTHBYTES(Width*8)*(i+t)+j+s)*a4[1+t][1+s]; 
                  sum[6]+=*(pData+WIDTHBYTES(Width*8)*(i+t)+j+s)*a5[1+t][1+s]; 
                  sum[7]+=*(pData+WIDTHBYTES(Width*8)*(i+t)+j+s)*a6[1+t][1+s]; 
                  sum[8]+=*(pData+WIDTHBYTES(Width*8)*(i+t)+j+s)*a7[1+t][1+s];<BR>}<BR>}<BR>//取最大方向的导数;<BR>for(k=0;k&lt;8;k++)<BR>{ 
                  <BR>max=0; 
                  <BR>if(max&lt;sum[k])<BR>max=sum[k];<BR>}<BR>if(max&lt;0)<BR>max=0;<BR>if(max&gt;255)<BR>max=255;<BR>*(pData1+ 
                  Width*8*i+j)=max;<BR>}<BR>memcpy(pData,pData1, 
                  Width*8*Height);<BR>delete pData1;<BR>return 
              TRUE;<BR>}<BR></TD></TR></TBODY></TABLE><BR>  另外还有一种称为拉普拉斯的算子是不依赖于边缘方向的二阶微分算子,其表示式<IMG 
            onerror="this.src='http://www.yesky.com/image20010518/48459.gif';" 
            hspace=3 src="" align=center vspace=1 border=1> 
            ,对于数字图像来说拉普拉斯算子可以简单表示为:G[I,j]=|f[i+1,j]+f[i-1,j]+f(i,j+1)+f[i,j-1]-4f[i,j]|;它是一个标量而不是向量,具有旋转不变,既各向同性的性质,它常常用在图像处理的过程中。<BR><BR>  梯度算子和拉普拉斯算子对噪声敏感,它们都使噪声成份加强,因此在处理含有较大噪声的图像时,常常先对图像进行平滑操作,然后再进行二阶微分,这就产生了所谓的LOG(又称为Marr方法)边缘检测方法。它先用高斯函数对图像进行平滑,然后再用拉普拉斯算子进行运算。<BR><BR>  总的来说,传统的边缘检测算子的噪声平滑能力和边缘定位能力是矛盾的,为了克服这个不足,正确地得到图像的边缘信息,人们提出了很多方法,如多尺度空间滤波、Facet模型检测边缘、模板匹配、Hough变换、小波变换、人工神经网络、模糊推理等算法。但这些方法绝大多数没有经典的算法精简,要么难以获得合理的计算复杂度,要么需要人为的调节各种参数,有时甚至难以实时运行。因为传统边缘的定义为图像中灰度的突变,所以这样定义边缘既失去了边缘的部分信息,又把噪声的影响包含在了边缘中。其实,边缘往往具有以下特征:<BR><BR>  1)灰度突变;<BR><BR>  2)是不同区域的边界;<BR><BR>  3)具有方向性;<BR><BR>  根据边缘的这三个特征,可以判断所关心的区域其特征是否存在差异来判断是否存在边缘的可能性。如果特征没有差异,则认为是平滑区;如果特征有差异,则判断为边缘点。算法的具体实现步骤如下:<BR><BR>  1) 
            设置四个3x3模板如图三所示,显而易见,四个模板分别按0、45、90、135以(x,y)点为中心将3x3的区域分成两个部分,按照这四个模板分别对图像中的每一像素点进行卷积求和操作。<BR><BR>  2)对图像中每一像素点求的四个结果求绝对值,将每个结果分别与一个阈值比较,如果其中任意一结果大于或等于阈值T,则该模板的中心点所对应的图像像素点的灰度值为255,否则为0。<BR><BR>&nbsp;<IMG 
            onerror="this.src='http://www.yesky.com/image20010518/48460.gif';" 
            hspace=3 src="" align=center vspace=1 border=1><BR>图三 
            边缘提取模板<BR><BR>  对于有噪声的图像,由于噪声是随机分布的,因此不论(x,y)是有效边界点还是处于平坦区域内部,沿边缘方向划分的两个区域R1和R2的噪声分布和噪声强度,在概率上相同。从四个模板的结构可以看出,噪声的影响基本上被相应的抵消,不会对边缘提取产生太大的影响,因此该算法具有较好的抗噪能力,克服了传统的边界提取仅考虑灰度突变的情况的局限。经实验证明该方法有较强的抗噪声性能。为了更好的对比各种算法进行边缘检测的效果,我们对一幅汽车图像进行了处理,下图中的a、b、c、d是分别通过LOG算子、Sober算子、Kirsch算子和使用上述算法检测得到的边缘。<BR><BR>
            <TABLE cellPadding=0 width="37%" border=0>
              <TBODY>
              <TR>
                <TD width="21%"><IMG 
                  onerror="this.src='http://www.yesky.com/image20010518/48469.jpg';" 
                  hspace=3 
                  src="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/48469.jpg" 
                  align=center vspace=1 border=1><BR>(a) 原始图像<BR></TD>
                <TD width="79%"><IMG 
                  onerror="this.src='http://www.yesky.com/image20010518/48463.jpg';" 
                  hspace=3 
                  src="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/48463.jpg" 
                  align=center vspace=1 border=1><BR>(b)LOG算子<BR></TD></TR>
              <TR>
                <TD width="21%"><IMG 
                  onerror="this.src='http://www.yesky.com/image20010518/48466.jpg';" 
                  hspace=3 src="" align=center vspace=1 border=1><BR>(c) 
                  Sober算子<BR></TD>
                <TD width="79%"><IMG 
                  onerror="this.src='http://www.yesky.com/image20010518/48467.jpg';" 
                  hspace=3 
                  src="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/48467.jpg" 
                  align=center vspace=1 border=1><BR>(d) Kirsch算子<BR></TD></TR>
              <TR>
                <TD width="21%"><IMG 
                  onerror="this.src='http://www.yesky.com/image20010518/48468.jpg';" 
                  hspace=3 
                  src="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/48468.jpg" 
                  align=center vspace=1 border=1><BR>(e) 模板检测法<BR></TD>
                <TD width="79%">&nbsp;</TD></TR></TBODY></TABLE>  图四 
            图像的边缘检测<BR><BR>  从上面的处理后的效果图来说,只有最后一种算法处理后肉眼看不出有噪声点,所以从去噪和提取边缘的综合效果来看,我们上述介绍的模板检测算法还是比较另人满意的。<BR><BR></SPAN><BR></TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#f0f2fb height=10></TD></TR>
  <TR>
    <TD vAlign=top 
    background="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/newhard-040906_c_1.gif" 
    bgColor=#f0f2fb height=1></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#dee2f5>
      <TABLE height=25 cellSpacing=0 cellPadding=0 width=590 align=center 
      border=0>
        <TBODY>
        <TR>
          <TD width=90></TD>
          <TD align=right width=480>
            <P align=right><FONT color=red><A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789_1.shtml">上一页</A>&nbsp;&nbsp;<A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789.shtml">1</A> 
            <A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789_1.shtml">2</A> 
            3 <A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789_3.shtml">4</A> 
            <A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789_4.shtml">5</A> 
            &nbsp;<A 
            href="http://www.yesky.com/SoftChannel/72342371928702976/20030623/1709789_3.shtml">下一页</A></FONT></P></TD>
          <TD align=middle width=20></TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD vAlign=top 
    background="天极Yesky - 全球中文IT第一门户 - 软件 - Visual C++ 实现数字化图像的分割3.files/newhard-040906_c_1.gif" 
    bgColor=#f0f2fb height=1></TD></TR>
  <TR>
    <TD vAlign=top width=603 bgColor=#f0f2fb>
      <TABLE cellSpacing=0 cellPadding=0 width=580 align=center border=0>
        <TBODY>
        <TR>
          <TD height=26><FONT color=#ff0000>·</FONT><A 
            href="http://www.my5757.com/webwap/zt/itnews/index.jsp" 
            target=_blank><FONT 
            color=#ff0000>"WAP天极之IT新闻资讯,50万元等你拿"</FONT></A>&nbsp;&nbsp;&nbsp;&nbsp;<FONT 
            color=#ff0000>·</FONT><A 
            href="http://www.my5757.com/webwap/zt/gameinfo/index.jsp" 
            target=_blank><FONT 
        color=#ff0000>天极WAP之游戏狂图,50万元等你下载</FONT></A></TD></TR></TBODY></TABLE><BR>
      <SCRIPT language=JavaScript type=text/JavaScript>   function submitonce(theform){          theform.submit();         theform.art.value='';	     theform.name.value='';	     theform.pass.value='';        return false;   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -