이미지 처리의 히스토그램 평활화
7052 단어 matplotlibnumpyseabornopencv2
이미지에 존재하는 다양한 계조의 발생 빈도를 나타냅니다.
시끄럽거나 어두운 이미지에서 시각적으로 만족스러운 결과를 생성합니다.
입력 이미지[2^8비트 이미지]:
출력 이미지:
import matplotlib.pyplot as plt
import cv2
import seaborn as sns
import numpy as np
img=cv2.imread("/Users/ruthvikrajam.v/Desktop/X-ray.jpg",0)
# Importing a greyscale image in 2D so 0 is passed as a parameter
plt.imshow(img, cmap='gray') # Displaying an opencv image using matplotlib
plt.hist(img,bins=20) # Plotting an Histogram for the Input Image
sns.distplot(img) # Plotting KDE of an image, the intensity values are not equally distributed
x=img.flatten() # The Flatten Image command merges all of the layers of the image into a single layer with no alpha channel
hist, bins= np.histogram(x,256,[0,256]) # 256 is no of bins, [0,256] means range which sets lower and upper range of bins
# Basically here we are finding the frequency of each grey level image from 0 to 255 and storing the result in hist
pdf=hist/(hist.sum())# Finding the Probability Distribution Function of the input image
cdf=pdf.cumsum() # Finding the Cumulative distribution of all the intensity values in an ascending order[0-255]
cdf_normalized= cdf*255 # Now we have to multiply each value with maximum intensity value of an input image
# Here we can do any other operation also but I have chosen to multiply with the maximum intensity value of an input image
rounded=np.round(cdf_normalized) # since digital image consists of discrete intensity values, rounding off to the nearest intensity value
img1=cv2.imread("/Users/ruthvikrajam.v/Desktop/X-ray.jpg",0)
row,col=img1.shape
for i in range(0,row): # row= 312 # col= 256
for j in range(0,col):
new=img1[i][j];
img1[i][j]=rounded[new];
# Here we are replacing the actual intensity value of each pixel with the rounded intensity value
plt.imshow(img1,cmap="gray") # Modified image
sns.distplot(img)
sns.distplot(img1)
# Compare the KDE for original and modified image
히스토그램 평준화를 수행한 후에도 균일한 분포를 볼 수 없는 이유는 무엇입니까?
답변: (1) 히스토그램 균등화는 PDF를 가능한 한 균일하게 만드는 동시에 이미지의 원래 속성을 존중하며 (2) 연속 CDF 값을 이산 CDF 값으로 변환합니다. 불연속 강도 값만 포함합니다.
이것은 결과적으로 완벽하게 균일한 히스토그램을 얻지 못하는 또 다른 이유이기도 합니다.
Reference
이 문제에 관하여(이미지 처리의 히스토그램 평활화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ruthvikraja_mv/histogram-equalisation-in-image-processing-331g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)