﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-一切随心</title><link>http://www.cnblogs.com/drizzlecrj/</link><description>编程菜园</description><language>zh-cn</language><lastBuildDate>Tue, 14 Oct 2008 04:28:47 GMT</lastBuildDate><pubDate>Tue, 14 Oct 2008 04:28:47 GMT</pubDate><ttl>60</ttl><item><title>一类棋盘互不攻击问题</title><link>http://www.cnblogs.com/drizzlecrj/archive/2008/10/08/1306610.html</link><dc:creator>农夫三拳</dc:creator><author>农夫三拳</author><pubDate>Wed, 08 Oct 2008 13:03:00 GMT</pubDate><guid>http://www.cnblogs.com/drizzlecrj/archive/2008/10/08/1306610.html</guid><wfw:comment>http://www.cnblogs.com/drizzlecrj/comments/1306610.html</wfw:comment><comments>http://www.cnblogs.com/drizzlecrj/archive/2008/10/08/1306610.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/drizzlecrj/comments/commentRss/1306610.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/drizzlecrj/services/trackbacks/1306610.html</trackback:ping><description><![CDATA[<p align="center"><font face="Verdana"><strong>一类棋盘互不攻击问题</strong></font></p>
<p align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 农夫三拳@seu(<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#100;&#114;&#105;&#122;&#122;&#108;&#101;&#99;&#114;&#106;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">drizzlecrj@gmail.com</a>)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 最近在SGU上做了一些棋盘上互不攻击的题目，稍稍的总结一下：</p>
<p>1. <a href="http://acm.sgu.ru/problem.php?contest=0&amp;problem=220">SGU 220 Little Bishops</a>&nbsp;&nbsp;以及 <a href="http://acm.sgu.ru/problem.php?contest=0&amp;problem=221">SGU 221 Big Bishops</a></p>
<p>问题:&nbsp; 求n*n的棋盘上放置k个互不攻击的象的个数。</p>
<p>解法:&nbsp; 将棋盘旋转45度之后，转换成二维动态规划求解。具体参见 黑书243~244页</p>
<p>转移的方程为 F(i,j) = F(i - 1, j) + F(i - 1, j - 1) * (R<sub>i </sub>- j + 1)</p>
<p>其中F(i,j)表示前i行放置j个象的总数，Ri表示第i行的格子总数。那么显然F(i - 1, j)就是第i行不放任何象，F(i - 1, j - 1) * (R<sub>i </sub>- j + 1)表示第i行放置1个象的情况。</p>
<p>&nbsp;</p>
<p>2. <a href="http://acm.sgu.ru/problem.php?contest=0&amp;problem=222">SGU 222 Little Rooks</a></p>
<p>问题:&nbsp; 求n*n的棋盘上放置k个互不攻击的车的个数。</p>
<p>解法:&nbsp; 组合公式，挑选k个行C(n,k)，挑选k个列的排列A(n,k)，所以总数为C(n,k)*A(n,k)</p>
<p>&nbsp;</p>
<p>3.&nbsp;<a href="http://acm.sgu.ru/problem.php?contest=0&amp;problem=223">SGU 223 Little Kings</a></p>
<p>问题:&nbsp; 求n*n的棋盘上放置k个互不攻击的王的个数。</p>
<p>解法:&nbsp;&nbsp;状态压缩动态规划。dfs预处理两行之间的转移状态。</p>
<p>方程为:&nbsp; F(i, j<sub>2</sub>, k) = Sigma{F(i - 1, j<sub>1</sub>, k - ONE(j<sub>2</sub>))}</p>
<p>F(i,j<sub>2</sub>,k)表示第i行状态为j，前i行放置k个王的总数， F(i - 1, j1, k - ONE(j<sub>2</sub>)) 为第i - 1行状态为j1(且j<sub>1</sub>和j<sub>2</sub>可以转移)，前i - 1行放置&nbsp;k - ONE(j<sub>2</sub>)个王的总数。</p>
<p>显然ONE(j<sub>2</sub>)为第i行放置的王的个数。</p>
<p>&nbsp;</p>
<p>4.&nbsp; <a href="http://acm.sgu.ru/problem.php?contest=0&amp;problem=224">SGU 224 Little Queens</a></p>
<p>问题:&nbsp; 求n*n的棋盘上放置k个互不攻击的后的个数。</p>
<p>解法:&nbsp;参加我的这篇文章 《<a href="http://www.cnblogs.com/drizzlecrj/articles/913703.html">K皇后问题</a>》</p>
<p>&nbsp;</p>
<p>5.&nbsp; <a href="http://acm.sgu.ru/problem.php?contest=0&amp;problem=225">SGU 225 Little Knights</a></p>
<p>问题:&nbsp; 求n*n的棋盘上放置k个互不攻击的马的个数。</p>
<p>解法:&nbsp;我的解法还做得不好，用的是和3中提到的相同的方法，不过时间复杂度太高了，貌似只能打表交。</p>
<p>我是用F(i,j<sub>2</sub>,j<sub>1</sub>,k)表示第i行状态为j<sub>2</sub>，第i-1行状态为j<sub>1</sub>,前i行放置k个马的总数，那么有</p>
<p>F(i,j<sub>2</sub>,j<sub>1</sub>,k) = Sigma{F(i-1,j<sub>1</sub>,j<sub>0</sub>,k - One(j<sub>2</sub>))} j<sub>0</sub>和j<sub>1</sub>能够转移到j<sub>2</sub></p>
<p>不知道有没有更好的解法，希望过路大牛指教下。</p>
<p>&nbsp;</p>
<p><strong>小结：</strong></p>
<p>对于在棋盘上放置棋子互不攻击的问题，如果问最值问题，例如：n*n的棋盘上最多能够放多少个互不攻击得象等等，问题通常可以转换为二分图模型来求解。</p>
<p>而对于更加通用的n*n棋盘上放置k个互不攻击的棋子的问题，我知道的做法有两种，一种是用容斥原理，另外一种就是状态压缩。其中后者更加通用一些。</p>
<p>欢迎指教！</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.cnblogs.com/drizzlecrj/aggbug/1306610.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42979/" target="_blank">[新闻]微软终于发布Silverlight 2正式版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>稳定婚姻问题(Stable Marriage Problem)</title><link>http://www.cnblogs.com/drizzlecrj/archive/2008/09/12/1290176.html</link><dc:creator>农夫三拳</dc:creator><author>农夫三拳</author><pubDate>Fri, 12 Sep 2008 12:14:00 GMT</pubDate><guid>http://www.cnblogs.com/drizzlecrj/archive/2008/09/12/1290176.html</guid><wfw:comment>http://www.cnblogs.com/drizzlecrj/comments/1290176.html</wfw:comment><comments>http://www.cnblogs.com/drizzlecrj/archive/2008/09/12/1290176.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/drizzlecrj/comments/commentRss/1290176.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/drizzlecrj/services/trackbacks/1290176.html</trackback:ping><description><![CDATA[<p><strong style="color: black; background-color: #ffff66">稳定婚姻</strong>是组合数学里面的一个问题。</p>
<p>问题大概是这样：有一个社团里有n个女生和n个男生，每位女生按照她的偏爱程度将男生排序，同时每位男生也按照自己的偏爱程度将女生排序。然后将这n个女生和n个男生配成完备婚姻。</p>
<p>如果存在两位女生A和B，两位男生a和b，使得A和a结婚，B和b结婚，但是A更偏爱b而不是a，b更偏爱A而不是B，则这个婚姻就是不稳定的，A和b可能背着别人相伴而走，因为他俩都认为，与当前配偶比起来他们更偏爱各自的新伴侣。</p>
<p>如果完备婚姻不是不稳定的，则称其是稳定的。通过证明，可以得到每一个n女n男的社团，都存在<strong style="color: black; background-color: #ffff66">稳定婚姻</strong>的结论。但是这种情况只在异性的社团中存在。也就是说在同性的社团里面，<strong style="color: black; background-color: #ffff66">稳定婚姻</strong>的存在性将不再被保证。</p>
<p><font color="#c60a00">Gale</font>-Shapley 算法</p>
<p>while&nbsp; 存在男人m是自由的且还没对每个女人都求过婚<br />
&nbsp; &nbsp; &nbsp; 选择这个男人m<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 令w是m的优先表中还没求过婚的最高排名的女人<br />
&nbsp; &nbsp; &nbsp; &nbsp; if&nbsp; w是自由的&nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; （m，w）变成约会状态<br />
&nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; w当前与m1约会<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if&nbsp; w更偏爱m1而不爱m<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m保持自由<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; &nbsp; w更偏爱m而不爱m1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; （m，w）变成约会状态<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m1变成自由<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; endif<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; endif<br />
endwhile</p>
<p>下面是两道关于 稳定婚姻问题 的题目:</p>
<p>1. <a href="http://acm.zju.edu.cn/show_problem.php?pid=1576">ZJU 1576 <font style="background-color: #cce8cf" face="Verdana">Marriage is Stable</font></a></p>
<p>2. <a href="http://acm.nankai.edu.cn/p1710.html">NKU 1710 帅小伙子和漂亮姑娘</a></p>
<p>3.&nbsp;<a href="http://acm.pku.edu.cn/JudgeOnline/problem?id=3487">PKU 3487 <font style="background-color: #cce8cf" face="Verdana">The Stable Marriage Problem<br />
</font></a>&nbsp;</p>
<img src ="http://www.cnblogs.com/drizzlecrj/aggbug/1290176.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42977/" target="_blank">[新闻]微软首次打破先例 Windows 7不再改名</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>2007 South Central USA Regional Programming Contest 解题报告</title><link>http://www.cnblogs.com/drizzlecrj/archive/2008/08/15/1268649.html</link><dc:creator>农夫三拳</dc:creator><author>农夫三拳</author><pubDate>Fri, 15 Aug 2008 05:44:00 GMT</pubDate><guid>http://www.cnblogs.com/drizzlecrj/archive/2008/08/15/1268649.html</guid><wfw:comment>http://www.cnblogs.com/drizzlecrj/comments/1268649.html</wfw:comment><comments>http://www.cnblogs.com/drizzlecrj/archive/2008/08/15/1268649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/drizzlecrj/comments/commentRss/1268649.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/drizzlecrj/services/trackbacks/1268649.html</trackback:ping><description><![CDATA[<p style="font-size: 12pt;" align="center"><strong>2007 South Central USA Regional Programming Contest 解题报告</strong> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 农夫三拳@seu(drizzlecrj@gmail.com)<br />
</p>
<p>一、官方网址:<br />
</p>
<p><a href="http://acm2007.cct.lsu.edu/">http://acm2007.cct.lsu.edu/</a></p>
<p>&nbsp;</p>
<p>二、解题报告<br />
</p>
<p>1. One is an Interesting Number</p>
<p>按照题目描述的意思去做。可以预处理一下10<sup>6</sup>以内的平方数，立方数，四次方数，尽量避免浮点运算。</p>
<p>&nbsp;</p>
<p>2. Verdis Quo</p>
<p>罗马数字转换成十进制整数，注意一下a[i]&lt;a[i+1]的情况即可。</p>
<p>&nbsp;</p>
<p>3. The Screen Behind the Mirror</p>
<p>不错的计算几何题。考察的知识包括计算一条射线和一条线段的交点，镜面发射后的角度。前者可以通过直线的参数方程和向量知识求解，后者通过分解向量为水平和垂直两个方向求解(可参见<tt><tt><u></u></tt></tt><a href="http://www.geometryalgorithms.com/Archive/algorithm_0104/algorithm_0104B.htm"><tt><tt><u>http://www.geometryalgorithms.com/Archive/algorithm_0104/algorithm_0104B.htm</u></tt></tt></a>)。对于入射光线，计算最先遇到的Object是什么，递归得出最终结果。【注：发现把一些东东写成类很方便】<br />
</p>
<p>&nbsp;</p>
<p>4. Another Brick in the Wall</p>
<p>添加源点S,汇点T，构建无向图。S点到第一排的所有点的权值为1，T点到最后一排的权值为0，其余每一个点与其相邻的点的权值为1当且仅当它们两者值不同，否则权值为0。其余不相邻的点权值为INF。计算S点到T点的最短路径即为结果。<br />
</p>
<p>&nbsp;</p>
<p>5. The Sidewinder Sleeps Tonite</p>
<p>判断一个图形是否闭合，只需要考察每一个为&#8217;#&#8216;的点的四周&#8216;-&#8217;和&#8216;|'的数量为0或者2（这里需要注意有可能会出现#的上方是&#8217;-&#8216;,而下方是&#8216;|&#8217;的情况，似乎测试数据没有包括类似这种的情况，但是我觉得应当考虑)；判断一个非问号的数字是否正确，只需要计算它四周的'-'的数量和&#8216;|&#8216;的数量是否与其自身相同； 判断闭合图形是否唯一，只需要沿着一条&#8217;-&#8216;或'|'的边进行dfs，最终检查是否存在某条边没有被标记，同样我觉得这里应该检查闭合图形的合法性。<br />
</p>
<p>&nbsp;</p>
<p>6. Rout 66</p>
<p>模拟题</p>
<p>&nbsp;</p>
<p>7. Schottkey 7th Path</p>
<p>较复杂的字符串处理题, 我用map&lt;string, vector&lt;string&gt; &gt;搞的<br />
</p>
<p>&nbsp;</p>
<p>8. Another Version of the Truth</p>
<p>刚开始我也认为这题是博弈... <br />
</p>
<p>通过BFS预处理每个点到每个Player的最近距离, 接着O(D*D)枚举摆放位置，进一步bfs，最终求一个最大的位置。我写的复杂度是O(D<sup>4</sup>*P<sup>2</sup>),其实可以写成<br />
</p>
<p>O(D<sup>4</sup>*P)。原因在于第二次的bfs过程可以直接求出增加的Influence的个数，而不需要与其它的对手再比较。<br />
</p>
<p>&nbsp;</p>
<p>9. The Final Countdown</p>
<p> </p>
<p>这题有个trick，有可能Countdown的时间已经超过了Start的时间。解法是分别保存每一个条件为true和false的holdtime，并取其中的最小值和最大值分别加入到<br />
</p>
<p>结果中。<br />
</p>
<p> </p>
<p> </p>
<p> </p><img src ="http://www.cnblogs.com/drizzlecrj/aggbug/1268649.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42976/" target="_blank">[新闻]亚马逊EC2云计算计划支持Windows操作系统</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>《C#完全手册》中提到的一些内部工具及编译选项 </title><link>http://www.cnblogs.com/drizzlecrj/archive/2008/08/15/1243063.html</link><dc:creator>农夫三拳</dc:creator><author>农夫三拳</author><pubDate>Fri, 15 Aug 2008 05:09:00 GMT</pubDate><guid>http://www.cnblogs.com/drizzlecrj/archive/2008/08/15/1243063.html</guid><wfw:comment>http://www.cnblogs.com/drizzlecrj/comments/1243063.html</wfw:comment><comments>http://www.cnblogs.com/drizzlecrj/archive/2008/08/15/1243063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/drizzlecrj/comments/commentRss/1243063.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/drizzlecrj/services/trackbacks/1243063.html</trackback:ping><description><![CDATA[一、 内部工具<br />
.Net 为使用与开发人员提供了功能强大、种类丰富的管理与开发工具，同时他们也是.Net框架提供的服务，我们将它们列在下面，正是由于有了它们的支持.Net才变得如此强大:<br />
1. Visual Studio.NET: .NET的核心开发工具，包括微软提供的各种开发语言<br />
2. Assembly Generation Utility (al.exe): 用来建立集合的工具。它能够将资源文件或MSIL格式的文件转换为带有内容清单的集合。<br />
3. Windows Forms ActiveX Control Importer (aximp.exe): 完成COM类库中类型定义的转换，是ActiveX控件能够在Windows窗口控件中使用。<br />
4. Code Access Security Policy Utility (caspol.exe)&nbsp;在用户与机器水平上修改安全策略。<br />
5. Software Publisher Certificate Test Utility (Cert2spc.exe): 用于从X.509证书中生成软件出版说明书(SPC)。<br />
6. Certificate Manager Utility (certmgr.exe): 管理证书、证书信任列表和证书回收列表。<br />
7. Certificate Verification Utility (chktrust.exe): 检查证书签名的合法性。<br />
8. Runtime Debugger (cordbg.exe): 运行时调试器，是一个命令行程序，帮助开发人员发现和调试基于CLR的应用程序中的错误。<br />
9. Global Assembly Cache Utility (gacutil.exe): 允许浏览与操纵全局集合缓存中的程序。<br />
10. MSIL Assembler (ilasm.exe): MSIL汇编程序，协助设计与实现MSIL生成器的程序。<br />
11. MSIL Disassembler (ildasm.exe): MSIL反汇编程序，与ilasm.exe共同使用，将由MSIL代码产生的Portable Executable 文件转换为文本文件。<br />
12. Installer Utility (installutil.exe): 用来安装与卸载服务资源。<br />
13. License Compiler (lc.exe): 产生课包含在可执行二进制文件中的二进制资源文件。<br />
14. Certificate Creation Utility (makecert.exe): 生成X.509证书与用于数字签名的公用与私有密钥。<br />
15. Permissions View Utility (permview.exe): 通过一个集合浏览许可集的工具。<br />
16. Peverify Utility (peverify.exe): 检查中间语言与原数据是否符合类型安全认证要求。<br />
17. Assembly Registration Tool (RegAsm.exe): 读取集合中的元数据并加上必要注册表入口信息，使用COM客户透明地建立CLR的类。<br />
18. Services Registration Tool (RegSvcs.exe): 服务注册工具，它完成执行以下功能：装载与注册一个集合，为现有的COM+1.0应用生成、注册与安装类库。<br />
19. Resource File Generator Utility (ResGen.exe): 资源文件生成器，用来将文本文件和XML格式的资源文件转换为CLR的二进制文件。<br />
20. Secutil Utility(SecUtil.exe): 使得从集合中抽取的安全信息更加容易。<br />
21. Set Registry Utility(setreg.exe): 改变注册表中公开密钥密码系统的设置。<br />
22. Assembly Cache Viewer (shfusion.dll): 允许你使用Windows 浏览器查看与操作全局集合缓存中的内容。<br />
23. File Signing Utility (signcode.exe): 为PE(portable executable)文件做标记。赋予程序员在组件安全约束的基础上对安全性有更多的控制权。<br />
24. Shared Name Utility (Sn.exe): 帮助程序员以共享名称建立集合。<br />
25. Soapsuds Utility (SoapSuds.exe): 使用远程技术帮助你编译与Web服务相通信的客户应用。<br />
26. Isolated Storage Utility(storeadm.exe): 一种用来管理隔离存储区的命令行工具。<br />
27. Type Library Exporter(TlbExp.exe): 命令行程序，生成由集合名称指示的包含集合中公共类型定义的类库。<br />
28. Type Library Importer (TlbImp.exe): 将COM类库中的类型定义转换为在CLR中与元数据格式一致的类型定义。<br />
29. Web Service Utility (WebServiceUtil.exe): 帮助建立在ASP.NET Web服务与客户。<br />
30. Windows Forms Class Viewer (wincv.exe): 能够在某种模式下快速查找类或者类序列的信息。<br />
31. Windows Forms Designer Test Container (windes.exe): 允许开发人员测试开发出来的视窗窗体控件在设计时的行为。<br />
32. XML Schema Definition Tool (xsd.exe): XML计划定义工具。<br />
<br />
二、C#编译选项<br />
&nbsp;&nbsp;&nbsp; 我们可以灵活地使用.Net平台提供的命令行编译器的不同选项，选择不同的编译方式，从而灵活地对编译进行控制。<br />
&nbsp;&nbsp;&nbsp; 例如，如果我们希望对源文件Welcome.cs进行编译，生成名为MyWelcome.exe的可执行文件，我们可以采用这样的命令：<br />
csc/out:&nbsp;&nbsp;&nbsp; MyWelcome.exe&nbsp;&nbsp;&nbsp; Welcome.cs<br />
&nbsp;&nbsp;&nbsp; 如果我们并不需要一个可执行文件，而仅仅是希望简单地检查源文件中是否存在语法错误，则命令可以写成:<br />
csc/nooutput:&nbsp; Welcome.cs<br />
&nbsp;&nbsp;&nbsp; 如果不知道各个选项的具体含义，可以通过求助来获得：<br />
csc/?<br />
&nbsp;&nbsp;&nbsp;&nbsp; 下标按照字母顺序给出了命令行编译器csc常用的参数及其用途。更加详细的信息参阅C#联机帮助文档。<br />
<table width="100%">
    <tr>
        <th>选项 </th>
        <th>用途 </th>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl02" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl02',this);" href="http://msdn.microsoft.com/zh-cn/8a1fs1tb%28VS.80%29.aspx">@</a> </p>
        </td>
        <td>
        <p>读取响应文件以获得更多选项。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl03" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl03',this);" href="http://msdn.microsoft.com/zh-cn/x2czc4sa%28VS.80%29.aspx">/?</a> </p>
        </td>
        <td>
        <p>将用法信息显示到 stdout。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl04" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl04',this);" href="http://msdn.microsoft.com/zh-cn/1s46f83c%28VS.80%29.aspx">/addmodule</a> </p>
        </td>
        <td>
        <p>将指定的模块链接到此程序集中</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl05" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl05',this);" href="http://msdn.microsoft.com/zh-cn/b1awdekb%28VS.80%29.aspx">/baseaddress</a> </p>
        </td>
        <td>
        <p>指定要生成的库的基址。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl06" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl06',this);" href="http://msdn.microsoft.com/zh-cn/kaky3xy9%28VS.80%29.aspx">/bugreport</a> </p>
        </td>
        <td>
        <p>创建&#8220;Bug 报告&#8221;文件。如果与 /errorreport:prompt 或 /errorreport:send 一起使用，则此文件将与任何崩溃信息一起发送。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl07" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl07',this);" href="http://msdn.microsoft.com/zh-cn/h25wtyxf%28VS.80%29.aspx">/checked</a> </p>
        </td>
        <td>
        <p>使编译器生成溢出检查。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl08" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl08',this);" href="http://msdn.microsoft.com/zh-cn/w0kyekyh%28VS.80%29.aspx">/codepage</a> </p>
        </td>
        <td>
        <p>指定打开源文件时使用的代码页。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl09" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl09',this);" href="http://msdn.microsoft.com/zh-cn/8cw0bt21%28VS.80%29.aspx">/debug</a> </p>
        </td>
        <td>
        <p>发出调试信息。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl10" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl10',this);" href="http://msdn.microsoft.com/zh-cn/0feaad6z%28VS.80%29.aspx">/define</a> </p>
        </td>
        <td>
        <p>定义条件编译符号。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl11" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl11',this);" href="http://msdn.microsoft.com/zh-cn/ta1sxwy8%28VS.80%29.aspx">/delaysign</a> </p>
        </td>
        <td>
        <p>仅使用强名称密钥的公共部分对程序集进行延迟签名。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl12" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl12',this);" href="http://msdn.microsoft.com/zh-cn/3260k4x7%28VS.80%29.aspx">/doc</a> </p>
        </td>
        <td>
        <p>指定要生成的 XML 文档文件。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl13" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl13',this);" href="http://msdn.microsoft.com/zh-cn/404y0x34%28VS.80%29.aspx">/errorreport</a> </p>
        </td>
        <td>
        <p>指定如何处理内部编译器错误：prompt、send 或 none。默认值为 none。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl14" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl14',this);" href="http://msdn.microsoft.com/zh-cn/0s4tzdf2%28VS.80%29.aspx">/filealign</a> </p>
        </td>
        <td>
        <p>指定对输出文件节使用的对齐方式。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl15" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl15',this);" href="http://msdn.microsoft.com/zh-cn/d315xc66%28VS.80%29.aspx">/fullpaths</a> </p>
        </td>
        <td>
        <p>使编译器生成完全限定路径。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl16" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl16',this);" href="http://msdn.microsoft.com/zh-cn/x2czc4sa%28VS.80%29.aspx">/help</a> </p>
        </td>
        <td>
        <p>将用法信息显示到 stdout。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><strong>/incremental</strong> </p>
        </td>
        <td>
        <p>启用增量编译 [obsolete]。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl17" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl17',this);" href="http://msdn.microsoft.com/zh-cn/5b92wy0h%28VS.80%29.aspx">/keycontainer</a> </p>
        </td>
        <td>
        <p>指定强名称密钥容器。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl18" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl18',this);" href="http://msdn.microsoft.com/zh-cn/w2kyay38%28VS.80%29.aspx">/keyfile</a> </p>
        </td>
        <td>
        <p>指定强名称密钥文件。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl19" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl19',this);" href="http://msdn.microsoft.com/zh-cn/f4ckecs0%28VS.80%29.aspx">/langversion</a> </p>
        </td>
        <td>
        <p>指定语言版本模式：ISO-1 或 Default。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl20" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl20',this);" href="http://msdn.microsoft.com/zh-cn/s5bac5fx%28VS.80%29.aspx">/lib</a> </p>
        </td>
        <td>
        <p>指定要在其中搜索引用的附加目录。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl21" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl21',this);" href="http://msdn.microsoft.com/zh-cn/xawyf94k%28VS.80%29.aspx">/linkresource</a> </p>
        </td>
        <td>
        <p>将指定的资源链接到此程序集。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl22" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl22',this);" href="http://msdn.microsoft.com/zh-cn/x3eht538%28VS.80%29.aspx">/main</a> </p>
        </td>
        <td>
        <p>指定包含入口点的类型（忽略所有其他可能的入口点）。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl23" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl23',this);" href="http://msdn.microsoft.com/zh-cn/8hww4s6c%28VS.80%29.aspx">/noconfig</a> </p>
        </td>
        <td>
        <p>指示编译器不自动包含 CSC.RSP 文件。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl24" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl24',this);" href="http://msdn.microsoft.com/zh-cn/z4fh6t3y%28VS.80%29.aspx">/nologo</a> </p>
        </td>
        <td>
        <p>取消显示编译器版权信息。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl25" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl25',this);" href="http://msdn.microsoft.com/zh-cn/fa13yay7%28VS.80%29.aspx">/nostdlib</a> </p>
        </td>
        <td>
        <p>指示编译器不引用标准库 (mscorlib.dll)。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl26" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl26',this);" href="http://msdn.microsoft.com/zh-cn/7f28x9z3%28VS.80%29.aspx">/nowarn</a> </p>
        </td>
        <td>
        <p>禁用特定的警告消息</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl27" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl27',this);" href="http://msdn.microsoft.com/zh-cn/t0hfscdc%28VS.80%29.aspx">/optimize</a> </p>
        </td>
        <td>
        <p>启用/禁用优化。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl28" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl28',this);" href="http://msdn.microsoft.com/zh-cn/bw3t50f3%28VS.80%29.aspx">/out</a> </p>
        </td>
        <td>
        <p>指定输出文件名（默认值：包含主类的文件或第一个文件的基名称）。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl29" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl29',this);" href="http://msdn.microsoft.com/zh-cn/ms228625%28VS.80%29.aspx">/pdb</a> </p>
        </td>
        <td>
        <p>指定 .pdb 文件的文件名和位置。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl30" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl30',this);" href="http://msdn.microsoft.com/zh-cn/zekwfyz4%28VS.80%29.aspx">/platform</a> </p>
        </td>
        <td>
        <p>限定此代码可以在其上运行的平台：x86、Itanium、x64 或 anycpu。默认值为 anycpu。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl31" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl31',this);" href="http://msdn.microsoft.com/zh-cn/8t9te37d%28VS.80%29.aspx">/recurse</a> </p>
        </td>
        <td>
        <p>按照通配符规范，包括当前目录和子目录中的所有文件。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl32" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl32',this);" href="http://msdn.microsoft.com/zh-cn/yabyz3h4%28VS.80%29.aspx">/reference</a> </p>
        </td>
        <td>
        <p>从指定的程序集文件引用元数据。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl33" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl33',this);" href="http://msdn.microsoft.com/zh-cn/c0tyye07%28VS.80%29.aspx">/resource</a> </p>
        </td>
        <td>
        <p>嵌入指定的资源。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl34" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl34',this);" href="http://msdn.microsoft.com/zh-cn/6h25dztx%28VS.80%29.aspx">/target</a> </p>
        </td>
        <td>
        <p>使用下列四个选项之一指定输出文件的格式：<a id="ctl00_mainContentContainer_ctl35" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl35',this);" href="http://msdn.microsoft.com/zh-cn/8hz59tey%28VS.80%29.aspx">/target:exe</a>、<a id="ctl00_mainContentContainer_ctl36" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl36',this);" href="http://msdn.microsoft.com/zh-cn/e13syb43%28VS.80%29.aspx">/target:library</a>、<a id="ctl00_mainContentContainer_ctl37" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl37',this);" href="http://msdn.microsoft.com/zh-cn/58scf68s%28VS.80%29.aspx">/target:module</a> 或 <a id="ctl00_mainContentContainer_ctl38" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl38',this);" href="http://msdn.microsoft.com/zh-cn/yaks5w33%28VS.80%29.aspx">/target:winexe</a></p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl39" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl39',this);" href="http://msdn.microsoft.com/zh-cn/ct597kb0%28VS.80%29.aspx">/unsafe</a> </p>
        </td>
        <td>
        <p>允许使用<a id="ctl00_mainContentContainer_ctl40" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl40',this);" href="http://msdn.microsoft.com/zh-cn/chfa2zb8%28VS.80%29.aspx">不安全</a>代码。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl41" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl41',this);" href="http://msdn.microsoft.com/zh-cn/d5bxd1x2%28VS.80%29.aspx">/utf8output</a> </p>
        </td>
        <td>
        <p>以 UTF-8 编码格式输出编译器消息。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl42" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl42',this);" href="http://msdn.microsoft.com/zh-cn/13b90fz7%28VS.80%29.aspx">/warn</a> </p>
        </td>
        <td>
        <p>设置警告等级 (0-4)。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl43" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl43',this);" href="http://msdn.microsoft.com/zh-cn/406xhdz3%28VS.80%29.aspx">/warnaserror</a> </p>
        </td>
        <td>
        <p>将特定的警告报告为错误。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl44" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl44',this);" href="http://msdn.microsoft.com/zh-cn/2aaxe43f%28VS.80%29.aspx">/win32icon</a> </p>
        </td>
        <td>
        <p>对输出使用此图标。</p>
        </td>
    </tr>
    <tr>
        <td>
        <p><a id="ctl00_mainContentContainer_ctl45" onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl45',this);" href="http://msdn.microsoft.com/zh-cn/8f2f5x2e%28VS.80%29.aspx">/win32res</a> </p>
        </td>
        <td>
        <p>指定 Win32 资源文件 (.res)。</p>
        </td>
    </tr>
</table>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src ="http://www.cnblogs.com/drizzlecrj/aggbug/1243063.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42976/" target="_blank">[新闻]亚马逊EC2云计算计划支持Windows操作系统</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>TC 泛黄了</title><link>http://www.cnblogs.com/drizzlecrj/archive/2008/06/05/1214721.html</link><dc:creator>农夫三拳</dc:creator><author>农夫三拳</author><pubDate>Thu, 05 Jun 2008 13:04:00 GMT</pubDate><guid>http://www.cnblogs.com/drizzlecrj/archive/2008/06/05/1214721.html</guid><wfw:comment>http://www.cnblogs.com/drizzlecrj/comments/1214721.html</wfw:comment><comments>http://www.cnblogs.com/drizzlecrj/archive/2008/06/05/1214721.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/drizzlecrj/comments/commentRss/1214721.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/drizzlecrj/services/trackbacks/1214721.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 终于泛黄了，唉，还是很弱。
<img src ="http://www.cnblogs.com/drizzlecrj/aggbug/1214721.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42975/" target="_blank">[新闻]鲍尔默失望变希望 幸亏当初未收购雅虎</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Introduction to String Searching Algorithms--Rabin-Karp and Knuth-Morris-Pratt Algorithms [翻译] </title><link>http://www.cnblogs.com/drizzlecrj/archive/2008/06/03/1212755.html</link><dc:creator>农夫三拳</dc:creator><author>农夫三拳</author><pubDate>Tue, 03 Jun 2008 05:11:00 GMT</pubDate><guid>http://www.cnblogs.com/drizzlecrj/archive/2008/06/03/1212755.html</guid><wfw:comment>http://www.cnblogs.com/drizzlecrj/comments/1212755.html</wfw:comment><comments>http://www.cnblogs.com/drizzlecrj/archive/2008/06/03/1212755.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/drizzlecrj/comments/commentRss/1212755.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/drizzlecrj/services/trackbacks/1212755.html</trackback:ping><description><![CDATA[摘要: Introduction to String Searching AlgorithmsRabin-Karp and Knuth-Morris-Pratt Algorithms 【原文见： http://www.topcoder.com/tc?module=Static&amp;d1=tutorials&amp;d2=stringSearching】作者：ByTheLlamaTopcoder Mem&nbsp;&nbsp;<a href='http://www.cnblogs.com/drizzlecrj/archive/2008/06/03/1212755.html'>阅读全文</a><img src ="http://www.cnblogs.com/drizzlecrj/aggbug/1212755.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42974/" target="_blank">[新闻]微软12月举办硬件工程大会 Windows7将首次亮相</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>TopCoder C# User List</title><link>http://www.cnblogs.com/drizzlecrj/archive/2008/05/29/1210201.html</link><dc:creator>农夫三拳</dc:creator><author>农夫三拳</author><pubDate>Thu, 29 May 2008 10:26:00 GMT</pubDate><guid>http://www.cnblogs.com/drizzlecrj/archive/2008/05/29/1210201.html</guid><wfw:comment>http://www.cnblogs.com/drizzlecrj/comments/1210201.html</wfw:comment><comments>http://www.cnblogs.com/drizzlecrj/archive/2008/05/29/1210201.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/drizzlecrj/comments/commentRss/1210201.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/drizzlecrj/services/trackbacks/1210201.html</trackback:ping><description><![CDATA[<p>注: 排名不分先后，有些人会有一些备注，这些备注是我认为应当学习或者注意的东东。 名单的人以rating&gt;=1500的居多，并不完全。<br />
<br />
<font face="Verdana">Yarin&nbsp; <strong>(Network 网络流类, BigInt 大整数类)<br />
</strong><font face="Verdana">HiltonLange&nbsp; <strong>(VB user)<br />
</strong>WSX&nbsp; <strong>(无)</strong><br />
futo&nbsp; <strong>(string.Format("{0:0.00000}", r);&nbsp; static int [] VI(params int[] x) { return x; } )<br />
</strong>jthread&nbsp; <strong>(计算几何相关的类, PriorityQueue)<br />
</strong>zjq&nbsp; <strong>(Dictionary&lt;T1, T2&gt;.KeyCollection)<br />
</strong>timmac&nbsp; <strong>(打表，枚举)<br />
</strong>Larry&nbsp; <strong>(java user)<br />
</strong><span style="color: red"><font face="Verdana">aussie&nbsp;<strong> (IEnumerable , Enumerator,&nbsp; yield,&nbsp; Math.Sign , Array.ConvertAll 双重 , delegate , Predicate , Converter, </strong></font><font face="Verdana"><strong>StringComparer ) </strong></font></span></font><font face="Verdana"><br />
sjelkjd&nbsp;<strong> (line直线类, segment线段类)<br />
</strong>vanessa&nbsp; <strong>(无)<br />
</strong>aktayv&nbsp;<strong> (无)<br />
</strong>unnonouno&nbsp; <strong>(无)<br />
</strong>evgeni&nbsp; <strong>(无)<br />
</strong>zig2&nbsp; <strong>(实体类)<br />
</strong>cryst&nbsp;<strong> (无)<br />
</strong>TAG&nbsp; <strong>(System.Drawing.Rectangle, System.Drawing.Point&nbsp;, SQR, DateTime, TimeSpan)<br />
</strong>alexilic&nbsp; <strong>(无)<br />
</strong>Mojito1&nbsp; <strong>(Array.Clone() as int[], 代码紧凑，String.TrimEnd 包括参数)<br />
</strong>greatvict&nbsp; <strong>(BitArray List.FindLastIndexOf)<br />
</strong>bann-andrej&nbsp;<strong> (无)<br />
</strong>alphastream&nbsp; <strong>(hash函数, LinkedList&lt;T&gt;, double.PositiveInfinity, s.Split(" ".ToCharArray()), BitArray)<br />
</strong>superkinhluan&nbsp; <strong>(readonly, IEquatable, using Point = Pair&lt;int,int&gt;, Array.BinarySearch)<br />
</strong>int9&nbsp; <strong>(Dictionary&lt;T1, T2&gt;.TryGetValue)<br />
</strong>modenl&nbsp;<strong> (long?[,] dp, goto)</strong><br />
DNNX&nbsp; <strong>(Converter&lt;T1,T2&gt;, Compaision&lt;T&gt;)<br />
</strong>goldfinch&nbsp; <strong>(无)<br />
</strong>MRoizner&nbsp; <strong>(DateTime,&nbsp; Comparison)<br />
</strong>indifferent <strong>(实体类与题目绑定便于理解, 用bfs写dfs)<br />
</strong>redclude&nbsp; <strong>(无)<br />
</strong>sinaddcos&nbsp;<strong> (C#中C++的头)<br />
</strong>LampJinn&nbsp; <strong>(最大流)<br />
</strong>szsz&nbsp; <strong>(函数的变量名随便起, List.Contains)</strong><br />
ysn&nbsp;<strong> (Pair类)<br />
</strong>s-vladimir&nbsp; <strong>(无)<br />
</strong>Jarlax&nbsp; <strong>(yield, IEnumerable&lt;int&gt;)<br />
</strong>kanliang&nbsp; <strong>(StringBuilder)<br />
</strong>bySerge&nbsp; <strong>(无)<br />
</strong>Majce&nbsp;<strong> (无)<br />
</strong>MicroBee&nbsp;<strong> (无)<br />
</strong>TheHedgehog&nbsp; <strong>(把C#当作C++用- -)<br />
</strong>dfyz&nbsp; <strong>(SortedPermutationGenerator&lt;T&gt;, checked, try, OverflowException, bitwise, Array.FindAll, </strong></font><font face="Verdana"><strong>list.RemoveAll,list.FindAll, 分数类)<br />
</strong>NetCoderCN&nbsp; <strong>(mess code- -)<br />
</strong>fox1981&nbsp; <strong>(无)<br />
</strong>ivan.pomelo&nbsp;<strong> (Comparsion&lt;T&gt;)<br />
</strong>_vs_&nbsp; <strong>(无)<br />
</strong>serine&nbsp; <strong>(Array.ConvertAll)<br />
</strong>Apokrif&nbsp; <strong>(string.IndexofAny string.PadLeft)<br />
</strong>ibommisetty&nbsp; <strong>(PriorityQueue)<br />
</strong>abi20sg&nbsp; <strong>(Regex, delegate 语法多变)<br />
</strong>SPY_L&nbsp;&nbsp; <strong>(using X = System.Math&nbsp;, CompareTo)<br />
</strong><br />
比较喜欢看aussie的代码:-)</font></p>
</font>
<img src ="http://www.cnblogs.com/drizzlecrj/aggbug/1210201.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42973/" target="_blank">[新闻]电脑程序与12位真人聊天 “艾尔博特”骗过3人</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>TCHS SRM 1</title><link>http://www.cnblogs.com/drizzlecrj/archive/2008/04/14/1153511.html</link><dc:creator>农夫三拳</dc:creator><author>农夫三拳</author><pubDate>Mon, 14 Apr 2008 15:33:00 GMT</pubDate><guid>http://www.cnblogs.com/drizzlecrj/archive/2008/04/14/1153511.html</guid><wfw:comment>http://www.cnblogs.com/drizzlecrj/comments/1153511.html</wfw:comment><comments>http://www.cnblogs.com/drizzlecrj/archive/2008/04/14/1153511.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/drizzlecrj/comments/commentRss/1153511.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/drizzlecrj/services/trackbacks/1153511.html</trackback:ping><description><![CDATA[<span><span style="color: red"><strong><font face="Verdana">http://www.topcoder.com/tc?module=Static&amp;d1=hs&amp;d2=match_editorials&amp;d3=hs_srm1</font><br />
题解:<br />
</strong>1.&nbsp;&nbsp; <a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=6474&amp;rd=10022">SpeedRadar<br />
</a>&nbsp;&nbsp;&nbsp;&nbsp;水题<br />
2.&nbsp; &nbsp;<a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=6474&amp;rd=10022">SymbolFrequency<br />
</a>&nbsp;&nbsp;&nbsp;&nbsp;模拟<br />
3.&nbsp;&nbsp; <a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=6441&amp;rd=10022">TrotownKeeper</a><br />
i)&nbsp; &nbsp;如果直接做，可以对迷宫的四周的'.'的位置进行dfs，并进行标记，<br />
最后再用二重循环检查每一个'#'，如果与它相邻的部分超过了边界或者是已经<br />
标记过的'.',则将总的paint数目增加1<br />
ii)&nbsp;&nbsp; 比较好的做法是在迷宫的一周增加'.'，这样总的paint数目其实就是从(0,0)开始在dfs过程中<br />
碰到的'#'的数目。<strong>这个"加圈"的做法是一个经常使用的技巧。</strong></span><br />
<br />
<span style="color: #000000"><span style="color: #008000"><strong>总结:<br />
</strong>1.&nbsp; 在需要进行强制转化成double的时候，可以用*1.0或者+0.0的小技巧<br />
2.&nbsp; 在不需要下标操作的时候，foreach打字要比for少一点<br />
3.&nbsp; 通常在知道范围在'a'-'z'或者'A'-'Z'的时候，用int []要比<font style="color: #008000" face="Verdana" color="#ff0000">Dictionary&lt;char, int&gt;要方便一点<br />
</font>4.&nbsp; C#中的string 不好修改其中的元素值, 例如: string a = "China"; a[0] = 'c';<br />
5.&nbsp; 成员变量在函数调用前记得初始化, 这个在用TZTester的时候要注意<br />
<br />
</span><span style="color: #0000ff">这个算是我最近开始训练的一个标志吧，发现好久不做题，手生的不得了。刀要磨，脑也要转转~<br />
</span></span></span>
<img src ="http://www.cnblogs.com/drizzlecrj/aggbug/1153511.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42971/" target="_blank">[新闻]Mozilla发布网页开发工具实验室</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Survey over pattern string match algorithm[6 items updated &amp;&amp; to be continued]</title><link>http://www.cnblogs.com/drizzlecrj/archive/2008/03/16/1108747.html</link><dc:creator>农夫三拳</dc:creator><author>农夫三拳</author><pubDate>Sun, 16 Mar 2008 13:21:00 GMT</pubDate><guid>http://www.cnblogs.com/drizzlecrj/archive/2008/03/16/1108747.html</guid><wfw:comment>http://www.cnblogs.com/drizzlecrj/comments/1108747.html</wfw:comment><comments>http://www.cnblogs.com/drizzlecrj/archive/2008/03/16/1108747.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/drizzlecrj/comments/commentRss/1108747.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/drizzlecrj/services/trackbacks/1108747.html</trackback:ping><description><![CDATA[<font face="Verdana">1. BM算法<br />
&nbsp;<strong>R S Boyer, J S Moo re. A fast string searching algorithm. Communications of the ACM , 1977, 20 (10) : <font face="Verdana">762 - 772.</font><br />
</strong><font face="Verdana"><a href="http://www.cs.utexas.edu/~moore/publications/fstrpos.pdf"><font face="Verdana">http://www.cs.utexas.edu/~moore/publications/fstrpos.pdf</font></a><br />
</font><br />
2. QS算法&nbsp;MS算法 OM算法 <font face="Verdana">　<br />
<strong>Sunday D M. A very fast substring search algorithm [J ]. Commun ACM , 1990, 33 (8) : 132- 142.</strong></font><br />
</font><a href="http://delivery.acm.org/10.1145/80000/79184/p132-sunday.pdf?key1=79184&amp;key2=8561485021&amp;coll=GUIDE&amp;dl=GUIDE&amp;CFID=59816834&amp;CFTOKEN=49045422">http://delivery.acm.org/10.1145/80000/79184/p132-sunday.pdf?key1=79184&amp;key2=8561485021&amp;coll=GUIDE&amp;dl=GUIDE&amp;CFID=59816834&amp;CFTOKEN=49045422</a> <br />
3. Hash判断一个串是否为另外一个串的子串&nbsp;&nbsp;&nbsp; <br />
<strong>Harrison, M.C. Implementation of the substring test by hashing , Comm. ACM , 1971, 777-779<br />
</strong><a href="http://portal.acm.org/ft_gateway.cfm?id=362934&amp;type=pdf&amp;coll=GUIDE&amp;dl=&amp;CFID=59935127&amp;CFTOKEN=56312585">http://portal.acm.org/ft_gateway.cfm?id=362934&amp;type=pdf&amp;coll=GUIDE&amp;dl=&amp;CFID=59935127&amp;CFTOKEN=56312585</a> <br />
<br />
4. DFSA算法<br />
<strong><font face="Verdana">Aho AV , Corasick M J. Efficient string matching: an aid to bibliographic search [J ]. Communication of the ACM , 1975, 18 (6) : 333～ 340</font><br />
</strong><a href="http://portal.acm.org/ft_gateway.cfm?id=360855&amp;type=pdf&amp;coll=GUIDE&amp;dl=GUIDE,&amp;CFID=60102753&amp;CFTOKEN=28811006">http://portal.acm.org/ft_gateway.cfm?id=360855&amp;type=pdf&amp;coll=GUIDE&amp;dl=GUIDE,&amp;CFID=60102753&amp;CFTOKEN=28811006</a> <br />
5. Rabin-Karp 算法<br />
<span class="a"><strong>RM Karp, MO Rabin - An Efficient randomized pattern-matching algorithms,&nbsp; JRD. </strong><span class="mediumb-text"><strong>IBM, 1987,249-260<br />
</strong></span></span><a href="http://www.research.ibm.com/journal/rd/312/ibmrd3102P.pdf">http://www.research.ibm.com/journal/rd/312/ibmrd3102P.pdf</a> <br />
<br />
6. FS算法<br />
<font face="Verdana"><strong>FAN Jang2jong, SUKeh2yih. An efficient algorithm for match multiple patterns [ J ]. IEEE Trans on Knowledge and Data Engineering, 1993, 5 (2) : 339- 351.<br />
<a href="http://ieeexplore.ieee.org/iel3/69/5754/00219740.pdf?tp=&amp;isnumber=&amp;arnumber=219740">http://ieeexplore.ieee.org/iel3/69/5754/00219740.pdf?tp=&amp;isnumber=&amp;arnumber=219740</a></strong></font>
<img src ="http://www.cnblogs.com/drizzlecrj/aggbug/1108747.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42970/" target="_blank">[新闻]经典软件十五年深情回眸</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>图象处理基本算法[整理]</title><link>http://www.cnblogs.com/drizzlecrj/archive/2008/02/25/1077494.html</link><dc:creator>农夫三拳</dc:creator><author>农夫三拳</author><pubDate>Mon, 25 Feb 2008 12:48:00 GMT</pubDate><guid>http://www.cnblogs.com/drizzlecrj/archive/2008/02/25/1077494.html</guid><wfw:comment>http://www.cnblogs.com/drizzlecrj/comments/1077494.html</wfw:comment><comments>http://www.cnblogs.com/drizzlecrj/archive/2008/02/25/1077494.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/drizzlecrj/comments/commentRss/1077494.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/drizzlecrj/services/trackbacks/1077494.html</trackback:ping><description><![CDATA[<p><font face="Verdana"><br />
<strong>1)</strong>将256*256分辨率的图像变为128*128分辨率可以将源图像划分成2*2的子图像块,然后将2*2的</font></p>
<p><font face="Verdana">子图像块的所有像素颜色均按照F(i,j)的颜色值进行设定，达到降低分辨率的目的。<br />
如:<br />
F(i,j)&nbsp;&nbsp;&nbsp; F(i,j+1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F(i,j)&nbsp; F(i,j) <br />
F(i+1,j)&nbsp; F(i+1,j+1)&nbsp;&nbsp; 变成&nbsp;&nbsp; F(i,j)&nbsp; F(i,j)<br />
（同理，256*256分辨率的图像变成64*64分辨率，只需要划分成4*4即可，以此类推。）<br />
<br />
<strong>2)</strong> R单色, G单色,B单色化图像，只需要将图像的每一个像素中的相应的R, G, B值取出，然后利用类似<br />
(R,R,R),(G,G,G),(B,B,B)的像素重新绘制即可。<br />
<br />
<strong>3)</strong> 彩色图像的RGB和亮度Y，色差I，信号值Q的关系<br />
| Y |&nbsp;&nbsp;&nbsp; |0.31&nbsp; 0.59&nbsp; 0.11&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; | R |<br />
| I&nbsp;| =&nbsp; |0.60 -0.28&nbsp; -0.32 | * | G |<br />
|Q |&nbsp;&nbsp;&nbsp;&nbsp; |0.21&nbsp; -0.52 -0.31 |&nbsp;&nbsp;&nbsp; | B |<br />
<br />
即&nbsp; Y = 0.31R + 0.59G+0.11B<br />
&nbsp;&nbsp;&nbsp;&nbsp; I&nbsp; =&nbsp;0.60R - 0.28G - 0.32B<br />
&nbsp;&nbsp;&nbsp;&nbsp; Q = 0.21R - 0.52B - 0.31B<br />
<br />
<strong>4)</strong>&nbsp; <strong>彩色图像的逆反处理：</strong> 将对应的(R, G, B)像素替换成(255 - R, 255 - G, 255 - B)<br />
&nbsp;&nbsp;&nbsp;&nbsp; <strong>彩色图像的平滑处理:</strong>&nbsp;&nbsp; 将一个图片每一个像素的颜色由其相邻的n*n个像素的平均值来替代。例如，将一个3*3的点阵，设带平滑的像素为f(i, j),平滑后为g(i, j)，那么<br />
f(i-1,j-1)&nbsp; f(i-1,j)&nbsp; f(i-1,j+1)<br />
f(i,j-1)&nbsp;&nbsp;&nbsp;&nbsp; f(i,j)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f(i,j+1)<br />
f(i+1,j-1) f(i+1,j)&nbsp; f(i+1,j+1)<br />
<br />
g(i,j)=( f(i-1,j-1) + f(i-1,j) + f(i-1,j+1) + f(i,j-1) + f(i,j) + f(i,j+1) + f(i+1,j-1) + f(i+1,j) + f(i+1,j+1) ) / 9<br />
<br />
这里要注意的是对于边缘的像素的情况，防止越界。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>彩色图像的霓虹处理:</strong>&nbsp;&nbsp; 同样以上面的3*3的点阵为例，目标像素g(i,j)应当以f(i,j)与f(i,j+1)，f(i,j)与f(i+1,j)的梯度作为R,G,B分量，我们不妨设f(i,j)的RGB分量为(r1, g1, b1), f(i,j+1)为(r2, g2, b2), f(i+1,j)为(r3, g3, b3), g(i, j)为(r, g, b),那么结果应该为<br />
r = 2 * sqrt( (r1 - r2)^2 + (r1 - r3)^2 )<br />
g = 2 * sqrt( (g1 - g2)^2 + (g1 - g3)^2 )<br />
b&nbsp;= 2 * sqrt( (b1 - b2)^2 + (b1 - b3)^2 )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>彩色图像的锐化处理:</strong>&nbsp;&nbsp;设f(i,j)像素为(r1, g1, b1) , f(i-1,j-1)像素为(r2,g2,b2), g(i,j)像素为(r,g,b),则<br />
r = r1 + 0.25 * |r1 - r2|<br />
g = g1 + 0.25 * |g1 - g2|<br />
b = b1 + 0.25 * |b1 - b2|<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>彩色图像的浮雕处理:</strong>&nbsp;&nbsp;g(i, j) = f(i, j) - f(i - 1, j) + 常数&nbsp;， 这里的常数通常选作128<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>彩色图像的镶嵌处理:</strong>&nbsp;&nbsp;与<strong>彩色图像的平滑处理</strong>类似，但是不同的地方在于3*3的目标像素点都取作g(i,j)，而不是另外的再去取所在矩阵像素的平均值。<br />
&nbsp;&nbsp;&nbsp;&nbsp; <strong>彩色图像的灰度处理:</strong>&nbsp;&nbsp;r = r1 / 64 * 64&nbsp; g = g1 / 64 * 64&nbsp; b = b1 / 64 * 64&nbsp; 注意这里的除法是程序设计当中的整数除法。<br />
<br />
<strong>5)</strong> 图象的几何变换：平移，缩放，旋转等均于解析几何当中的保持一致。<br />
<br />
<strong>6)</strong>&nbsp;图象的滤波处理<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">● </span>卷积滤波 原理是 y(n1, n2)=<span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">∑</span><span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">∑</span>x(m1,m2)h(n1-m1,n2-m2)&nbsp; (两个求和符号的范围分别是&nbsp;m1:0~N m2:0~N)<br />
其中x(m1,m2)为输入图像信号,h(n1-m1,n2-m2)为滤波系统对单位采样序列<span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">&#948;</span>(n1,n2)的响应。 <br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&nbsp;&nbsp; ⊙低通滤波&nbsp; 一般而言，图像中的噪声频谱位于空间频率较高的区域，空间域低通滤波用于平滑噪声。常用低通滤波的<br />
</span><font face="宋体">h(n1, n2) 的3*3阵列如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1/9&nbsp;&nbsp; 1/9&nbsp;&nbsp; 1/9<br />
</font>h(n1, n2) =&nbsp;&nbsp; 1/9&nbsp;&nbsp;&nbsp; 1/9&nbsp;&nbsp; 1/9<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1/9&nbsp;&nbsp;&nbsp; 1/9&nbsp;&nbsp;&nbsp; 1/9<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1/10&nbsp;&nbsp; 1/10&nbsp;&nbsp; 1/10<br />
h(n1, n2) =&nbsp;&nbsp; 1/10&nbsp;&nbsp;&nbsp; 2/10&nbsp;&nbsp; 1/10<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1/10&nbsp;&nbsp;&nbsp; 1/10&nbsp;&nbsp;&nbsp; 1/10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1/16&nbsp;&nbsp; 1/8&nbsp;&nbsp; 1/16<br />
h(n1, n2) =&nbsp;&nbsp; 1/8&nbsp;&nbsp;&nbsp;&nbsp;1/4&nbsp;&nbsp; 1/8<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1/16&nbsp;&nbsp;&nbsp; 1/8&nbsp;&nbsp;&nbsp; 1/16<br />
采用5*5阵列低通滤波h(n1,n2)如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1/35&nbsp; 1/35&nbsp; 1/35&nbsp; 1/35&nbsp; 1/35<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1/35&nbsp; 2/35&nbsp; 2/35&nbsp; 2/35&nbsp; 1/35<br />
h(n1, n2)&nbsp; =&nbsp;&nbsp; 1/35&nbsp; 2/35&nbsp; 3/35&nbsp; 2/35&nbsp; 1/35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1/35&nbsp; 2/35&nbsp; 2/35&nbsp; 2/35&nbsp; 1/35&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1/35&nbsp; 1/35&nbsp; 1/35&nbsp; 1/35&nbsp; 1/35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp; ⊙高通滤波&nbsp;&nbsp; 空域高通滤波是对图像的低频分量进行拟制，让图像的高频分量无损耗或者低损耗的通过。空域高通滤波常用的h(n1,n2)的如下:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp; -1&nbsp;&nbsp; 0<br />
h(n1, n2) =&nbsp; -1&nbsp;&nbsp; 5&nbsp;&nbsp; -1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; -1&nbsp;&nbsp; 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1&nbsp; -1&nbsp;&nbsp; -1<br />
h(n1, n2) =&nbsp; -1&nbsp;&nbsp;&nbsp;9&nbsp;&nbsp; -1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1&nbsp;&nbsp; -1&nbsp;&nbsp; -1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp; -2&nbsp;&nbsp; 1<br />
h(n1, n2) =&nbsp; -2&nbsp;&nbsp; 5&nbsp;&nbsp; -2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; -2&nbsp;&nbsp; 1<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">● </span>增强处理&nbsp;&nbsp;<br />
&nbsp; ⊙&nbsp;&nbsp; 水平增强&nbsp; 增强图像水平方向线条也是一种高通滤波。水平增强的h(n1, n2)的例子如下:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 0<br />
h(n1, n2) =&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1&nbsp; 2&nbsp;&nbsp;-1<br />
&nbsp; ⊙&nbsp;&nbsp; 垂直增强&nbsp; 增强图像垂直方向线条也是一种高通滤波。水平增强的h(n1, n2)的例子如下:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 0<br />
h(n1, n2) =&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1&nbsp;&nbsp; 0&nbsp;&nbsp; 0<br />
&nbsp; ⊙&nbsp;&nbsp; 水平垂直增强&nbsp; 水平垂直增强图像也是一种高通滤波。水平增强的h(n1, n2)的例子如下:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1&nbsp;&nbsp;&nbsp;-1&nbsp;&nbsp; -1<br />
h(n1, n2) =&nbsp;&nbsp;-1&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1&nbsp;&nbsp;&nbsp;-1&nbsp;&nbsp; -1<br />
<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;</span>结构滤波&nbsp;&nbsp;<br />
&nbsp;⊙&nbsp;&nbsp; 并联型结构滤波<br />
结构如图:<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/drizzlecrj/parallel.jpg" border="0" /><br />
例如，当<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 0<br />
h1(n1, n2) =&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp; 2&nbsp;&nbsp;-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 0<br />
h2(n1, n2) =&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp;&nbsp; 0&nbsp;&nbsp; 0<br />
则h(n1, n2)为<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 0<br />
h(n1, n2) =&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1&nbsp;&nbsp; 2&nbsp;&nbsp; -1<br />
&nbsp;⊙&nbsp;&nbsp; 串联型结构滤波<br />
结构如图:<br />
<img height="46" alt="" src="http://www.cnblogs.com/images/cnblogs_com/drizzlecrj/series.jpg" width="371" border="0" /><br />
<br />
例如，当<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 0<br />
h1(n1, n2) =&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp; 2&nbsp;&nbsp;-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 0<br />
h2(n1, n2) =&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp;&nbsp; 0&nbsp;&nbsp; 0<br />
则h(n1, n2)为<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;-2&nbsp;&nbsp; 1<br />
h(n1, n2) =&nbsp;&nbsp;-2&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;-2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;1&nbsp;&nbsp; -2&nbsp;&nbsp; 1<br />
<br />
<strong>7)</strong>&nbsp;图象的切换特效处理<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;</span>上部和下部对接显示<br />
只需要不断的同时描绘对称的上部和下部的一行像素即可<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;左</span>部和右部对接显示<br />
只需要不断的同时描绘对称的左部和右部的一列像素即可<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;四边向中央</span>显示<br />
只需要不断的同时等进阶的描绘四边直至描绘到中心点即可<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;中央向四边</span>显示<br />
只需要不断的从中心点同时等进阶的描绘四边直至描绘到边缘即可<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;四角向中心</span>显示<br />
从左上角，右下角分别同时沿着主对角线等进阶的描绘自己所在像素的行，列像素直至中心<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;水平删条</span><br />
设定分割长度L， 然后分别从高度为L, 2L, 3L ... 处等进阶的描绘行像素，显然这里进阶所需描绘高度为L<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;垂直删条</span><br />
设定分割长度L， 然后分别从宽度为L, 2L, 3L ... 处等进阶的描绘列像素，显然这里进阶所需描绘宽度为L<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;由左向右（由右向左）<br />
分别从左至右(从右至左)不断的描绘列像素直至边缘<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;由上向下（由下向上）<br />
分别由上向下（由下向上）不断的描绘行像素直至边缘<br />
</span><br />
<strong>8)</strong>&nbsp;边缘探测<br />
</span>在图像测量，模式识别时，从图像中抽出线条，检测出图像边缘或者抽出图像轮廓是最常用的操作。迄今为止，已经出现了许多成熟的算法。例如微分算法，掩模算法等。在微分算法中，常使用N*N的像素块，例如3*3或者4*4。3*3的像素块如下，<br />
f(i-1,j-1)&nbsp; f(i-1,j)&nbsp; f(i-1,j+1)<br />
f(i,j-1)&nbsp;&nbsp;&nbsp;&nbsp; f(i,j)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f(i,j+1)<br />
f(i+1,j-1) f(i+1,j)&nbsp; f(i+1,j+1)<br />
我们不妨设f(i,j)为待处理的像素，而g(i, j)为处理后的像素。<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;Roberts算子<br />
</span>g(i, j) = sqrt( (f(i, j) - f(i + 1, j))^2 + (f(i + 1, j) - f(i, j + 1))^2 )<br />
或者<br />
g(i, j) = |f(i,j) - f(i + 1,j)| + |f(i+1,j) - f(i,j+1)|<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;Sobel算子</span><br />
<font face="Verdana">对数字图像的每一个像素f(i,j),考察它的上、下、左、右邻域灰度的加权值，把各方向上(0度、45度、90度、135度)的灰度值加权之和作为输出，可以达到提取图像边缘的效果。<br />
即 g(i,j) = fxr + fyr, 其中<br />
fxr = f(i-1,j-1)+2*f(i-1,j)+f(i-1,j+1)-f(i+1,j-1)-2*f(i+1,j)-f(i+1,j+1)<br />
fyr = f(i-1,j-1)+2*f(i,j-1)+f(i+1,j-1)-f(i-1,j+1)-2*f(i,j+1)-f(i+1,j+1)</font><br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;Laplace算子<br />
</span><font face="Verdana">Laplace算子是一种二阶微分算子。它有两种形式:4邻域微分算子和8邻域微分算子。<br />
</font></p>
<p><font face="Verdana"></font>&nbsp;⊙&nbsp;&nbsp; 4邻域微分<br />
g(i,j)=|4*f(i,j)-f(i,j-1)-f(i-1,j)-f(i+1,j)-f(i,j+1)|<br />
&nbsp;⊙&nbsp;&nbsp; 8邻域微分<br />
g(i,j)=|8*f(i,j)-f(i,j-1)-f(i-1,j)-f(i+1,j)-f(i,j+1)-f(i-1,j-1)-f(i-1,j+1)-f(i+1,j-1)-f(i+1,j+1)|<br />
<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;其他常用算子<br />
&nbsp;⊙&nbsp;&nbsp; 右下边缘抽出<br />
</span>采用3*3算子时，表达式为<br />
g(i,j)=|-2*f(i,j-1)-2*f(i-1,j)+2*f(i+1,j)+2*f(i,j+1)|<br />
&nbsp;⊙&nbsp;&nbsp; prewitt 边缘探测样板算子<br />
prewitt算子是一个边缘模板算子，由八个方向的样板组成，能够在0度，45度，90度，135度，180度，225度角<br />
等八个方向检测边缘。8个3*3边缘模板及方向如下：<br />
90度角:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 45度角:<br />
1&nbsp;&nbsp; 1&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-1&nbsp; -1&nbsp; -1<br />
1&nbsp; -2&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; -2&nbsp;&nbsp; 1<br />
-1 -1 -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; 1&nbsp;&nbsp; 1<br />
0度角:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 315度角:<br />
-1&nbsp;&nbsp; 1&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; 1&nbsp;&nbsp; -1<br />
-1&nbsp; -2&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; -2&nbsp;&nbsp; -1<br />
-1&nbsp;&nbsp; 1&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; 1&nbsp;&nbsp; -1<br />
270度角：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 225度角:<br />
1&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp;&nbsp; -1&nbsp; 1<br />
-1&nbsp; -2 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp;&nbsp; -2&nbsp;&nbsp; 1<br />
-1&nbsp;-1&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; 1<br />
180度角：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 135度角：<br />
1&nbsp;&nbsp; 1&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; -1&nbsp;&nbsp; -1<br />
1&nbsp; -2&nbsp; -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;-2&nbsp;&nbsp; -1<br />
1&nbsp; -1&nbsp;&nbsp;-1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />
3*3时表达式如下:<br />
A1*f(i-1,j-1)&nbsp;&nbsp;&nbsp;&nbsp; A8*f(i,j-1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A7*f(i+1,j-1)<br />
A2*f(i-1,j)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -2*f(i,j)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A6*f(i+1, j)<br />
A3*f(i-1,j+1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A4*f(i,j+1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A5*f(i+1,j+1)<br />
g(i,j)=|-2*f(i,j)+A8*f(i,j-1)+A1*f(i-1,j-1)+A2*f(i-1,j)+A3*f(i-1,j+1)+A4*f(i,j+1)+A5*f(i+1,j+1)+A6*f(i+1,j)+A7*f(i+1,j-1)|<br />
在程序设计中，依次用样板去检测图像，与被检测区域最为相似的样板给出最大值，用该最大值作为算子的输出值。<br />
&nbsp;⊙&nbsp;&nbsp; Robinson算子<br />
Robinson算子是一个模板算子，由八个方向的样板组成，能够在0度，45度，90度，135度，180度，225度角<br />
等八个方向检测边缘。8个3*3边缘模板及方向如下：<br />
90度角:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 45度角:<br />
1&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 1&nbsp; 2<br />
0&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp;&nbsp;0&nbsp;&nbsp; 1<br />
-1 -2 -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-2&nbsp;&nbsp;-1&nbsp;&nbsp; 0<br />
0度角:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 315度角:<br />
-1&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-2&nbsp;-1&nbsp;&nbsp; 0<br />
-2&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1&nbsp;&nbsp;0&nbsp;&nbsp; 1<br />
-1&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; 1&nbsp;&nbsp; 2<br />
270度角：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 225度角:<br />
-1&nbsp;&nbsp;-2&nbsp;&nbsp;-1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; -1&nbsp; -2<br />
0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; -1<br />
1&nbsp;&nbsp;&nbsp;2&nbsp; &nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; 0<br />
180度角：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 135度角：<br />
1&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp; -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp; 1&nbsp;&nbsp; 0<br />
2&nbsp;&nbsp;0 &nbsp;-2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;0&nbsp; -1<br />
1&nbsp;&nbsp;0&nbsp;&nbsp;-1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; -1&nbsp; -2<br />
使用方法与prewitt算子一样。<br />
⊙&nbsp;&nbsp; Kirsch算子<br />
Kirsch算子是一个模板算子，由八个方向的边缘样板组成，能够在0度，45度，90度，135度，180度，225度角<br />
等八个方向检测边缘。8个3*3边缘模板及方向如下：<br />
90度角:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 45度角:<br />
5&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp; 5<br />
-3&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp; 5<br />
-3 -3 -3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-3&nbsp;&nbsp; -3&nbsp;&nbsp; -3<br />
0度角:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 315度角:<br />
-3&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-3&nbsp;-3&nbsp;&nbsp; -3<br />
-3&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -3&nbsp;&nbsp;0&nbsp;&nbsp; 5<br />
-3&nbsp;&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-3&nbsp;&nbsp;5&nbsp;&nbsp; 5<br />
270度角：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 225度角:<br />
5&nbsp;&nbsp; 5&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp;-3&nbsp; -3<br />
5&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5 &nbsp;&nbsp;0&nbsp;&nbsp; -3<br />
-3&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp; -3<br />
180度角：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 135度角：<br />
5&nbsp;&nbsp;&nbsp;-3&nbsp;&nbsp; -3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp; -3<br />
5&nbsp;&nbsp; 0 &nbsp;-3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;0&nbsp; -3<br />
5&nbsp;&nbsp;-3&nbsp;&nbsp;-3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-3&nbsp; -3&nbsp; 3<br />
使用方法与prewitt算子一样。<br />
⊙&nbsp;&nbsp; Smoothed算子<br />
Smoothed算子是一个3*3的算子，设<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |-1&nbsp; 0&nbsp; 1|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |1&nbsp; 1&nbsp; 1|<br />
Dx = |-1&nbsp; 0&nbsp; 1|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dy = |0&nbsp; 0&nbsp; 0|<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |-1&nbsp; 0&nbsp; 1|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |-1 -1 -1|<br />
则&nbsp; D = sqrt(Dx^2 + Dy^2) 或者 D = |Dx| + |Dy|<br />
或 Dx(i, j) = f(i-1,j+1)+f(i,j+1)+f(i+1,j+1)-f(i-1,j-1)-f(i,j-1)-f(i+1,j-1)<br />
&nbsp;&nbsp; Dy(i,j) = f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)-f(i+1,j-1)-f(i+1,j)-f(i+1,j+1)<br />
<br />
<strong>9)</strong>&nbsp;灰度图像处理<br />
所谓灰度处理是根据单色图像的灰度对输出图像的灰度进行再定义、以改善图像的对比度。单色图像的灰度有256级、128级、64级等，下面均以256级单色图像举例。<br />
我们不妨设源图像的灰度值为f(i,j),处理后的灰度值为g(i,j)<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;逆反处理<br />
与彩色图像的逆反处理一样: g(i,j) = 255 - f(i,j)<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;灰度级切换<br />
灰度级切换的输入、输出灰度值对应关系如下:<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/drizzlecrj/gray_switch.jpg" border="0" /><br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;增大对比度<br />
</span>输入的灰度值越高，对应的输出灰度值越低。灰度值减少，图像变暗，从而使对比度增加。<br />
<img height="198" alt="" src="http://www.cnblogs.com/images/cnblogs_com/drizzlecrj/increase_contrast.jpg" width="246" border="0" /><br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;减小对比度</span><br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/drizzlecrj/decrease_contrast.jpg" border="0" /><br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;改善对比度<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/drizzlecrj/improve_contrast.jpg" border="0" /><br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;增强对比度</span><br />
<img height="270" alt="" src="http://www.cnblogs.com/images/cnblogs_com/drizzlecrj/enhance_contrast.jpg" width="304" border="0" /><br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;局部滤波处理<br />
局部滤波处理是指利用3*3的图像块内的像素的颜色值对当前像素进行设定的一种图像处理技术。<br />
&nbsp;⊙&nbsp;&nbsp; 平均值滤波<br />
与彩色图像平滑处理类似。<br />
g(i,j)=( f(i-1,j-1) + f(i-1,j) + f(i-1,j+1) + f(i,j-1) + f(i,j) + f(i,j+1) + f(i+1,j-1) + f(i+1,j) + f(i+1,j+1) ) / 9<br />
这里要注意的是对于边缘的像素的情况，防止越界。<br />
&nbsp;⊙&nbsp;&nbsp; 最小值滤波<br />
最小值滤波是指在图像中以当前像素f(i,j)为中心切出一个N*M（例如3*3）像素组成的图像块，g(i,j)取图像块中灰度值中的最小值<br />
&nbsp;⊙&nbsp;&nbsp; 最大值滤波<br />
最大值滤波是指在图像中以当前像素f(i,j)为中心切出一个N*M（例如3*3）像素组成的图像块，g(i,j)取图像块中灰度值中的最大值<br />
&nbsp;⊙&nbsp;&nbsp; 中值滤波<br />
中值滤波是指在图像中以当前像素f(i,j)为中心切出一个N*M（例如3*3）像素组成的图像块，g(i,j)取图像块中所有灰度排序后序列的中间值</span></span></span></span></p>
<p><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><strong>10)</strong>&nbsp;灰度图像处理<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;灰度图像的二值化<br />
&nbsp;⊙&nbsp;&nbsp; 灰度图像直方图<br />
对于每个灰度值，求出在图像中具有该灰度值的像素数的图形叫做灰度直方图。。灰度直方图是灰度级的函数，描述图像中具有相同灰度像素的个数。灰度直方图的横坐标是灰度级，纵坐标是该灰度出现的频率（即像素的个数）。直方图的用途主要是给出了一个简单可见的指示，用来判断一幅图像是否合理的利用了全部被允许的灰度级范围。一般一幅数字图像应该利用全部或几乎全部可能的灰度级范围。一般一幅数字图像应该利用全部或几乎全部可能的灰度级，否则增加了量化间隔。一旦被数字化图像的级数小于255，丢失的信息将不能恢复。如果图像具有超出数字量化器所能处理的范围的亮度，则这些灰度级将简单的置为0或255，由此将在直方图的一端或两端产生尖峰。灰度图像直方图具有直方图的一些统计特征参量，包括了灰度最大值，灰度最小值，均值和标准差。<br />
&nbsp;⊙&nbsp;&nbsp; 阙值计算和图像二值化<br />
图像二值化的阙值处理方式为:<br />
g(i,j) = 1;&nbsp;&nbsp; f(i,j)&gt;=t<br />
g(i,j) = 0;&nbsp;&nbsp; f(i,j)&lt;t<br />
通常，用g(i,j)=1表示图像，用g(i,)=0表示背景。确定t的方法叫做阙值选择。<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;灰度图像的二值化算法</span><br />
⊙ 类判别法寻找阙值的步骤：<br />
(1) 计算输入图像的灰度级直方图(用灰度级的概率函数PHS(i)来表示)<br />
(2)&nbsp;计算灰度均值(Ave)&nbsp; Ave = sigma((i - 1)*Phs(i))&nbsp; i: 0-&gt;255<br />
(3) 计算灰度类均值(Aver(k))和类直方图和(W(k))<br />
Aver(k) = sigma((i+1)*Phs(i))&nbsp; i: 0-&gt;k<br />
W(k)&nbsp;= sigma(Phs(i)) i: 1-&gt;k<br />
（4）计算类分离指标<br />
Q(k)={[Ave*W(k)-Aver(k)]^2)}/[W(k)*(1-W(k))]}<br />
(5) 求使Q最大的k&nbsp; 最佳阙值: T = k - 1<br />
⊙ 灰度级切片法<br />
<img height="182" alt="" src="http://www.cnblogs.com/images/cnblogs_com/drizzlecrj/gray_cut.jpg" width="294" border="0" originwidth="327" originheight="226" /><br />
将输入图像的某一灰度级范围内的所有像素全部置为0（黑），其余灰度级的所有像素全部置为255（白），则生成黑白<br />
二值图像。<br />
⊙ 等灰度片二值化<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/drizzlecrj/samegray_cut.jpg" border="0" /><br />
将输入图像在某两个等宽的灰度级范围内的所有像素全部置为0（黑），其余灰度级的所有像素全部置为255（白），则生成黑白二值图像。<br />
⊙ 线性二值化<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/drizzlecrj/linear_bin.jpg" border="0" /><br />
将输入图像在某一灰度级内的所有像素全部置为0（黑），其余灰度级的所有像素全部置为原值的1/2，则生成黑白二值图像，并将图像与背景分离。<br />
<br />
<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">●&nbsp;二值图像处理</span><br />
<font face="Verdana">二值图像处理是指将二值化的图像进行某种修正，使之更适合于图像测量。二值图像处理包括以下操作:<br />
<strong>膨胀</strong>&nbsp; 使粒子变大。对图像进行膨胀处理之后再进行收缩处理，则可以修正图像的凹槽<br />
<strong>收缩</strong>&nbsp; 使粒子变小。对图像进行收缩处理之后再进行膨胀处理，则可以修正图像的凸槽<br />
<strong>清除孤立点</strong> 清除由一个像素构成的对象以及修正由一个像素构成的孔。<br />
<strong>清除粒子</strong>&nbsp; 清除任意面积以下的对象<br />
<strong>清除超大粒子</strong>&nbsp; 清除任意面积以上的对象<br />
<strong>洞穴填充</strong>&nbsp; 填充任意范围</font><br />
⊙ <font face="Verdana">4邻域收缩<br />
<font face="Verdana">4邻域收缩的原理是，在3*3的图像块中，如果当前处理像素f(i,j)为0，则其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j)均置255。</font><br />
⊙ <font face="Verdana">8邻域收缩</font><br />
<font face="Verdana">8邻域收缩的原理是，在3*3的图像块中，如果当前处理像素f(i,j)为0，则其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j),f(i-1,j-1),f(i+1,j-1),f(i-1,j+1),f(i+1,j+1)均置255。</font><br />
⊙ <font face="Verdana">4邻域膨胀<br />
<font face="Verdana"><font face="Verdana">4邻域膨胀的原理是，在3*3的图像块中，如果当前处理像素f(i,j)为1，则其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j)均置1。</font></font><br />
⊙ <font face="Verdana">8邻域膨胀</font><font face="Verdana"><font face="Verdana"><br />
8邻域膨胀的原理是，在3*3的图像块中，如果当前处理像素f(i,j)为1，则其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j),f(i-1,j-1),f(i+1,j-1),f(i-1,j+1),f(i+1,j+1)均置1。<br />
</font></font></font>⊙ <font face="Verdana"><font face="Verdana">8邻域清除孤立点</font></font><br />
<font face="Verdana">8邻域清除孤立点的原理是，在3*3的图像块中，如果当前处理像素f(i,j)为1，而其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j),f(i-1,j-1),f(i+1,j-1),f(i-1,j+1),f(i+1,j+1)均为0时，当前处理像素f(i,j)为0。</font><br />
⊙ <font face="Verdana"><font face="Verdana">4邻域清除孤立点</font></font><br />
<font face="Verdana">4邻域清除孤立点的原理是，在3*3的图像块中，如果当前处理像素f(i,j)为1，而其相邻的像素f(i,j+1),f(i,j-1),f(i-1,j),f(i+1,j均为0时，当前处理像素f(i,j)为0。</font><br />
<br />
<br />
<br />
</font></span></span></span></span></span></font></p>
 <img src ="http://www.cnblogs.com/drizzlecrj/aggbug/1077494.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42969/" target="_blank">[新闻]MySpace推自助广告平台MyAds</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>