python冒泡排序算法流程图,python编写函数实现冒泡排序
使用python,共制作了6种图像增强算法。
1 )直方图平差
2 )基于巴德曼算子
3 )通过对数变换
4 )基于伽马变换
5 )限制对比度的自适应直方图平差:CLAHE
6 ) retinex-SSR
7 ) retinex-MSR中,6和七为相同类型的变化。
可以将每个方法编写为一个函数,将其封装并直接在主函数中调用。
使用同一张图进行效果比较。
映像扩展效果如下:
直方图平均化:对比度低的图像适合于使用直方图平均化方法来增强图像的细节
巴德曼算子可以提高局部图像对比度
原木对数变换对于整体对比度低、灰度值低的图像非常有效
伽马变换在图像对比度低、整体亮度值高(照相机曝光过度)时的图像强调效果明显
均衡化和retinex的效果都很好
大蟒代码如下所示。
#图像增强算法、图像锐化算法
# 1)直方图平差2 ) badmn算子3 )对数变换4 )伽玛变换5)CLAHE 6)Retinex-SSR 7)Retinex-MSR
#这里,通过巴德曼算子进行的图像增强,使用空域卷积运算实现滤波
#同一图像的对比度增强效果
#直方图平均化:低对比度图像适合使用直方图平均化方法增强图像的细节
# badmn操作员可以提高局部图像对比度
#日志对数转换对整体对比度低、灰度值低的图像有效
#伽马变换在图像对比度低且整体亮度值高(照相机曝光过度)时的图像强调效果明显
导入cv2
将数组作为铭牌导入
将matplotlib.pyplot作为血小板计数导入
#直方图均衡强化
defhist(图像) :
r,g,b=cv2.split(image))。
R1=cv2.equalizehist(r)))))))))))。
G1=cv2.equalizehist(g)))))))))))))))。
B1=cv2.equalizehist(b)))))))))))))))。
image_equal_clo=cv2.merge([R1,g1,b1])
返回图像_相等_接近
# badmn运算符
定义拉普拉斯算子(图像) :
内核=NP .数组([0,- 1,0 ],[-1,5,-1],[0,-1,0 ]))).
image_lap=cv2.filter2d(image,cv2 .CV_8UC3,内核))))))))))).
返回图像_lap
#对数变换
定义日志(图像) :
image _ log=NP。uint 8(NP。log(NP。数组(图像)1))
normalize(image_log,image_log,0,255,cv2 .NORM_MINMAX)。
转换为8位图像显示
CV2.convertscaleabs(image_log,image_log)))))。
返回图像_日志
#变换
定义伽玛(图像) :
f伽玛=2
image _ gamma=NP。uint 8(NP。动力((NP。数组)image)/255.0),fgamma ) * 255.0)))))。
cv2.normalize(image_gamma,image_gamma,0,255,cv2 .NORM_MINMAX)。
cv2。convertscaleabs(image_gamma,image_gamma)))))。
返回图像_伽玛
#限制对比度的自适应直方图均衡化均衡化
defclahe(图像) :
b,g,r=cv2.split(image)))
clahe=cv2。创建clahe(剪辑限制=2.0,tilegridsize=(8,8))
b=clahe.apply(b))。
g=clahe.apply(g))。
r=clahe.apply(r))。
image_clahe=cv2.merge([b,g,r])。
返回图像_clahe
efreplacezeroes(数据) :
min _非零=min(数据[ NP。非零(数据)]
data[data==0]=min _非零
返回数据
# retinex SSR
def SSR(src_img,size):
L_blur=cv2 .GaussianBlur(src_img,(size,size),0)
img=替换零(src _ img)
L _ blur=替换零(L _ blur)
dst_Img=cv2.log(img/255.0)
dst_Lblur=cv2.log(L_blur/255.0)
dst_IxL=cv2.multiply(dst_Img,dst_Lblur)
log_R=cv2.subtract(dst_Img,dst_IxL)
dst_R=cv2.normalize(log_R,None,0,255,cv2 .NORM_MINMAX)
log _ uint 8=cv2。converscaleabs(dst _ R)
返回log_uint8
定义SSR_image(图像):
尺寸=3
b_gray,g_gray,r_gray=cv2.split(image)
b_gray=SSR(b_gray,size)
g_gray=SSR(g_gray,size)
r_gray=SSR(r_gray,size)
result=cv2.merge([b_gray,g_gray,r_gray])
回送结果
# retinex寄存器
def MSR(img,秤):
重量=1/3.0
scales_size=len(scales)
h,w=img.shape[:2]
log_R=np.zeros((h,w),dtype=np.float32)
对于范围内的I(scales _ size):
img=替换零(img)
L_blur=cv2 .GaussianBlur(img,(scales[i],scales[i]),0)
L _ blur=替换零(L _ blur)
dst_Img=cv2.log(img/255.0)
dst_Lblur=cv2.log(L_blur/255.0)
dst_Ixl=cv2.multiply(dst_Img,dst_Lblur)
log _ R=重量* cv2。减法(dst _ Img,dst_Ixl)
normalize(log_R,None,0,255,cv2 .NORM_MINMAX)
log _ uint 8=cv2。converscaleabs(dst _ R)
返回log_uint8
def MSR _图像(图像):
scales=[15,101,301] # [3,5,9]
b_gray,g_gray,r_gray=cv2.split(image)
b_gray=MSR(b_gray刻度)
g_gray=MSR(g_gray,刻度)
r_gray=MSR(r_gray,刻度)
result=cv2.merge([b_gray,g_gray,r_gray])
回送结果
if __name__==__main__ :
image=cv2.imread(example.jpg )
image_gray=cv2.cvtColor(image,cv2 .COLOR_BGR2GRAY)
情节子情节(4,2,1)
plt.imshow(图片)
plt.axis("关")
工厂名称("官方")
# 直方图均衡增强
image_equal_clo=hist(图像)
情节子情节(4,2,2)
plt.imshow(image_equal_clo)
plt.axis("关")
plt.title(equal_enhance )
# badmn算法增强
image_lap=拉普拉斯算子(图片)
情节子情节(4,2,3)
plt.imshow(image_lap)
plt.axis("关")
plt.title(拉普拉斯增强)
#日志对象算法增强
image_log=log(图像)
情节子情节(4,2,4)
plt.imshow(image_log)
plt.axis("关")
plt.title(log_enhance )
# 伽马变换
image_gamma=伽马(图像)
情节子情节(4,2,5)
PLT。即时消息显示(图片_伽马)
plt.axis("关")
plt.title(gamma_enhance )
# CLAHE
image_clahe=clahe(image)
情节子情节(4,2,6)
plt.imshow(image_clahe)
plt.axis("关")
PLT。标题(“CLAHE”)
# retinex_ssr
image_ssr=SSR_image(图像)
情节子情节(4,2,7)
plt.imshow(image_ssr)
plt.axis("关")
plt.title(SSR )
# retinex_msr
汽水分离再热器图像(图像)
情节子情节(4,2,8)
plt.imshow(image_msr)
plt.axis("关")
plt.title(MSR )
plt.show()
增强效果如下图所示:
到此这篇关于大蟒图像增强算法实现详解的文章就介绍到这了,更多相关大蟒图像增强算法内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。