Professional Documents
Culture Documents
Code:
"""
======================
Histogram Equalization
======================
This examples enhances an image with low contrast, using a method called
*histogram equalization*, which "spreads out the most frequent intensity
values" in an image [1]_. The equalized image has a roughly linear
cumulative distribution function.
While histogram equalization has the advantage that it requires no parameters,
it sometimes yields unnatural looking images. An alternative method is
*contrast stretching*, where the image is rescaled to include all intensities
that fall within the 2nd and 98th percentiles [2]_.
.. [1] https://en.wikipedia.org/wiki/Histogram_equalization
.. [2] http://homepages.inf.ed.ac.uk/rbf/HIPR2/stretch.htm
"""
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
"""
image = img_as_float(image)
ax_img, ax_hist = axes
ax_cdf = ax_hist.twinx()
# Display image
ax_img.imshow(image, cmap=plt.cm.gray)
ax_img.set_axis_off()
# Display histogram
ax_hist.hist(image.ravel(), bins=bins, histtype='step', color='black')
ax_hist.ticklabel_format(axis='y', style='scientific', scilimits=(0, 0))
ax_hist.set_xlabel('Pixel intensity')
ax_hist.set_xlim(0, 1)
ax_hist.set_yticks([])
# Contrast stretching
p2, p98 = np.percentile(img, (2, 98))
img_rescale = exposure.rescale_intensity(img, in_range=(p2, p98))
# Equalization
img_eq = exposure.equalize_hist(img)
# Adaptive Equalization
img_adapteq = exposure.equalize_adapthist(img, clip_limit=0.03)
# Display results
fig = plt.figure(figsize=(8, 5))
axes = np.zeros((2, 4), dtype=np.object)
axes[0, 0] = fig.add_subplot(2, 4, 1)
for i in range(1, 4):
axes[0, i] = fig.add_subplot(2, 4, 1+i, sharex=axes[0,0], sharey=axes[0,0])
for i in range(0, 4):
axes[1, i] = fig.add_subplot(2, 4, 5+i)
Nhận xét:
Ở phương pháp này chất lượng hình ảnh phụ thuộc vào Pixel intensity. Tùy
thuộc vào yêu cầu của người dùng thì sẽ chọn cái loại pixel intensity khác
nhau. Ví dụ: histogram equalization là một kỹ thuật xử lý hình ảnh máy tính
được sử dụng để cải thiện độ tương phản trong hình ảnh. Nó hoàn thành điều
này bằng cách trải rộng hiệu quả các giá trị cường độ thường xuyên nhất, tức
là kéo dài phạm vi cường độ của hình ảnh. Phương pháp này thường làm tăng
độ tương phản toàn cục của hình ảnh khi dữ liệu có thể sử dụng của nó được
biểu thị bằng các giá trị tương phản gần. Điều này cho phép các khu vực có
độ tương phản cục bộ thấp hơn để có được độ tương phản cao hơn. Adaptive
equalization: Cân bằng thích ứng khác với cân bằng thông thường ở chỗ
phương pháp thích ứng tính toán một số biểu đồ, mỗi biểu đồ tương ứng với
một phần riêng biệt của hình ảnh và sử dụng chúng để phân phối lại các giá trị
độ đậm nhạt của hình ảnh. Do đó, nó thích hợp để cải thiện độ tương phản cục
bộ và nâng cao định nghĩa của các cạnh trong từng vùng của hình ảnh.
Câu 2: High-pass Fillter
Code
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import imread
from scipy import ndimage
#import Image
# matran 7x7
Nhận xét:
Trong phương pháp này chất lượng hình ảnh phụ thuộc vào kích
thương ma trận. Kích thước ma trận tăng thì chất lượng hình ảnh cũng tăng.