QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3453|回复: 0
打印 上一主题 下一主题

关于细化算法

[复制链接]
字体大小: 正常 放大

2

主题

3

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2006-6-15 11:27 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<p>关于细化算法</p><p><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: ˎ̥; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><font face="宋体, MS Song">//</font></span><span style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: ˎ̥; mso-hansi-font-family: ˎ̥;">图像细化算法</span><span style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: ˎ̥; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><font face="宋体, MS Song"> </font></span><span style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: ˎ̥; mso-hansi-font-family: ˎ̥;">为什么</span><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: ˎ̥; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><font face="宋体, MS Song"> num=nw/255+n/255*2+ne/255*4+w/255*8+e/255*16+sw/255*32+s/255*64+se/255*128;<br/><br/>BOOL Thinning(HWND hWnd)<br/>{<br/>DWORD BufSize;<br/>LPBITMAPINFOHEADER lpImgData;<br/>LPSTR lpPtr;<br/>HLOCAL hTempImgData;<br/>LPBITMAPINFOHEADER lpTempImgData;<br/>LPSTR lpTempPtr;<br/>HDC hDc;<br/>HFILE hf;<br/>LONG x,y;<br/>int num;<br/>BOOL Finished;<br/>int nw,n,ne,w,e,sw,s,se;<br/>static int erasetable[256]={<br/>0,0,1,1,0,0,1,1,<br/>1,1,0,1,1,1,0,1,<br/>1,1,0,0,1,1,1,1,<br/>0,0,0,0,0,0,0,1,<br/><br/>0,0,1,1,0,0,1,1,<br/>1,1,0,1,1,1,0,1,<br/>1,1,0,0,1,1,1,1,<br/>0,0,0,0,0,0,0,1,<br/><br/>1,1,0,0,1,1,0,0,<br/>0,0,0,0,0,0,0,0,<br/>0,0,0,0,0,0,0,0,<br/>0,0,0,0,0,0,0,0,<br/><br/>1,1,0,0,1,1,0,0,<br/>1,1,0,1,1,1,0,1,<br/>0,0,0,0,0,0,0,0,<br/>0,0,0,0,0,0,0,0,<br/><br/>0,0,1,1,0,0,1,1,<br/>1,1,0,1,1,1,0,1,<br/>1,1,0,0,1,1,1,1,<br/>0,0,0,0,0,0,0,1,<br/><br/>0,0,1,1,0,0,1,1,<br/>1,1,0,1,1,1,0,1,<br/>1,1,0,0,1,1,1,1,<br/>0,0,0,0,0,0,0,0,<br/><br/>1,1,0,0,1,1,0,0,<br/>0,0,0,0,0,0,0,0,<br/>1,1,0,0,1,1,1,1,<br/>0,0,0,0,0,0,0,0,<br/><br/>1,1,0,0,1,1,0,0,<br/>1,1,0,1,1,1,0,0,<br/>1,1,0,0,1,1,1,0,<br/>1,1,0,0,1,0,0,0<br/>};<br/><br/>if( NumColors!=256){<br/>MessageBox(hWnd,"Must be a mono bitmap with grayscale palette!","Error Message",MB_OK|MB_ICONEXCLAMATION);<br/>return FALSE;<br/>}<br/>BufSize=bf.bfSize-sizeof(BITMAPFILEHEADER);<br/>if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)<br/>{<br/>MessageBox(hWnd,"Error alloc memory!","Error Message",MB_OK|MB_ICONEXCLAMATION);<br/>return FALSE;<br/>}<br/>lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData); <br/>lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);<br/>//copy image data<br/>memcpy(lpTempImgData,lpImgData,BufSize);<br/><br/>Finished=FALSE;<br/>while(!Finished){<br/>Finished=TRUE;<br/>for (y=1;y&lt;bi.biHeight-1;y++){ <br/>lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);<br/>lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);<br/>x=1; <br/>while(x&lt;bi.biWidth-1){<br/>if(*(lpPtr+x)==0){<br/>w=(unsigned char)*(lpPtr+x-1);<br/>e=(unsigned char)*(lpPtr+x+1);<br/>if( (w==255)|| (e==255)){<br/>nw=(unsigned char)*(lpPtr+x+LineBytes-1);<br/>n=(unsigned char)*(lpPtr+x+LineBytes);<br/>ne=(unsigned char)*(lpPtr+x+LineBytes+1);<br/>sw=(unsigned char)*(lpPtr+x-LineBytes-1);<br/>s=(unsigned char)*(lpPtr+x-LineBytes);<br/>se=(unsigned char)*(lpPtr+x-LineBytes+1);<br/>num=nw/255+n/255*2+ne/255*4+w/255*8+e/255*16+sw/255*32+s/255*64+se/255*128;<br/>if(erasetable[num] == 1)<br/>{<br/>*(lpPtr+x)=(BYTE)255;<br/>*(lpTempPtr+x)=(BYTE)255;<br/>Finished=FALSE;<br/>x++;<br/>}<br/>}<br/>}<br/>x++;<br/>}<br/>}<br/><br/>for (x=1;x&lt;bi.biWidth-1;x++){ <br/>y=1;<br/>while(y&lt;bi.biHeight-1){<br/>lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);<br/>lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);<br/>if(*(lpPtr+x)==0){<br/>n=(unsigned char)*(lpPtr+x+LineBytes);<br/>s=(unsigned char)*(lpPtr+x-LineBytes);<br/>if( (n==255)|| (s==255)){<br/>nw=(unsigned char)*(lpPtr+x+LineBytes-1);<br/>ne=(unsigned char)*(lpPtr+x+LineBytes+1);<br/>w=(unsigned char)*(lpPtr+x-1);<br/>e=(unsigned char)*(lpPtr+x+1);<br/>sw=(unsigned char)*(lpPtr+x-LineBytes-1);<br/>se=(unsigned char)*(lpPtr+x-LineBytes+1);<br/>num=nw/255+n/255*2+ne/255*4+w/255*8+e/255*16+sw/255*32+s/255*64+se/255*128;<br/>if(erasetable[num]==1){<br/>*(lpPtr+x)=(BYTE)255;<br/>*(lpTempPtr+x)=(BYTE)255;<br/>Finished=FALSE;<br/>y++;<br/>}<br/>}<br/>}<br/>y++;<br/>}<br/>} <br/>}<br/><br/>if(hBitmap!=NULL)<br/>DeleteObject(hBitmap);<br/>hDc=GetDC(hWnd); <br/>hBitmap=CreateDIBitmap(hDc, (LPBITMAPINFOHEADER)lpTempImgData, (LONG)CBM_INIT,<br/>(LPSTR)lpTempImgData+sizeof(BITMAPINFOHEADER) +NumColors*sizeof(RGBQUAD),<br/>(LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS);<br/><br/>hf=_lcreat("c:\\thinning.bmp",0);<br/>_lwrite(hf,(LPSTR)&amp;bf,sizeof(BITMAPFILEHEADER)); <br/>_lwrite(hf,(LPSTR)lpTempImgData,BufSize);<br/>_lclose(hf);<br/><br/>ReleaseDC(hWnd,hDc);<br/>LocalUnlock(hTempImgData);<br/>LocalFree(hTempImgData);<br/>GlobalUnlock(hImgData);<br/>return TRUE;<br/>}</font></span></p>
+ S) Y0 @/ r. e  X
[此贴子已经被作者于2006-6-15 11:29:07编辑过]
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-8-19 22:39 , Processed in 0.508740 second(s), 51 queries .

回顶部