【youcans 的 OpenCV 例程200篇】131. 形态学重建之竖线字符提取

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中


【youcans 的 OpenCV 例程200篇】131. 形态学重建之竖线字符提取

4. 形态学图像重建

形态学重建的核心是测地膨胀和测地腐蚀。

图像的形态学重建涉及两幅图像和一个结构元:图像 F 是标记,包含重建的起点;图像 G 是模板,用来约束重建;结构元 B 定义连通性,通常是全 1 的 3*3 陈列。

在二值图像中,测地腐蚀或测地膨胀是将腐蚀或膨胀结果与模板图像 G 进行交集运算(与)或并集运算(或),在灰度图像中的推广则是以求最大值、最小值来取代二值的与或操作。

简单地说,测地膨胀和测地腐蚀就是有条件的膨胀和腐蚀。膨胀或腐蚀结果与模板图像进行交集或并集运算,从而对膨胀或腐蚀操作施加了特定的约束。


4.2 重建开运算

开运算是先腐蚀后膨胀的过程,腐蚀会删除小目标,而膨胀会恢复保留的目标的形状,但是简单地膨胀被腐蚀的图像并不总能恢复原图像。

图像 F 的大小为 n 的重建开运算定义为,F 的大小为 n 的腐蚀性对于 F 的膨胀重建:
OR(n)(F)=RFD(F⊖nB)(F⊖nB)=((...((F⊖B)⊖B)...)⊖B)O_R^{(n)} (F) = R_F^D (F \ominus nB)\\ (F \ominus nB) = ((...((F \ominus B)\ominus B)...)\ominus B) OR(n)(F)=RFD(FnB)(FnB)=((...((FB)B)...)B)

首先 B 对 F 腐蚀,然后采用 F 的腐蚀结果作为膨胀重建的标记。

重建开运算能精确地恢复腐蚀后所保留目标的形状,恢复精度取决于目标形状与所用结构元的相似性。通常,腐蚀过程中使用的结构元取决与目标的形状特性,而重建过程(膨胀恢复)中使用的结构元被设计为规定的连通性,如 全 1 的 3*3 核。

重建开运算中,图像 F 是标记,包含重建的起点;图像 F 本身被用作模板,用来约束重建。


例程 10.21:基于形态学重建的竖线字符提取(清除)

本例是基于重建开运算的提取竖线字符的图像恢复,也可以同时获得其对偶结果,即清除竖线字符的图像恢复。
(1)用反映目标形状特征的结构元对原图像 F 进行腐蚀运算,例如提取竖线时使用 h*1 像素的结构元(h 为竖线的特征高度),得到腐蚀图像 (F⊖B)(F \ominus B)(FB)
(2)用连通性结构元(如 全 1 的 3*3 核)对腐蚀图像进行膨胀恢复;
(3)用源图像作为模板来约束重建,与膨胀恢复图像进行逻辑与;
(4)重复图像 F 的 k 次重构运算,直到达到稳定收敛状态,得到重建开运算的结果。

    # 10.21:基于形态学重建的竖线字符提取(清除)imgGray = cv2.imread("../images/Fig0931a.tif", flags=0)  # flags=0 灰度图像ret, imgBinInv = cv2.threshold(imgGray, 205, 255, cv2.THRESH_BINARY_INV)  # 二值化处理 (黑色0/白色1)imgBin = cv2.bitwise_not(imgBinInv)  # 二值图像的补集 (黑色背景), 本例等效于原图像# 开运算提取垂直线 (效果对照,不是重建开运算所必需)vline = cv2.getStructuringElement(cv2.MORPH_RECT, (1,50), (-1,-1))  # 垂直结构元,50 像素点为特征高度imgOpenVline = cv2.morphologyEx(imgBin, cv2.MORPH_OPEN, vline)  # 开运算提取垂直结构# 构造标记图像: 采用图像的腐蚀结果作为膨胀重建的标记imgErode = cv2.erode(imgBin, kernel=vline)  # 对原图像(黑色背景)腐蚀,作为标记图像marker = imgErode# 形态学重建element = cv2.getStructuringElement(cv2.MORPH_CROSS, (3, 3))while True:marker_pre = marker  # 保存 F(n-1)dilation = cv2.dilate(marker, kernel=element)  # 膨胀重建marker = cv2.bitwise_and(dilation, imgBin)  # 原图像作为模板用来约束重建,按位与,有 0 得 0if (marker_pre == marker).all():  # F(n)=F(n-1)?,判断是否达到稳定收敛状态breakimgRebuild = marker  # 最终的 marker 就是重建开运算的结果,包含竖线的字母imgDual = cv2.bitwise_not(imgBinInv + marker)  # 重建开运算的对偶结果,不含竖线的字母# 显示plt.figure(figsize=(9, 7))plt.subplot(321), plt.imshow(imgGray, cmap='gray'), plt.title("origin image"), plt.axis("off")plt.subplot(322), plt.imshow(imgBinInv, cmap='gray'), plt.title("binary image"), plt.axis("off")plt.subplot(323), plt.imshow(imgOpenVline, cmap='gray'), plt.title("opening (v-line)"), plt.axis("off")plt.subplot(324), plt.imshow(imgErode, cmap='gray'), plt.title("eroded image"), plt.axis("off")plt.subplot(325), plt.imshow(imgRebuild, cmap='gray'), plt.title("rebuild image"), plt.axis("off")plt.subplot(326), plt.imshow(imgDual, cmap='gray'), plt.title("dual rebuild"), plt.axis("off")plt.tight_layout()plt.show()

在这里插入图片描述


(本节完)


版权声明:

youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/123498487)

Copyright 2022 youcans, XUPT
Crated:2022-3-18


欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中

【youcans 的 OpenCV 例程200篇】01. 图像的读取(cv2.imread)
【youcans 的 OpenCV 例程200篇】02. 图像的保存(cv2.imwrite)
【youcans 的 OpenCV 例程200篇】03. 图像的显示(cv2.imshow)
【youcans 的 OpenCV 例程200篇】04. 用 matplotlib 显示图像(plt.imshow)
【youcans 的 OpenCV 例程200篇】05. 图像的属性(np.shape)
【youcans 的 OpenCV 例程200篇】06. 像素的编辑(img.itemset)
【youcans 的 OpenCV 例程200篇】07. 图像的创建(np.zeros)
【youcans 的 OpenCV 例程200篇】08. 图像的复制(np.copy)
【youcans 的 OpenCV 例程200篇】09. 图像的裁剪(cv2.selectROI)
【youcans 的 OpenCV 例程200篇】10. 图像的拼接(np.hstack)
【youcans 的 OpenCV 例程200篇】11. 图像通道的拆分(cv2.split)
【youcans 的 OpenCV 例程200篇】12. 图像通道的合并(cv2.merge)
【youcans 的 OpenCV 例程200篇】13. 图像的加法运算(cv2.add)
【youcans 的 OpenCV 例程200篇】14. 图像与标量相加(cv2.add)
【youcans 的 OpenCV 例程200篇】15. 图像的加权加法(cv2.addWeight)
【youcans 的 OpenCV 例程200篇】16. 不同尺寸的图像加法
【youcans 的 OpenCV 例程200篇】17. 两张图像的渐变切换
【youcans 的 OpenCV 例程200篇】18. 图像的掩模加法
【youcans 的 OpenCV 例程200篇】19. 图像的圆形遮罩
【youcans 的 OpenCV 例程200篇】20. 图像的按位运算
【youcans 的 OpenCV 例程200篇】21. 图像的叠加
【youcans 的 OpenCV 例程200篇】22. 图像添加非中文文字
【youcans 的 OpenCV 例程200篇】23. 图像添加中文文字
【youcans 的 OpenCV 例程200篇】24. 图像的仿射变换
【youcans 的 OpenCV 例程200篇】25. 图像的平移
【youcans 的 OpenCV 例程200篇】26. 图像的旋转(以原点为中心)
【youcans 的 OpenCV 例程200篇】27. 图像的旋转(以任意点为中心)
【youcans 的 OpenCV 例程200篇】28. 图像的旋转(直角旋转)
【youcans 的 OpenCV 例程200篇】29. 图像的翻转(cv2.flip)
【youcans 的 OpenCV 例程200篇】30. 图像的缩放(cv2.resize)
【youcans 的 OpenCV 例程200篇】31. 图像金字塔(cv2.pyrDown)
【youcans 的 OpenCV 例程200篇】32. 图像的扭变(错切)
【youcans 的 OpenCV 例程200篇】33. 图像的复合变换
【youcans 的 OpenCV 例程200篇】34. 图像的投影变换
【youcans 的 OpenCV 例程200篇】35. 图像的投影变换(边界填充)
【youcans 的 OpenCV 例程200篇】36. 直角坐标与极坐标的转换
【youcans 的 OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理
【youcans 的 OpenCV 例程200篇】38. 图像的反色变换(图像反转)
【youcans 的 OpenCV 例程200篇】39. 图像灰度的线性变换
【youcans 的 OpenCV 例程200篇】40. 图像分段线性灰度变换
【youcans 的 OpenCV 例程200篇】41. 图像的灰度变换(灰度级分层)
【youcans 的 OpenCV 例程200篇】42. 图像的灰度变换(比特平面分层)
【youcans 的 OpenCV 例程200篇】43. 图像的灰度变换(对数变换)
【youcans 的 OpenCV 例程200篇】44. 图像的灰度变换(伽马变换)
【youcans 的 OpenCV 例程200篇】45. 图像的灰度直方图
【youcans 的 OpenCV 例程200篇】46. 直方图均衡化
【youcans 的 OpenCV 例程200篇】47. 图像增强—直方图匹配
【youcans 的 OpenCV 例程200篇】48. 图像增强—彩色直方图匹配
【youcans 的 OpenCV 例程200篇】49. 图像增强—局部直方图处理
【youcans 的 OpenCV 例程200篇】50. 图像增强—直方图统计量图像增强
【youcans 的 OpenCV 例程200篇】51. 图像增强—直方图反向追踪
【youcans 的 OpenCV 例程200篇】52. 图像的相关与卷积运算
【youcans 的 OpenCV 例程200篇】53. Scipy 实现图像二维卷积
【youcans 的 OpenCV 例程200篇】54. OpenCV 实现图像二维卷积
【youcans 的 OpenCV 例程200篇】55. 可分离卷积核
【youcans 的 OpenCV 例程200篇】56. 低通盒式滤波器
【youcans 的 OpenCV 例程200篇】57. 低通高斯滤波器
【youcans 的 OpenCV 例程200篇】58. 非线性滤波—中值滤波
【youcans 的 OpenCV 例程200篇】59. 非线性滤波—双边滤波
【youcans 的 OpenCV 例程200篇】60. 非线性滤波—联合双边滤波
【youcans 的 OpenCV 例程200篇】61. 导向滤波(Guided filter)
【youcans 的 OpenCV 例程200篇】62. 图像锐化——钝化掩蔽
【youcans 的 OpenCV 例程200篇】63. 图像锐化——Laplacian 算子
【youcans 的 OpenCV 例程200篇】64. 图像锐化——Sobel 算子
【youcans 的 OpenCV 例程200篇】65. 图像锐化——Scharr 算子
【youcans 的 OpenCV 例程200篇】66. 图像滤波之低通/高通/带阻/带通
【youcans 的 OpenCV 例程200篇】67. 空间域图像增强的综合应用
【youcans 的 OpenCV 例程200篇】68. 空间域图像增强的综合应用
【youcans 的 OpenCV 例程200篇】69. 连续非周期信号的傅立叶系数
【youcans 的 OpenCV 例程200篇】70. 一维连续函数的傅里叶变换
【youcans 的 OpenCV 例程200篇】71. 连续函数的取样
【youcans 的 OpenCV 例程200篇】72. 一维离散傅里叶变换
【youcans 的 OpenCV 例程200篇】73. 二维连续傅里叶变换
【youcans 的 OpenCV 例程200篇】74. 图像的抗混叠
【youcans 的 OpenCV 例程200篇】75. Numpy 实现图像傅里叶变换
【youcans 的 OpenCV 例程200篇】76. OpenCV 实现图像傅里叶变换
【youcans 的 OpenCV 例程200篇】77. OpenCV 实现快速傅里叶变换
【youcans 的 OpenCV 例程200篇】78. 频率域图像滤波基础
【youcans 的 OpenCV 例程200篇】79. 频率域图像滤波的基本步骤
【youcans 的 OpenCV 例程200篇】80. 频率域图像滤波详细步骤
【youcans 的 OpenCV 例程200篇】81. 频率域高斯低通滤波器
【youcans 的 OpenCV 例程200篇】82. 频率域巴特沃斯低通滤波器
【youcans 的 OpenCV 例程200篇】83. 频率域低通滤波:印刷文本字符修复
【youcans 的 OpenCV 例程200篇】84. 由低通滤波器得到高通滤波器
【youcans 的 OpenCV 例程200篇】85. 频率域高通滤波器的应用
【youcans 的 OpenCV 例程200篇】86. 频率域滤波应用:指纹图像处理
【youcans 的 OpenCV 例程200篇】87. 频率域钝化掩蔽
【youcans 的 OpenCV 例程200篇】88. 频率域拉普拉斯高通滤波
【youcans 的 OpenCV 例程200篇】89. 带阻滤波器的传递函数
【youcans 的 OpenCV 例程200篇】90. 频率域陷波滤波器
【youcans 的 OpenCV 例程200篇】91. 高斯噪声、瑞利噪声、爱尔兰噪声
【youcans 的 OpenCV 例程200篇】92. 指数噪声、均匀噪声、椒盐噪声
【youcans 的 OpenCV 例程200篇】93. 噪声模型的直方图
【youcans 的 OpenCV 例程200篇】94. 算术平均滤波器
【youcans 的 OpenCV 例程200篇】95. 几何均值滤波器
【youcans 的 OpenCV 例程200篇】96. 谐波平均滤波器
【youcans 的 OpenCV 例程200篇】97. 反谐波平均滤波器
【youcans 的 OpenCV 例程200篇】98. 统计排序滤波器
【youcans 的 OpenCV 例程200篇】99. 修正阿尔法均值滤波器
【youcans 的 OpenCV 例程200篇】100. 自适应局部降噪滤波器
【youcans 的 OpenCV 例程200篇】101. 自适应中值滤波器
【youcans 的 OpenCV 例程200篇】102. 陷波带阻滤波器的传递函数
【youcans 的 OpenCV 例程200篇】103. 陷波带阻滤波器消除周期噪声干扰
【youcans 的 OpenCV 例程200篇】104. 运动模糊退化模型
【youcans 的 OpenCV 例程200篇】105. 湍流模糊退化模型
【youcans 的 OpenCV 例程200篇】106. 退化图像的逆滤波
【youcans 的 OpenCV 例程200篇】107. 退化图像的维纳滤波
【youcans 的 OpenCV 例程200篇】108. 约束最小二乘方滤波
【youcans 的 OpenCV 例程200篇】109. 几何均值滤波
【youcans 的 OpenCV 例程200篇】110. 投影和雷登变换
【youcans 的 OpenCV 例程200篇】111. 雷登变换反投影重建图像
【youcans 的 OpenCV 例程200篇】112. 滤波反投影重建图像
【youcans 的 OpenCV 例程200篇】113. 形态学操作之腐蚀
【youcans 的 OpenCV 例程200篇】114. 形态学操作之膨胀
【youcans 的 OpenCV 例程200篇】115. 形态学操作之开运算
【youcans 的 OpenCV 例程200篇】116. 形态学操作之闭运算
【youcans 的 OpenCV 例程200篇】117. 形态学操作之顶帽运算
【youcans 的 OpenCV 例程200篇】118. 形态学操作之底帽运算
【youcans 的 OpenCV 例程200篇】119. 图像的形态学梯度
【youcans 的 OpenCV 例程200篇】120. 击中-击不中变换
【youcans 的 OpenCV 例程200篇】121. 击中-击不中用于特征识别
【youcans 的 OpenCV 例程200篇】122. 形态算法之边界提取
【youcans 的 OpenCV 例程200篇】123. 形态算法之孔洞填充
【youcans 的 OpenCV 例程200篇】124. 孔洞填充的泛洪算法
【youcans 的 OpenCV 例程200篇】125. 形态算法之提取连通分量
【youcans 的 OpenCV 例程200篇】126. 形态算法之凸壳
【youcans 的 OpenCV 例程200篇】127. 形态算法之细化
【youcans 的 OpenCV 例程200篇】128. 形态算法之骨架 (skimage)
【youcans 的 OpenCV 例程200篇】129. 形态算法之骨架 (重建开运算)
【youcans 的 OpenCV 例程200篇】130. 形态学之提取水平和垂直线
【youcans 的 OpenCV 例程200篇】131. 形态学重建之竖线字符提取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java - 判断任意一天是这年的第几天

进入程序之后,我们根据提示输入年份,点击Enter之后会让我们输入月份,点击Enter之后会让我们输入日,当我们按要求输入年月日之后点击Enter按键之后会计算输入的日期是输入年份的第几天。 原理分析: 1.年份的提示输入 2…

【youcans 的 OpenCV 例程200篇】132. 形态学重建之孔洞填充算法

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 【youcans 的 OpenCV 例程200篇】132. 形态学重建之孔洞填充算法 4. 形态学图像重建 形态学重建的核心是测地膨胀和测地腐蚀。 图…

c 包含其他文件_C语言:全局变量在多个c文件中公用的方法!

用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用。举例说明:项目文件夹project下有main.c、common.c和common.h三…

【youcans 的 OpenCV 例程200篇】133. 形态学重建之边界清除

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 【youcans 的 OpenCV 例程200篇】133. 形态学重建之边界清除 4. 形态学图像重建 形态学重建的核心是测地膨胀和测地腐蚀。 图像的…

跟着川川学数模-Day2

目录 一、前言 二、问题提出 三、问题求解 3.1 线性规划(忽视整数条件) 3.2 整数线性规划 3.2.1 对x1进行分枝求解 3.2.2 在x范围下对x2进行分支求解 3.2.3 求解最大值 3.2.4 结果 一、前言 在川川前面两篇的推送中,学习到了如何求解…

鼠标吸附彩色气泡

H5Cavas制作鼠标吸附彩色气泡。当鼠标在屏幕上移动的时候&#xff0c;鼠标划过的区域会出现许多彩色气泡&#xff0c;并且会自动消失。 效果演示 看了如此效果是不是心动的感觉呢&#xff1f;&#xff1f;&#xff1f; 代码展示 <!DOCTYPE html> <html><hea…

【youcans 的 OpenCV 例程200篇】135. 形态学重建之粒度测定

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】135. 形态学重建之粒度测定 4. 形态学图像重建 形态学重建的核心是测地膨胀和测地腐蚀。 图像的…

跟着川川学数模-Day3

目录 一、非线性引入 二、非线性规划模型 三、Matlab中的非线性规划函数 四、求解不等式和等式双变量约束 五、非线性约束求最小值 5.1 奇奇怪怪的三变量 5.2 可可爱爱的范围寻优 六、总结 一、非线性引入 前面两天跟着川川学习了线性规划和整数线性规划&#xff0c;今…

java - 求最大公约数和最小公倍数

根据提示输入两个正整数 m 和 n&#xff0c;求其最大公约数和最小公倍数 并进行控制台输出。 原理分析 在循环中&#xff0c;只要除数不等于 0&#xff0c;用较大数除以较小的数&#xff0c;将小的一个数作为下一轮循环的大数&#xff0c;取得的余数作为下一轮循环的较小的数&…

【youcans 的 OpenCV 例程200篇】134. 形态学重建之细胞计数

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】134. 形态学重建之细胞计数 4. 形态学图像重建 形态学重建的核心是测地膨胀和测地腐蚀。 图像的…

【youcans 的 OpenCV 例程200篇】136. 灰度腐蚀和灰度膨胀

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】136. 灰度腐蚀和灰度膨胀 5. 灰度级形态学 灰度级形态学将形态学操作从二值图像扩展到灰度图像。…

基于主成分分析法的安全评价模型

目录 一、安全评价简介 二、引入 三、调查问卷的设置 四、问卷发放与回收 五、主成分分析法介绍 六、SPSS主成分分析&#xff08;简易版&#xff09; 6.1 数据的导入与设定 6.2 信效度分析 6.3 SPSS主成分分析处理 一、安全评价简介 何为安全评价&#xff0c;对于本专业…

java - 分解质因数

根据提示输入一个正整数&#xff0c;用java程序进行分解质因数。例如&#xff1a;输入 90,打印出 90233*5 原理分析&#xff1a; 1.对 n 进行分解质因数&#xff0c;应先找到一个最小的质数 k&#xff0c;然后按下述步骤完成&#xff1a; 2.如果这个质数恰等于 n&#xff0c;则…

【youcans 的 OpenCV 例程200篇】137. 灰度开运算和灰度闭运算原理

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】137. 灰度开运算和灰度闭运算 5. 灰度级形态学 灰度级形态学将形态学操作从二值图像扩展到灰度图…

跟着川川学数模-Day4

目录 一、一元线性回归 二、多元线性回归 一、一元线性回归 今天是跟着川川学数模的第四天&#xff0c;也与前些天的规划问题不同&#xff0c;进入到了线性回归&#xff0c;那么我们先来看一下一元线性回归问题. 我们以某一数据列为例&#xff0c;代码如下 x1:12; y[217.22…

Java - 计算不同字符或数字的个数

根据提示输入一行字符&#xff0c;这行字符可以是任意的&#xff0c;可以包含字母数字标点符号&#xff0c;特殊符号等&#xff0c;java程序会输出你输入字符串中各个类别字符的个数。 结果展示 代码展示 package com.one;import java.util.*;public class Flqgs {public st…

oracle去重保留一条_关于oracle数据库物理结构(文件)的一些总结

概述闲来无事&#xff0c;整理了下oracle数据库物理结构方面的内容&#xff0c;这里主要从数据库文件和操作系统文件两个方面来介绍。任何时候都要记得&#xff0c;数据库是数据存储的容器&#xff0c;作用是用来收集、存储数据和返回信息。物理结构数据库文件1&#xff0e;控制…

【youcans 的 OpenCV 例程200篇】138. 灰度开运算和灰度闭运算

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】138. 灰度开运算和灰度闭运算 5.2 灰度开运算和灰度闭运算 OpenCV 提供了函数 cv.morphologyEx 可…

跟着川川学数模-Day5

一、一些废话 哦莫&#xff0c;终于到了我最喜欢且不会的东西了&#xff0c;动态规划&#xff0c;求解最优路径&#xff0c;学会这玩意就能处理简单的TSP问题了&#xff0c;那么让我们来看看怎么用Matlab实现。 二、最短路径求解 2.1 稀疏矩阵 哦莫&#xff0c;果然上来就是…

c#获取对象的唯一标识_DDD领域驱动设计实战 - 创建实体身份标识的常用策略

从简单到复杂依次为&#xff1a;3.1.1 用户提供唯一标识这时用户将输入一些可识别的数值或符号&#xff0c;或从已有标识中选其一&#xff0c;然后创建实体对象。这是一种非常简单方案&#xff0c;但也可能变得复杂。由于需用户自己生成高质量的标识。所以标识可能唯一&#xf…