代码语言:javascript复制
import numpy as np
from matplotlib import pyplot as plt
def is_vaild(X,Y,point):
if point[0]<0 or point[0]>=X:
return False
if point[1]<0 or point[1]>=Y:
return False
return True
def getNeighbors(X,Y,x,y,dist):
cn1=(x dist,y dist)
cn2=(x dist,y)
cn3=(x dist,y-dist)
cn4=(x,y-dist)
cn5=(x-dist,y-dist)
cn6=(x-dist,y)
cn7=(x-dist,y dist)
cn8=(x,y dist)
point=(cn1,cn2,cn3,cn4,cn5,cn6,cn7,cn8)
Cn=[]
for i in point:
if is_vaild(X,Y,i):
Cn.append(i)
return Cn
def corrlogram(img,dist):
xx,yy,tt=img.shape
cgram=np.zeros((256,256),np.uint8)
for x in range(xx):
for y in range(yy):
for t in range(tt):
color_i=img[x,y,t]# X的某一个通道的像素值
neighbors_i=getNeighbors(xx,yy,x,y,dist)
for j in neighbors_i:
j0=j[0]
j1=j[1]
color_j=img[j0,j1,t]#X的某一个邻域像素点的某一个通道的像素值
cgram[color_i,color_j] =1
return cgram
image=cv2.imread('C:/Users/xpp/Desktop/Lena.png',1)
plt.imshow(image)
plt.show()
dist=4
cgram=corrlogram(image,dist)
plt.imshow(cgram)
plt.show()
算法:颜色相关图是显示像素在图像中的占比,反映不同颜色对间的空间位置的相关性,比颜色直方图和颜色聚合向量具有更高的检索效率,特别是查询空间关系一致的图像。