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