Konsep dasar Pengenalan pola Edges & Lines

Contour finding

Berikut ini menggunakan metode marching squares untuk menemukan kontur bernilai konstan dalam sebuah gambar. Dalam skimage.measure.find_contours, nilai larik diinterpolasi secara linier untuk memberikan presisi kontur keluaran yang lebih baik. Kontur yang memotong tepi gambar terbuka; semua yang lain ditutup.

import numpy as np

import matplotlib.pyplot as plt

 from skimage import measure

 

 # Construct some test data

x, y = np.ogrid[-np.pi:np.pi:100j, -np.pi:np.pi:100j]

r = np.sin(np.exp((np.sin(x)**3 + np.cos(y)**2)))

 

# Find contours at a constant value of 0.8

contours = measure.find_contours(r, 0.8)

 

# Display the image and plot all contours found

fig, ax = plt.subplots()

ax.imshow(r, cmap=plt.cm.gray)

 

for contour in contours:

    ax.plot(contour[:, 1], contour[:, 0], linewidth=2)

 

ax.axis('image')

ax.set_xticks([])

ax.set_yticks([])

plt.show()



Convex Hull

Convex hull dari citra biner adalah kumpulan piksel yang termasuk dalam poligon cembung terkecil yang mengelilingi semua piksel putih di input.

import matplotlib.pyplot as plt

 

from skimage.morphology import convex_hull_image

from skimage import data, img_as_float

from skimage.util import invert

 

# The original image is inverted as the object must be white.

image = invert(data.horse())

 

chull = convex_hull_image(image)

 

fig, axes = plt.subplots(1, 2, figsize=(8, 4))

ax = axes.ravel()

 

ax[0].set_title('Original picture')

ax[0].imshow(image, cmap=plt.cm.gray)

ax[0].set_axis_off()

 

ax[1].set_title('Transformed picture')

ax[1].imshow(chull, cmap=plt.cm.gray)

ax[1].set_axis_off()

 

plt.tight_layout()

plt.show()





Detektor tepi Canny

Filter Canny adalah detektor tepi multi-tahap yang menggunakan filter berdasarkan turunan Gaussian untuk menghitung intensitas gradien. Gaussian mengurangi efek noise yang ada pada gambar. Kemudian, tepi potensial ditipiskan menjadi kurva 1-piksel dengan menghilangkan piksel non-maksimum dari besaran gradien. Akhirnya, piksel tepi disimpan atau dihapus menggunakan ambang batas histeresis pada besaran gradien.

Canny memiliki tiga parameter yang dapat disesuaikan: lebar Gaussian , dan ambang batas rendah dan tinggi untuk ambang batas histeresis.

import numpy as np

import matplotlib.pyplot as plt

from scipy import ndimage as ndi

 

from skimage import feature

 

 

# Generate noisy image of a square

im = np.zeros((128, 128))

im[32:-32, 32:-32] = 1

 

im = ndi.rotate(im, 15, mode='constant')

im = ndi.gaussian_filter(im, 4)

im += 0.2 * np.random.random(im.shape)

 

# Compute the Canny filter for two values of sigma

edges1 = feature.canny(im)

edges2 = feature.canny(im, sigma=3)

 

# display results

fig, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3, figsize=(8, 3),

                                    sharex=True, sharey=True)

 

ax1.imshow(im, cmap=plt.cm.gray)

ax1.axis('off')

ax1.set_title('noisy image', fontsize=20)

 

ax2.imshow(edges1, cmap=plt.cm.gray)

ax2.axis('off')

ax2.set_title(r'Canny filter, $\sigma=1$', fontsize=20)

 

ax3.imshow(edges2, cmap=plt.cm.gray)

ax3.axis('off')

ax3.set_title(r'Canny filter, $\sigma=3$', fontsize=20)

 

fig.tight_layout()

 

plt.show()

Silabus Pengenalan pola dan analisis citra

Share on :

8 Responses to "Konsep dasar Pengenalan pola Edges & Lines"