In preparation to developing a classifier this script just tests which features could be used. In some sense this script is more for debugging than highlighting a specific algorithm.
import math
import numpy as np
import matplotlib.pyplot as plt
import skimage
from skimage import io, measure, exposure, filters
from skimage.color import rgba2rgb, rgb2gray
from sklearn.cluster import KMeans
from skimage.util import compare_images
from skimage.filters.rank import entropy
from skimage.feature import greycomatrix, greycoprops
from skimage.morphology import disk
from scipy.stats import entropy
import os
import csv
%matplotlib inline
def extract_features(image_input):
gray = rgb2gray(image_input)
[counts, bins] = exposure.histogram(gray,nbins=8,source_range='dtype',normalize=True)
v = counts.flatten()
#fig, ax = plt.subplots(figsize=(12, 12))
#plt.subplot(1,3,1)
#plt.imshow(image_input)
#plt.subplot(1,3,2)
#plt.imshow(gray)
gray_uint = (255*gray).astype(np.uint8)
glcm = greycomatrix(gray_uint, distances=[5], angles=[0], levels=256,
symmetric=True, normed=True)
v2 = np.zeros(6)
v2[0] = greycoprops(glcm, 'contrast')[0, 0]
v2[1] = greycoprops(glcm, 'dissimilarity')[0, 0]
v2[2] = greycoprops(glcm, 'homogeneity')[0, 0]
v2[3] = greycoprops(glcm, 'ASM')[0, 0]
v2[4] = greycoprops(glcm, 'energy')[0, 0]
v2[5] = greycoprops(glcm, 'correlation')[0, 0]
print(v2)
return v
normal1 = "../images/papsmear-data/normal_superficiel/157268504-157268544-001.BMP"
normal2 = "../images/papsmear-data/normal_superficiel/158987493-158987505-001.BMP"
normal3 = "../images/papsmear-data/normal_superficiel/209047526-209047717-001.BMP"
displastic1 = "../images/papsmear-data/severe_dysplastic/153829745-153829768-002.BMP"
displastic2 = "../images/papsmear-data/severe_dysplastic/153830680-153830827-002.BMP"
displastic3 = "../images/papsmear-data/severe_dysplastic/153831352-153831372-003.BMP"
im_normal1 = io.imread(normal1)
im_normal2 = io.imread(normal2)
im_normal3 = io.imread(normal3)
im_displastic1 = io.imread(displastic1)
im_displastic2 = io.imread(displastic2)
im_displastic3 = io.imread(displastic3)
extract_features(im_normal1)
extract_features(im_normal2)
extract_features(im_normal3)
extract_features(im_displastic1)
extract_features(im_displastic2)
extract_features(im_displastic3)
fig, ax = plt.subplots(figsize=(12, 12))
plt.subplot(2,3,1)
plt.imshow(im_normal1)
plt.subplot(2,3,2)
plt.imshow(im_normal2)
plt.subplot(2,3,3)
plt.imshow(im_normal3)
plt.subplot(2,3,4)
plt.imshow(im_displastic1)
plt.subplot(2,3,5)
plt.imshow(im_displastic2)
plt.subplot(2,3,6)
plt.imshow(im_displastic3)