In [1]:
def row(img2d):
return np.shape(img2d)[0]
def col(img2d):
return np.shape(img2d)[1]
def layer_mean(img2d):
img1d = img2d[img2d<255]
return img1d.mean()
def hist_max(img2d):
img1d = img2d[img2d<255]
[n, bins, patches]= plt.hist(img1d, np.arange(255))
return bins[n.argmax()]
def edge_length(img2d):
"gray input"
imgsize = float((img2d.shape[0]*img2d.shape[1]))
med_filter = ndimg.median_filter(img2d, size = (5,5))
edges = filter.canny(med_filter,3)
return edges.sum()/imgsize
def edge_sobel_h(img2d):
"gray input"
imgsize = float((img2d.shape[0]*img2d.shape[1]))
med_filter = ndimg.median_filter(img2d, size = (5,5))
edges_h = filter.hsobel(med_filter/255.)
return edges_h.sum()/imgsize
def edge_sobel_v(img2d):
"gray input"
imgsize = float((img2d.shape[0]*img2d.shape[1]))
med_filter = ndimg.median_filter(img2d, size = (5,5))
edges_v = filter.vsobel(med_filter/255.)
return edges_v.sum()/imgsize
def edge_sobel(img2d):
"gray input"
imgsize = float((img2d.shape[0]*img2d.shape[1]))
med_filter = ndimg.median_filter(img2d, size = (5,5))
edges = filter.sobel(med_filter/255.)
return edges.sum()/imgsize
def houghLine(img2d):
"gray input"
med_filter = ndimg.median_filter(img2d, size = (5,5))
edges = filter.sobel(med_filter/255.)
[H,theta,distances] = transform.hough_line(edges);
imgsize = float(len(theta)*len(distances))
return H.sum()/imgsize
def cate_extract(image_path):
cate_temp = image_path.replace(MYDIRECTORY,'')
cate = re.search(r'/.+?/', cate_temp)
return cate_map[cate.group()[1:-1]]
def features(image_path):
#red mean
img2d = ndimg.imread(image_path)
img2d_gray = ndimg.imread(image_path, flatten= True)
row_n = row(img2d_gray)
col_n = col(img2d_gray)
red_mean = layer_mean(img2d[...,0])
green_mean = layer_mean(img2d[...,1])
blue_mean = layer_mean(img2d[...,2])
gray_mean = layer_mean(img2d_gray)
red_most = hist_max(img2d[...,0])
green_most = hist_max(img2d[...,1])
blue_most = hist_max(img2d[...,2])
gray_most = hist_max(img2d_gray)
length = edge_length(img2d_gray)
sobel_h = edge_sobel_h(img2d_gray)
sobel_v = edge_sobel_v(img2d_gray)
sobel = edge_sobel(img2d_gray)
hough = houghLine(img2d_gray)
cate = cate_extract(image_path)
# return list([red_mean, green_mean])
return list([row_n, col_n, red_mean, green_mean, blue_mean, gray_mean,\
red_most,green_most,blue_most, gray_most,\
length, sobel_h, sobel_v, sobel, hough, cate])
In [ ]: