鹤岗做网站自己做的网站维护一年多少钱

当前位置: 首页 > news >正文

鹤岗做网站,自己做的网站维护一年多少钱,网站开发属于什么费用,wordpress编辑文章图片文字对齐形态学#xff08;Morphology#xff09;是数学中研究形状、结构和变换的分支#xff0c;而在图像处理中#xff0c;形态学主要用于描述和分析图像中的形状和结构。形态学操作通常涉及基本的集合运算#xff0c;如腐蚀、膨胀、开运算、闭运算等#xff0c;以及与结构元素…  形态学Morphology是数学中研究形状、结构和变换的分支而在图像处理中形态学主要用于描述和分析图像中的形状和结构。形态学操作通常涉及基本的集合运算如腐蚀、膨胀、开运算、闭运算等以及与结构元素structuring element的结合使用。 以下是形态学中一些重要的定义和知识点

  1. 结构元素Structuring Element 结构元素是形态学操作的基本组成部分它定义了形态学操作的形状和大小。通常是一个小的矩形、圆形或其他形状的核。在腐蚀和膨胀等操作中结构元素在图像上滑动并与图像进行匹配用来确定操作的范围。

  2. 腐蚀Erosion 腐蚀操作可以使图像中的边缘“腐蚀”掉使其变得更加平滑。腐蚀操作的基本思想是使用结构元素在图像上滑动并检查像素与结构元素的对应位置是否满足某种条件。如果像素值全部满足条件则中心像素值保持不变否则被腐蚀为0。

  3. 膨胀Dilation 膨胀操作与腐蚀相反它可以增加图像中对象的大小并填充对象之间的空隙。膨胀操作也使用结构元素在图像上滑动并检查像素与结构元素的对应位置是否满足条件。如果结构元素与任何一个像素相交则中心像素值被膨胀为1。

  4. 开运算Opening与闭运算Closing 开运算是先进行腐蚀再进行膨胀的操作可以用来消除小型噪声、分离接触对象等闭运算是先进行膨胀再进行腐蚀的操作可以用来填充物体间的空隙、连接断裂的物体等。

  5. 形态学梯度Morphological Gradient 形态学梯度是膨胀图像与腐蚀图像的差异用来确定图像中物体的边缘。

  6. 顶帽运算Top Hat与底帽运算Black Hat 顶帽运算是原始图像与开运算之间的差异用来提取比原始图像更亮的区域底帽运算是闭运算与原始图像之间的差异用来提取比原始图像更暗的区域。 形态学操作在图像处理中有着广泛的应用对于图像分割、特征提取、物体检测等任务都具有重要作用。 知识点1 腐蚀与膨胀 1腐蚀操作 腐蚀操作可以将图像中的边缘“腐蚀”掉使其变得更加平滑。它的原理是使用一个称为结构元素Structuring Element的小型矩阵在图像上滑动并检查像素与结构元素的对应位置是否满足某种条件通常是“与”操作。如果像素值全部满足条件则中心像素值保持不变否则被腐蚀为0。这一过程可以用来消除小型噪声、分离接触对象、以及缩小物体等。 在 OpenCV 中腐蚀操作的函数是 cv2.erode()。下面是它的语法格式和含义 代码 dst cv2.erode(src, kernel, iterations 1, anchor (-1, -1), borderType cv2.BORDER_CONSTANT, borderValue 0) src表示输入图像即待腐蚀的图像应为灰度图像或者单通道二值图像。 kernel表示结构元素即定义腐蚀操作的形状和大小的矩阵。通常是一个正方形或矩形的小矩阵。你可以使用 np.ones() 函数来创建一个全为1的矩阵作为结构元素。例如kernel np.ones((5,5), np.uint8) 创建了一个5x5的全为1的矩阵作为结构元素。 iterations表示腐蚀操作的迭代次数即在图像上应用腐蚀操作的次数。默认为1。 anchor表示结构元素的锚点位置默认为(-1, -1)即结构元素的中心点。你也可以设置为其他值通常情况下保持默认值即可。 borderType表示边界处理方式默认为 cv2.BORDER_CONSTANT即在边界外的像素值使用常数填充常数值由 borderValue 参数指定。 borderValue当 borderType 设置为 cv2.BORDER_CONSTANT 时表示边界外像素的值默认为0。
    这个函数会返回一个腐蚀后的图像 dst。 腐蚀操作的基本思想是对于给定的结构元素在图像上滑动并检查像素与结构元素的对应位置是否满足某种条件。如果像素值全部满足条件则中心像素值保持不变否则被腐蚀为0。 具体实现 import cv2 import numpy as np# 读取图像 img cv2.imread(C:/Users/win11/opencv/sucai5/cv2z.png)# 创建一个5x5的全为1的矩阵作为结构元素 kernel np.ones((5,5), np.uint8)# 对图像进行腐蚀操作 erosion cv2.erode(img, kernel, iterations1)# 显示原始图像和腐蚀后的图像 cv2.imshow(img, img) cv2.imshow(Erosion, erosion)# 等待用户按下任意键并关闭窗口 cv2.waitKey(0) cv2.destroyAllWindows() 结果如图 2膨胀操作 膨胀操作Dilation 膨胀操作是图像形态学处理中的一种基本操作通常用于增加或扩展图像中的白色区域前景对象。它的原理是在图像上滑动一个结构元素通常是一个小的矩形或圆形内核将内核下方的像素值替换为内核下方区域内的最大像素值。因此它会使图像中的白色区域变得更大。膨胀操作常用于填充图像中的空洞、连接相邻的对象以及消除图像中的噪声。 在OpenCV中膨胀操作可以通过cv2.dilate()函数实现。该函数需要传入待处理的图像、结构元素通常是一个矩形或圆形内核以及迭代次数作为参数。迭代次数表示膨胀操作的次数通常设置为1即可。 代码 dilation cv2.dilate(img, kernel, iterations1) img 是待处理的图像即输入图像。kernel 是结构元素用于定义膨胀操作的形状和大小iterations 表示膨胀操作的迭代次数即要对图像应用膨胀操作的次数 具体实现 import cv2 import numpy as np# 读取图像 img cv2.imread(C:/Users/win11/opencv/sucai5/cv2z.png)# 创建一个5x5的全为1的矩阵作为结构元素 kernel np.ones((5,5), np.uint8)# 对图像进行膨胀操作 dilation cv2.dilate(img, kernel, iterations1)# 显示原始图像和膨胀后的图像 cv2.imshow(Original Image, img) # 显示原始图像窗口窗口标题为Original Image cv2.imshow(Dilation, dilation) # 显示膨胀后的图像窗口窗口标题为Dilation# 等待用户按下任意键并关闭窗口 cv2.waitKey(0) # 等待用户按下任意键 cv2.destroyAllWindows() # 关闭所有窗口 结果如图 知识点2通用形态学函数 在OpenCV中常用的通用形态学函数是cv2.morphologyEx()函数。该函数可以接受不同的形态学操作类型作为参数并且可以自定义结构元素。 result cv2.morphologyEx(img, op, kernel) img 是待处理的图像即输入图像。op 是形态学操作的类型可以是如下之一 cv2.MORPH_ERODE腐蚀操作。cv2.MORPH_DILATE膨胀操作。cv2.MORPH_OPEN开运算先进行腐蚀操作再进行膨胀操作。cv2.MORPH_CLOSE闭运算先进行膨胀操作再进行腐蚀操作。其他形态学操作类型如梯度运算、顶帽运算等。 顶帽运算 top_hat cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)这里cv2.MORPH_TOPHAT表示顶帽运算的操作类型kernel是定义操作的结构元素。通过该行代码将对输入图像img进行顶帽运算并将结果保存在top_hat中。 黑帽运算 black_hat cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)在这行代码中cv2.MORPH_BLACKHAT表示黑帽运算的操作类型kernel是结构元素。执行该行代码将对输入图像img进行黑帽运算并将结果保存在black_hat中。 梯度运算 内梯度 internal_gradient cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)这里cv2.MORPH_GRADIENT表示梯度运算的操作类型对于内梯度该函数将执行图像的膨胀操作然后从原始图像中减去膨胀后的结果。结果将保存在internal_gradient中。 外梯度 external_gradient cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)kernel 是结构元素用于定义形态学操作的形状和大小。 具体实现 1cv2.MORPH_OPEN进行开运算 代码 import cv2 import numpy as np# 读取图像 img cv2.imread(C:/Users/win11/opencv/sucai5/cv2z.png, 0)# 定义结构元素 kernel np.ones((5, 5), np.uint8)# 执行开运算操作 opening cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)# 显示原始图像 cv2.imshow(img, img)# 显示开运算后的图像 cv2.imshow(opening, opening)# 等待用户按下任意键退出 cv2.waitKey(0)# 关闭所有窗口 cv2.destroyAllWindows() 结果如图 2 cv2.MORPH_CLOSE闭运算 具体实现 import cv2 import numpy as np# 读取图像 img cv2.imread(C:/Users/win11/opencv/sucai5/cv2z.png, 0)# 定义结构元素 kernel np.ones((5, 5), np.uint8)# 执行闭运算操作 closing cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)# 显示原始图像 cv2.imshow(img, img)# 显示闭运算后的图像 cv2.imshow(closing, closing)# 等待用户按下任意键退出 cv2.waitKey(0)# 关闭所有窗口 cv2.destroyAllWindows() 结果如图 3 cv2.MORPH_GRADIENT进行形态学梯度运算 代码 import cv2 import numpy as np# 读取图像 img cv2.imread(C:/Users/win11/opencv/sucai5/cv2.png)# 定义结构元素 kernel np.ones((5, 5), np.uint8)# 执行梯度运算操作 gradient cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)# 显示原始图像 cv2.imshow(img, img)# 显示梯度运算后的图像 cv2.imshow(gradient, gradient)# 等待用户按下任意键退出 cv2.waitKey(0)# 关闭所有窗口 cv2.destroyAllWindows() 结果如图 4  cv2.MORPH_BLACKHAT进行黑帽操作 代码 import cv2 import numpy as np# 读取图像 img cv2.imread(C:/Users/win11/opencv/sucai5/cv2z.png, 0)# 定义结构元素 kernel np.ones((5, 5), np.uint8)# 执行黑帽运算操作 blackhat cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)# 显示原始图像 cv2.imshow(img, img)# 显示黑帽运算后的图像 cv2.imshow(blackhat, blackhat)# 等待用户按下任意键退出 cv2.waitKey(0)# 关闭所有窗口 cv2.destroyAllWindows() 结果如图 5 cv2.MORPH_TOPHAT 进行顶帽操作 代码 import cv2 import numpy as np imgcv2.imread(C:/Users/computer/opencv/sucai5/cv2z.png,0) kernelnp.ones((5,5),np.uint8) tophatcv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel) cv2.imshow(img,img) cv2.imshow(tophat,tophat) cv2.waitKey(0) cv2.destroyAllWindows() 结果如图 知识点3形态学结构元 形态学结构元素是形态学图像处理中的一个重要概念。它是一个二值图像通常是一个小的二值图像用于定义形态学操作的形状和大小。 在形态学操作中结构元素被用来改变图像的形状、大小、或提取图像中的特定特征。常见的形态学操作包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算等。 结构元素通常是一个矩形或圆形的二值图像由一组相邻的像素点组成。在执行形态学操作时结构元素在图像上滑动并与图像中的像素进行匹配根据匹配的规则来改变像素的值或者提取特征。 结构元素的大小和形状对形态学操作的效果具有重要影响。通常情况下较小的结构元素会导致较细的特征被保留或强调而较大的结构元素则会使特征更加模糊或平滑。 在 OpenCV 中结构元素通常通过 cv2.getStructuringElement() 函数创建其语法格式如下 element cv2.getStructuringElement(shape, ksize[, anchor])其中 shape 表示结构元素的形状可以是 cv2.MORPH_RECT矩形、cv2.MORPH_CROSS十字形或 cv2.MORPH_ELLIPSE椭圆形之一。ksize 表示结构元素的大小通常是一个元组指定了结构元素的高度和宽度。anchor 是可选参数表示锚点的位置默认值为 (-1, -1)即结构元素的中心点 常见的结构元类型主要包括以下几种 矩形结构元素 (cv2.MORPH_RECT)矩形结构元素是最常用的类型之一。它可以用来执行基本的形态学操作如腐蚀和膨胀。矩形结构元素的大小由指定的高度和宽度决定可以用来模拟图像中的线性特征。 十字形结构元素 (cv2.MORPH_CROSS)十字形结构元素通常用于梯度运算。它类似于矩形结构元素但在中间有一条十字交叉的空隙使得该结构元素在边缘检测和特定区域提取方面更具有效性。 椭圆形结构元素 (cv2.MORPH_ELLIPSE)椭圆形结构元素适用于某些特定形状的目标提取或者对图像进行平滑操作。椭圆形结构元素相对于矩形结构元素更加圆滑可以更好地适应某些曲线和形状。
    具体实现生成不同形状的结构元 代码 import cv2# 创建矩形结构元素 kernel1 cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 创建一个 5x5 的矩形结构元素

    创建十字形结构元素

    kernel2 cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5)) # 创建一个 5x5 的十字形结构元素

    创建椭圆形结构元素

    kernel3 cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) # 创建一个 5x5 的椭圆形结构元素

    kernel3cv2.getStructuringElement(cv2.MORPH_ELLTPSE,(5,5)) # 如果拼写错误会报错# 输出结构元素

    print(kernel1\n, kernel1) # 输出矩形结构元素 print(kernel2\n, kernel2) # 输出十字形结构元素 print(kernel3\n, kernel3) # 输出椭圆形结构元素 结果如图 不同形状的结构体元形态学运算对比 代码 import cv2# 读取图像 src cv2.imread(C:/Users/win11/opencv/sucai5/cv2.png)# 创建矩形结构元素 kernel1 cv2.getStructuringElement(cv2.MORPH_RECT, (55, 55)) # 创建一个 55x55 的矩形结构元素

    创建十字形结构元素

    kernel2 cv2.getStructuringElement(cv2.MORPH_CROSS, (55, 55)) # 创建一个 55x55 的十字形结构元素# 使用形态学膨胀操作 dst1 cv2.morphologyEx(src, cv2.MORPH_DILATE, kernel1) # 使用矩形结构元素进行膨胀操作 dst2 cv2.morphologyEx(src, cv2.MORPH_DILATE, kernel2) # 使用十字形结构元素进行膨胀操作 dst3 cv2.morphologyEx(src, cv2.MORPH_DILATE, kernel2) # 使用十字形结构元素进行膨胀操作此处可能应为 kernel3# 显示图像 cv2.imshow(src, src) cv2.imshow(dst1, dst1) cv2.imshow(dst2, dst2) cv2.imshow(dst3, dst3) # 此处可能应修改窗口标题为 十字形结构元素膨胀# 等待键盘输入并释放窗口资源 cv2.waitKey(0) cv2.destroyAllWindows() 结果如图