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

靖江网站建设价格网时代教育培训机构

靖江网站建设价格,网时代教育培训机构,免费申请二级域名,个人网站可以做淘宝客网站吗Python实现多种图像分割方法#xff1a;基于阈值分割和基于区域分割 图像分割是图像分析的第一步#xff0c;是计算机视觉的基础#xff0c;但也是图像处理中最困难的问题之一。经典的计算机视觉任务#xff0c;如目标检测、图像识别等都和图像分割相关#xff0c;图像分…Python实现多种图像分割方法基于阈值分割和基于区域分割 图像分割是图像分析的第一步是计算机视觉的基础但也是图像处理中最困难的问题之一。经典的计算机视觉任务如目标检测、图像识别等都和图像分割相关图像分割的好不好直接决定目标检测识别的准确不准确。 本文首先介绍了基于阈值和区域增长的图像分割方法。 然后针对图片中的书本和窗户旁边的人进行实验并结合同态滤波和形态学算法对识别效果进行了优化。 图像分割 分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域使得这些特征在同一区域内表现出一致性或相似性而在不同区域间表现出明显的不同。简单的说就是在一幅图像中把目标从背景中分离出来。 图像分割实质上是图像处理到图像分析的关键步骤图像分割的好坏直接决定了后期图像分析的精准性。因此我们需要根据图像的特征设计不同的图像分割方法。现有的图像分割方法主要分以下几类基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。 基于阈值的图像分割 基于阈值的分割方法是指基于图像的灰度特征来计算一个或多个灰度阈值并将图像中每个像素的灰度值与阈值作比较最后将像素根据比较结果分到合适的类别中。因此该方法最为关键的一步就是按照某个准则函数来求解最佳灰度阈值。之所以能对灰度图像采用阈值分割是因为灰度图像中区域内部的像素一般具有灰度相似性而在区域的边界上一般具有灰度不连续性。所以阈值法特别适用于目标和背景占据不同灰度级范围的图片。 常用的阈值分割方法有Ostu阈值分割自适应阈值分割最大熵阈值分割迭代阈值分割等。 图像若只有目标和背景两大类那么只需要选取一个阈值进行分割此方法成为单阈值分割但是如果图像中有多个目标需要提取单一阈值的分割就会出现作物在这种情况下就需要选取多个阈值将每个目标分隔开这种分割方法称为多阈值分割。本文主要采用的是单阈值分割法。 阀值分割方法的优点是计算简单且效率高但缺点是只考虑了像素点灰度值本身的特征没有考虑空间特征因此对噪声比较敏感鲁棒性不高。 由于阈值分割方法的关键在于阈值的选择因此如果能将智能遗传算法应用在阀值筛选上选取最优分割图像的阀值能够更进一步提升阈值图像分割方法的效果。 基于区域的图像分割 基于区域的分割方法是以直接寻找区域为基础的分割技术有两种基本形式一种是基于区域生长的方式从单个像素出发逐步合并以形成所需要的分割区域另一种是基于区域分裂的方式从全局出发逐步切割至所需的分割区域。 本文采用的是基于区域增长的方法区域生长是指从一组代表不同生长区域的种子像素开始接下来将种子像素邻域里符合条件的像素合并到种子像素所代表的生长区域中并将新添加的像素作为新的种子像素继续合并过程直到找不到符合条件的新像素为止该方法的关键是选择合适的初始种子像素以及合理的生长准则。基于区域增长的方法计算也相对简单同时对于较均匀的连通目标有较好的分割效果但也经常会出现欠生长或过生长的情况。 区域生长算法需要解决的三个问题 1选择或确定一组能正确代表所需区域的种子像素 2确定在生长过程中能将相邻像素包括进来的准则 3指定让生长过程停止的条件或规则。 形态学算法 形态学算法一般是针对二值图像进行边界提取骨架提取孔洞填充角点提取图像重建等。基本的算法膨胀、腐蚀、开操作和闭操作。形态学算法可以保持图像基本的形状特征并除去不相干的结构特征。因此可以引入形态学算法来改善图像分割的效果。 Python代码实现图像分割 导入包 import cv2 from matplotlib import pyplot as plt %matplotlib inline读取原始图和灰度化 def cv_show(name,img):cv2.namedWindow(name,0)cv2.resizeWindow(name,700,900)cv2.imshow(name,img)cv2.waitKey(0)cv2.destroyAllWindows()raw_person cv2.imread(images/person.png) cv_show(raw_person, raw_person)gray_person cv2.imread(images/person.png, flagscv2.IMREAD_GRAYSCALE) cv_show(gray_person, gray_person) cv2.imwrite(results/person/gray_person.jpg,gray_person)绘制灰度图和灰度直方图 import numpy as np hist np.histogram(gray_person, binsnp.arange(0, 256), normedTrue) fig, axes plt.subplots(1, 2, figsize(20, 10)) axes[0].imshow(gray_person, cmapplt.cm.gray, interpolationnearest) axes[0].axis(off) axes[1].plot(hist[1][:-1], hist[0], lw2) axes[1].set_title(histogram of gray values) plt.show()定义形态学算法函数 def img_morph(img, size5, methodopen, elementrect):img: binary imagesize: the size of square used to do morphological filteringmethod: open or close or erode or dilateelement: structure element, rect or circle or crossif element rect:kernel cv2.getStructuringElement(cv2.MORPH_RECT, (size, size))elif element circle:kernel cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (size, size))elif element cross:kernel cv2.getStructuringElement(cv2.MORPH_CROSS, (size, size))if method open:img cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)elif method close:img cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)elif method erode:img cv2.morphologyEx(img, cv2.MORPH_ERODE, kernel)elif method dilate:img cv2.morphologyEx(img, cv2.MORPH_DILATE, kernel)return img基于阈值的图像分割 t0170 segmented_gray_img2 np.where(gray_person[...,:] t0, 255, 0).astype(np.uint8)cv_show(segmented_gray_image,segmented_gray_img2)形态学滤波 open_personimg_morph(segmented_gray_img2,size200,methodopen) cv_show(open_person, open_person)dilate_personimg_morph(open_person,size10,methoddilate) cv_show(dilate_person, dilate_person)close_personimg_morph(dilate_person,size100,methodclose) cv_show(close_person, close_person)dilate_person1img_morph(close_person,size20,methoddilate) cv_show(dilate_person1, dilate_person1)segmented_personcv2.bitwise_and(raw_person,raw_person,maskdilate_person1) cv_show(segmented_person, segmented_person) cv2.imwrite(results/person/segmented_threshold_person.jpg,segmented_person)基于区域增长的图像分割 def region_grow(img, seeds, threshold):select the bgd pixel attentionally to simplify the problemimg: gray scale imageseeds: the seed pixelsseed_list seedsneighbors [[-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1]]is_search np.zeros(img.shape)is_add np.zeros(img.shape)for seed in seeds:is_add[seed[0], seed[1]] 1grow_img np.ones(img.shape).astype(np.uint8)*255# mean_value img[seed[0], seed[1]]cnt 1while(len(seed_list)0):cnt 1seed seed_list.pop()grow_img[seed[0], seed[1]] 0is_search[seed[0], seed[1]] 1for neighbor in neighbors:# print(neighbor, seed)neighbor_x seed[0]neighbor[0]neighbor_y seed[1]neighbor[1]if neighbor_x 0 or neighbor_y 0 or neighbor_x img.shape[0] or neighbor_y img.shape[1]:continueelif is_search[neighbor_x, neighbor_y] 1 or is_add[neighbor_x, neighbor_y] 1:continue# elif abs(img[neighbor_x, neighbor_y] - mean_value) threshold:elif abs(float(img[neighbor_x, neighbor_y]) - float(img[seed[0],seed[1]])) threshold:continueelse:seed_list.insert(0, [neighbor_x, neighbor_y])is_add[neighbor_x, neighbor_y] 1# mean_value mean_value/cntimg[neighbor_x, neighbor_y]/cnt# print(mean_value)# grow_img[neighbor_x, neighbor_y] 0return grow_imgseeds [[341,942],[1510,960],[773,931],[2018,949]] grow_person region_grow(gray_person, seeds, 4) grow_person 255-grow_person cv_show(grow_person,grow_person)open_grow_personimg_morph(grow_person,size50,methodopen) cv_show(open_grow_person, open_grow_person)close_grow_person1img_morph(open_grow_person,size200,methodclose) cv_show(close_grow_person1, close_grow_person1)segmented_region_person cv2.bitwise_and(raw_person,raw_person,mask close_grow_person1) cv_show(segmented_region_person,segmented_region_person) cv2.imwrite(results/person/segmented_region_person.jpg,segmented_region_person)更多详细代码发布在https://github.com/JeremyChou28/digital_image_processing/tree/main/project4
http://www.zqtcl.cn/news/597459/

相关文章:

  • 网站404 模板wordpress 文字插件下载
  • 河南民基建设工程有限公司网站齐齐哈尔建设局网站首页
  • 响应式网站建设推荐乐云践新三丰云免费云服务器
  • 长沙网站建设模板uc浏览器访问网站
  • 擼擼擼做最好的导航网站陕西政务服务网注册公司流程
  • 怎样做商城网站的推广wordpress用php哪个版本好
  • 网站功能模块建设建设网站考证
  • 网站代码结构成都住建局官网报名入口
  • 吴桥县网站建设房产门户网站模板
  • 标签化网站网络服务类型及其所采用的网络协议
  • 做网站服务器应该怎么配置网页美工设计实践性教案
  • 响应式网站导航栏内容泰安网站营销推广
  • 南通营销网站开发软件开发工具名词解释
  • 吉林企业网站模板建站哪个好wordpress后台新建慢
  • 整合营销的成功案例肇庆seo优化
  • 网站关键字标签合肥高端网站建设设计公司哪家好
  • 大型企业网站设计案例免费在线看片
  • 云南网站开发公司找哪家网站弹出式链接后台怎么做
  • 电商网站的支付模块怎么做企业网站建设招标文件
  • 旅游在线网站开发十八个免费的舆情网站
  • 网站怎么申请百度小程序火车头采集发布wordpress
  • 外贸网站的推广技巧有哪些莱芜网吧
  • 溧阳城乡建设局网站ps中网站页面做多大的
  • sns社交网站 有哪些wordpress开发分类筛选
  • 黄石网站建设教程网上怎样查询企业资质
  • 国内设计师交流网站怎样做自己的网站钻钱
  • 无锡专业网站推广网络营销组合策略
  • 网站建设的安全威胁中国建设银行的网站色彩
  • 中小型企业网站建设与管理潍坊做网站哪家公司最好
  • 广州白云机场网站建设免费的网站模版