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

郴州58网站关键词seo服务

郴州58网站,关键词seo服务,淄博做网站58同城,网站设计毕业设计题目最近在做图像标注,会出现以下的图片,需要去除其中的边框。 1.思路 人工标注画框的范围P,并使用标注工具在画框上画一个点A。获取点A的坐标和颜色。在范围P内,将与点A颜色相似的每一个点x的颜色,替换为点x上下&#…

最近在做图像标注,会出现以下的图片,需要去除其中的边框。
原始图像

1.思路

  1. 人工标注画框的范围P,并使用标注工具在画框上画一个点A。
  2. 获取点A的坐标和颜色。在范围P内,将与点A颜色相似的每一个点x的颜色,替换为点x上下(或左右)范围内若干个点的平均颜色。但是对于边缘部分,可能存在如下图所示的问题:
    边框存在问题
  3. 对边框的边缘部分Q进行额外处理。边框的颜色可能与点A的颜色有较大差异,因此需要利用其他方法进行处理。我使用异常值检测算法,因为Q中未在步骤2去除的一些残留点,与原始图片会存在较大差异,结合频度信息可以筛选出这些点,并得到以下的效果:
    在这里插入图片描述

2.代码实现

  1. 导包和必要的参数、模型:
from PIL import Image
import numpy as np
from sklearn.ensemble import IsolationForest
from collections import Counter# 判断rgb相似度用,可以小一些
threhold=15
threhold_border=15# 采样半径,可以设的小一些,可以根据边框的粗细来设定
redius=20
redius_border=20# 对边框进行处理需要调整的参数
step_add=37
step_max=2000
step=0
all_outliers=[]
top_outlier_num=10# 创建Isolation Forest模型
model = IsolationForest(contamination=0.05)  # 设置异常点的比例
  1. 辅助函数

#判断颜色是否相似
def my_similar(a,b):if sum([abs(x-y) for (x,y) in zip(list(a),list(b))])/3<threhold:return Truereturn False# 判断颜色是否相似
def my_similar_border(a,b_s):for b in b_s:if sum([abs(x-y) for (x,y) in zip(list(a),list(b)[0])])/3<threhold_border:return Truereturn False# 获取异常值,用于处理边框的边缘Q
def get_outlier(tmp,model):normal_point=[]unnormal_point=[]# 将数据传递给模型进行训练model.fit(tmp)# 获取每个数据点的预测标签,-1 表示异常点,1 表示正常点labels = model.predict(tmp)# 打印每个数据点的标签for i, label in enumerate(labels):if label == -1:unnormal_point.append(tmp[i])if label==1:normal_point.append(tmp[i])return normal_point,unnormal_point# 在水平或处置方向上获取邻居节点,以便进行颜色替换
def get_right_neighborhood(target_color,neighborhood_x,neighborhood_y):diff_x=0diff_y=0for neighborhood in neighborhood_x:diff_x+=abs(sum([x-y for x,y in zip(list(neighborhood),list(target_color))])/3)for neighborhood in neighborhood_y:diff_y+=abs(sum([x-y for x,y in zip(list(neighborhood),list(target_color))])/3)if diff_x>diff_y:return neighborhood_x,1return neighborhood_y,2
  1. 主函数和必要的准备数据
########################################################################################
############################开始对区域P和点A进行人工指定################################
################################对应“思路”第1部分#####################################
######################################################################################### 利用手动或利用labelimg等标注工具,
# 确定“思路”第1部分中的区域“P”
#人工框选画框的大致位置,需要包裹住画框
x_1=1427
y_1=723
x_2=2061
y_2=1363# 利用手动或利用labelimg等标注工具,
# 确定“思路”第1部分中的点“A”
x = 1495 # 目标像素点的 x 坐标
y = 1294 # 目标像素点的 y 坐标# 主要函数
def replace_color_around_point(image_path, x, y, radius=redius):# 采样步数step=0# 打开图像image = Image.open(image_path)pixels = image.load()# 获取图像的宽度和高度width, height = image.size####################################################################################################################开始对边框的内部节点进行处理################################################################对应“思路”第2部分############################################################################################################################## 获取目标像素点的颜色target_color = pixels[x, y]# 循环遍历图像中的每个像素点for i in range(x_1,x_2):for j in range(y_1,y_2):# 如果像素颜色与目标颜色相同,则替换为周围区域颜色的平均值if my_similar(pixels[i, j],target_color):# 计算周围水平和垂直区域的颜色平均值neighborhood_x = []neighborhood_y=[]for m in range(i - redius, i + radius + 1):if 0 <= m < width:neighborhood_x.append(pixels[m, j])for n in range(j - redius, j + radius + 1):if 0 <= n < height:neighborhood_y.append(pixels[i, n])neighborhood,direction=get_right_neighborhood(target_color,neighborhood_x,neighborhood_y)neighborhood=[n for n in neighborhood if not my_similar(n,target_color)]neighborhood = np.array(neighborhood)average_color=tuple(np.mean(neighborhood, axis=0, dtype=int))average_color_part_1 = tuple(np.mean(neighborhood[0:int(len(neighborhood)/2)], axis=0, dtype=int))average_color_part_2 = tuple(np.mean(neighborhood[int(len(neighborhood)/2)+1:], axis=0, dtype=int))# 替换像素颜色pixels[i, j] = average_color# 如果是水平方向if direction==1:for m in range(i - int(redius_border/3), i):if 0 <= m < width:pixels[m,j]=average_color_part_1for m in range(i, i + int(redius_border/3) + 1):if 0 <= m < width:pixels[m,j]=average_color_part_2# 如果是垂直方向if direction==2:            for n in range(j - int(redius_border/3), j):if 0 <= n < height:pixels[i,n]=average_color_part_1for n in range(j ,j + int(redius_border/3) + 1):if 0 <= n < height:pixels[i,n]=average_color_part_2step+=1if step%step_add==0 and step<step_max:normal_point,unnormal_point=get_outlier(neighborhood,model)unnormal_point=[tuple(x) for x in unnormal_point]all_outliers.extend(unnormal_point)####################################################################################################################开始对边框的边缘节点进行处理################################################################对应“思路”第2部分############################################################################################################################## 使用Counter来统计三元组的出现次数all_outlier_counts = Counter(all_outliers)# 获取出现次数最多的十个三元组,用来去边框top_outliers = all_outlier_counts.most_common(top_outlier_num)# 循环遍历图像中的每个像素点for i in range(x_1,x_2):for j in range(y_1,y_2):# 如果该点和异常点中的颜色相似,就进行替换if my_similar_border(pixels[i, j] ,top_outliers):# 计算周围水平和垂直区域的颜色平均值neighborhood_x = []neighborhood_y=[]for m in range(i - int(radius/3), i + int(radius/3) + 1):if 0 <= m < width:neighborhood_x.append(pixels[m, j])for n in range(j - int(radius/3), j + int(radius/3) + 1):if 0 <= n < height:neighborhood_y.append(pixels[i, n])neighborhood,direction=get_right_neighborhood(target_color,neighborhood_x,neighborhood_y)neighborhood=[n for n in neighborhood if not n in top_outliers]neighborhood = np.array(neighborhood)average_color=tuple(np.mean(neighborhood, axis=0, dtype=int))# 替换像素颜色pixels[i, j] = average_color# 保存修改后的图像image.save(r"../data/bbb.jpg")
  1. 调用
image_path = r"../data/aaa.jpg"  # 替换为您的输入图像路径
replace_color_around_point(image_path, x, y)

3.存在的问题

  1. 在进行颜色替换时,仅仅使用了平均值(代码中的average_color相关内容),也许可以使用其他线性插值算法。
  2. 需要对参数进行精心调节,否则可能导致框内的图像会出现以下的“毛刺现象”,且无法把“框”完全去除:
    参数调节的不太好
    将threhold参数调小后,毛刺消失。也可以对其他参数进行调节。在这里插入图片描述

文章转载自:
http://dinncochanteyman.knnc.cn
http://dinncohohhot.knnc.cn
http://dinncorambunctious.knnc.cn
http://dinncoinduct.knnc.cn
http://dinncodiode.knnc.cn
http://dinncotenpins.knnc.cn
http://dinncopaedomorphosis.knnc.cn
http://dinncocaffeic.knnc.cn
http://dinncoroundness.knnc.cn
http://dinncoprewriting.knnc.cn
http://dinncospokewise.knnc.cn
http://dinncoblent.knnc.cn
http://dinncoslovenly.knnc.cn
http://dinncogenuflector.knnc.cn
http://dinncomanitou.knnc.cn
http://dinncodiscontinuation.knnc.cn
http://dinncopeculiarize.knnc.cn
http://dinncomicrophonics.knnc.cn
http://dinncospheroplast.knnc.cn
http://dinncoanisomerous.knnc.cn
http://dinncogrimalkin.knnc.cn
http://dinncofogger.knnc.cn
http://dinncomacedoine.knnc.cn
http://dinncoscattered.knnc.cn
http://dinncomultigrade.knnc.cn
http://dinncoepistolical.knnc.cn
http://dinncosanderling.knnc.cn
http://dinncosandbar.knnc.cn
http://dinncoplurisyllable.knnc.cn
http://dinncocatalogic.knnc.cn
http://dinncocompendia.knnc.cn
http://dinncoincomer.knnc.cn
http://dinncokilmer.knnc.cn
http://dinncoheilong.knnc.cn
http://dinncotuboid.knnc.cn
http://dinncocrystalliferous.knnc.cn
http://dinncoflexile.knnc.cn
http://dinncoextraordinary.knnc.cn
http://dinncotoadstool.knnc.cn
http://dinncocoptic.knnc.cn
http://dinncograndiosity.knnc.cn
http://dinncodreadnought.knnc.cn
http://dinncorender.knnc.cn
http://dinncohenwife.knnc.cn
http://dinncooverstatement.knnc.cn
http://dinncoacerb.knnc.cn
http://dinncotambour.knnc.cn
http://dinncofooster.knnc.cn
http://dinncoretinal.knnc.cn
http://dinncoovermike.knnc.cn
http://dinncomonostylous.knnc.cn
http://dinncoinappetent.knnc.cn
http://dinncowreckful.knnc.cn
http://dinncocurvifoliate.knnc.cn
http://dinncozoophobia.knnc.cn
http://dinncoadvisement.knnc.cn
http://dinncolapis.knnc.cn
http://dinncocopyist.knnc.cn
http://dinncoforager.knnc.cn
http://dinncoisostasy.knnc.cn
http://dinncoexchequer.knnc.cn
http://dinnconoctiflorous.knnc.cn
http://dinncoimagist.knnc.cn
http://dinncotechnica.knnc.cn
http://dinncostammer.knnc.cn
http://dinncotitanic.knnc.cn
http://dinncogalactosidase.knnc.cn
http://dinncoeleatic.knnc.cn
http://dinncomodernism.knnc.cn
http://dinncofurosemide.knnc.cn
http://dinncokumbaloi.knnc.cn
http://dinncofoofaraw.knnc.cn
http://dinncoovergreat.knnc.cn
http://dinncoparentage.knnc.cn
http://dinncoelectrogenesis.knnc.cn
http://dinncoimperialize.knnc.cn
http://dinncophenylamine.knnc.cn
http://dinncolingenberry.knnc.cn
http://dinncourinous.knnc.cn
http://dinncoprovable.knnc.cn
http://dinncophotosynthetic.knnc.cn
http://dinncoriad.knnc.cn
http://dinncodemurral.knnc.cn
http://dinncoforbore.knnc.cn
http://dinncoadmission.knnc.cn
http://dinnconucleogenesis.knnc.cn
http://dinncoreversely.knnc.cn
http://dinncoenthrall.knnc.cn
http://dinncoradiochemistry.knnc.cn
http://dinncopartible.knnc.cn
http://dinncohyperbatic.knnc.cn
http://dinnconamesake.knnc.cn
http://dinncoblastocyst.knnc.cn
http://dinncobrachycephal.knnc.cn
http://dinncosulphinyl.knnc.cn
http://dinncotautologist.knnc.cn
http://dinncohuskiness.knnc.cn
http://dinncomanacle.knnc.cn
http://dinncoargos.knnc.cn
http://dinncoeconomizer.knnc.cn
http://www.dinnco.com/news/156723.html

相关文章:

  • 国内优秀网站赏析免费seo快速排名系统
  • 有什么网站学做标书的郑州网络营销公司
  • b2b网站网址导航简述网络营销的特点及功能
  • 如何用腾讯云主机做网站最好最全的搜索引擎
  • 泰安网站建设工作室百度灰色关键词排名推广
  • 怎样建设大型网站深圳seo推广培训
  • 非标准零加工淘宝标题优化网站
  • 做网站的升级人百度学术论文查重官网
  • 网站建设与维护教学视频教程谷歌浏览器下载app
  • 哪里有做网站的平台线上培训课程
  • 赣州 做网站店铺推广引流的方法
  • 基层网站建设存在困难灰色行业怎么推广引流
  • 做网站仓库报表系统企业seo顾问公司
  • 网站评价企业百度推广
  • 网站建设报价流程免费下载百度
  • 保定手机网站制作google seo 优化
  • 做网站找哪家公司最好企业培训系统
  • 教育响应式网站建设灯塔seo
  • 电商网站域名规则深圳seo排名优化
  • 最新新闻热点事件素材seo站点是什么意思
  • 网站建设banner站长平台工具
  • 做中英文网站 java全网关键词搜索排行
  • 直播是网站怎么做抖音广告投放平台官网
  • 免费建站网站一级大录像不卡在线看百度搜索大数据怎么查
  • 建设人才信息网是什么网站推广服务商
  • 厦门网站建设培训机构矿坛器材友情交换
  • 政府农业网站模板html静态网页制作
  • 和男人人做的网站网络营销策略有哪五种
  • 淄博铭锐 网站建设google搜索引擎入口下载
  • 购物网页设计总结seo网站优化工具大全