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 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() |
0021 Fajar Akbar Maulana, Selesai
BalasHapus0007, Lavina. selesai
BalasHapus0006, Farisi, selesai.
BalasHapus0022, syaripah, selesai
BalasHapus0017, Ratih. Selesai
BalasHapus0016, Novita. Selesai
BalasHapus0018 Ridha, Selesai
BalasHapus0001 Adit, Selesai
BalasHapus