需要源码和图片请点赞关注收藏后评论区留言私信~~~
图像分割是计算机视觉研究中的一个经典难题,已经成为图像理解领域关注的一个热点,图像分割是计算机将图像分割为多个区域的过程,分割图像的简单方法是使用阈值分割,它会产生两个区域,典型的大津阈值法通过最小化两个区域的加权方差实现图像分割
边缘检测也是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点,Canny边缘检测是从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,目前已经广泛应用于各种计算机视觉系统
Harris角点是图像很重要的特征,对图形图像的理解和分析有很重要的作用,Harris角点检测是通过数学计算在图像上发现角点特征的一种算法,而且其具有旋转不变性
下面对图片分别应用上面三种算法
1:打开图像文件
我们查看原图像和灰度图
部分代码如下
import numpy as np import cv2 as cv import matplotlib.pylab as plt img = cv.imread('images\lena.jpg',cv.IMREAD_COLOR) gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY) b,g,r = cv.split(img) src = cv.merge([r, g, b]) plt.subplot(221) plt.imshow(src) plt.title('Original Image') plt.xticks([]) plt.yticks([]) plt.subplot(222) plt.imshowgry,cm = 'gray') plt.title('Gray Image') plt.xticks([] plt.show()
2:图像的OTSU二值分割
可以看出大概分割为两个区域
ret, thresh = cv.threshold(gray, 0, 255,cv.THRESH_OTSU) plt.imshow(thresh,cmap = 'gray') plt.title('OSTU'), plt.xticks([]), plt.yticks([]) plt.show()
3:图像的Canny边缘检测
edges = cv.Cay(gray,100,200) b,g,r = cv.spit(img) src = cv.mer[r, g, b]) plt.subplot(221),plt.imshow(src) plt.title('Original Image'), plt.xticks([]), plt.yticks([]) plt.subplot(222),plt.imshow(edges,cmap = 'gray') plt.title('Edge Image'), plt.xticks([]), plt.yticks([]) plt.show()
4:图像的Harris Corner角点检测
gray = np.float32(gray) dst = cv.cornerHarris(gray,2,3,0.04) #result is dilated for marking the corners, not important dst = cv.dilatdst,None) # Threshold optimal value, it may vary depending on the image. img[dst>0.01*dt.max()]=[0,0,255] b,g,r = cvplit(img) src = cv.merge([r, g, b]) plt.imshow(src) plt.title('Harris Corner '), plt.xticks([]), plt.yticks([])
创作不易 觉得有帮助请点赞关注收藏~~~