国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python 檢測圖片是否有馬賽克

瀏覽:37日期:2022-07-03 15:06:21

首先是Canny邊緣檢測,將圖片的邊緣檢測出來,參考博客https://www.cnblogs.com/techyan1990/p/7291771.html

原理講的很清晰,給原博主一個贊

邊緣檢測之后按照正方形檢索來判定是否是馬賽克內容

原理知曉了之后就很好做了

話說MATLAB轉化為python的過程還是很有趣的

from PIL import Imageimport numpy as npimport mathimport warnings#算法來源,博客https://www.cnblogs.com/techyan1990/p/7291771.html和https://blog.csdn.net/zhancf/article/details/49736823highhold=200#高閾值lowhold=40#低閾值warnings.filterwarnings('ignore')demo=Image.open('noise_check//23.jpg')im=np.array(demo.convert(’L’))#灰度化矩陣print(im.shape)print(im.dtype)height=im.shape[0]#尺寸width=im.shape[1]gm=[[0 for i in range(width)]for j in range(height)]#梯度強度gx=[[0 for i in range(width)]for j in range(height)]#梯度xgy=[[0 for i in range(width)]for j in range(height)]#梯度ytheta=0#梯度方向角度360度dirr=[[0 for i in range(width)]for j in range(height)]#0,1,2,3方位判定值highorlow=[[0 for i in range(width)]for j in range(height)]#強邊緣、弱邊緣、忽略判定值2,1,0rm=np.array([[0 for i in range(width)]for j in range(height)])#輸出矩陣#高斯濾波平滑,3x3for i in range(1,height-1,1): for j in range(1,width-1,1): rm[i][j]=im[i-1][j-1]*0.0924+im[i-1][j]*0.1192+im[i-1][j+1]*0.0924+im[i][j-1]*0.1192+im[i][j]*0.1538+im[i][j+1]*0.1192+im[i+1][j-1]*0.0924+im[i+1][j]*0.1192+im[i+1][j+1]*0.0924for i in range(1,height-1,1):#梯度強度和方向 for j in range(1,width-1,1): gx[i][j]=-rm[i-1][j-1]+rm[i-1][j+1]-2*rm[i][j-1]+2*rm[i][j+1]-rm[i+1][j-1]+rm[i+1][j+1] gy[i][j]=rm[i-1][j-1]+2*rm[i-1][j]+rm[i-1][j+1]-rm[i+1][j-1]-2*rm[i+1][j]-rm[i+1][j+1] gm[i][j]=pow(gx[i][j]*gx[i][j]+gy[i][j]*gy[i][j],0.5) theta=math.atan(gy[i][j]/gx[i][j])*180/3.1415926 if theta>=0 and theta<45: dirr[i][j]=2 elif theta>=45 and theta<90: dirr[i][j]=3 elif theta>=90 and theta<135: dirr[i][j]=0 else: dirr[i][j]=1for i in range(1,height-1,1):#非極大值抑制,雙閾值監測 for j in range(1,width-1,1): NW=gm[i-1][j-1] N=gm[i-1][j] NE=gm[i-1][j+1] W=gm[i][j-1] E=gm[i][j+1] SW=gm[i+1][j-1] S=gm[i+1][j] SE=gm[i+1][j+1] if dirr[i][j]==0: d=abs(gy[i][j]/gx[i][j]) gp1=(1-d)*E+d*NE gp2=(1-d)*W+d*SW elif dirr[i][j]==1: d=abs(gx[i][j]/gy[i][j]) gp1=(1-d)*N+d*NE gp2=(1-d)*S+d*SW elif dirr[i][j]==2: d=abs(gx[i][j]/gy[i][j]) gp1=(1-d)*N+d*NW gp2=(1-d)*S+d*SE elif dirr[i][j]==3: d=abs(gy[i][j]/gx[i][j]) gp1=(1-d)*W+d*NW gp2=(1-d)*E+d*SE if gm[i][j]>=gp1 and gm[i][j]>=gp2: if gm[i][j]>=highhold: highorlow[i][j]=2 rm[i][j]=1 elif gm[i][j]>=lowhold: highorlow[i][j]=1 else: highorlow[i][j]=0 rm[i][j]=0 else: highorlow[i][j]=0 rm[i][j]=0for i in range(1,height-1,1):#抑制孤立低閾值點 for j in range(1,width-1,1): if highorlow[i][j]==1 and (highorlow[i-1][j-1]==2 or highorlow[i-1][j]==2 or highorlow[i-1][j+1]==2 or highorlow[i][j-1]==2 or highorlow[i][j+1]==2 or highorlow[i+1][j-1]==2 or highorlow[i+1][j]==2 or highorlow[i+1][j+1]==2): #highorlow[i][j]=2 rm[i][j]=1#img=Image.fromarray(rm)#矩陣化為圖片#img.show()#正方形法判定是否有馬賽克value=35lowvalue=16imgnumber=[0 for i in range(value)]for i in range(1,height-1,1):#性價比高的8點判定法 for j in range(1,width-1,1): for k in range(lowvalue,value): count=0 if i+k-1>=height or j+k-1>=width:continue if rm[i][j]!=0:count+=1#4個頂點 if rm[i+k-1][j]!=0:count+=1 if rm[i][j+k-1]!=0:count+=1 if rm[i+k-1][j+k-1]!=0:count+=1 e=(k-1)//2 if rm[i+e][j]!=0:count+=1 if rm[i][j+e]!=0:count+=1 if rm[i+e][j+k-1]!=0:count+=1 if rm[i+k-1][j+e]!=0:count+=1 if count>=6: imgnumber[k]+=1for i in range(lowvalue,value): print('length:{} number:{}'.format(i,imgnumber[i]))

結果圖可以上一下了

可以看出在一定程度上能夠檢測出馬賽克內容

原圖

python 檢測圖片是否有馬賽克

邊緣圖案

python 檢測圖片是否有馬賽克

正方形數量

python 檢測圖片是否有馬賽克

以上就是python 檢測圖片是否有馬賽克的詳細內容,更多關于python 檢測圖片馬賽克的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 最新毛片久热97免费精品视频 | 扒开双腿猛进入喷水免费视频 | 夜色www | 国产三级在线视频播放线 | a三级黄色片 | 久久精品国产一区二区 | 色黄在线| 国产女女视屏免费 | 精品一区二区三区在线视频观看 | 欧美一区二区视频三区 | 亚洲欧美日韩久久精品第一区 | 亚洲久草在线 | 欧美一区二区三区视频在线 | 国产a网| 亚洲国产片在线观看 | 欧美精品片在线观看网站 | 欧美xx在线观看 | 久久国产精品高清一区二区三区 | 性做久久久久免费看 | 国产精品欧美韩国日本久久 | 亚洲tv成人天堂在线播放 | 中文字幕波多野不卡一区 | 色在线免费视频 | 国内精品1区1区3区4区 | 亚洲三级在线观看 | 国产高清在线精品 | 国产成人18黄网站免费网站 | 欧美亚洲另类在线 | 香蕉tv亚洲专区在线观看 | 精品一区二区三区中文字幕 | 美女视频黄色网址 | 国产一级视频久久 | 一级a毛片免费观看久久精品 | 欧美日韩一区二区在线观看 | 国产精品精品国产一区二区 | 免费黄色成人 | 久久免费黄色 | 国产在亚洲线视频观看 | 在线视频一区二区三区 | 理伦毛片| 中文字幕在线免费观看视频 |