根据导师作业安排,在学习数字图像处理(刚萨雷斯版)第六章 彩色图像处理 中的彩色模型后,导师安排了一个比较有趣的作业:
融合原理为:
1 注意:遥感原RGB图image和灰度图Grayimage为测试用的输入图像;
2 步骤:(1)将RGB转换为HSV空间(H:色调,S:饱和度,V:明度);
(2)用Gray图像诶换掉HSV中的V;
(3)替换后的HSV转换回RGB空间即可得到结果。
书上只介绍了HSI彩色模型,并没有说到HSV,所以需要网上查找资料。
Python代码如下:
import cv2 import numpy as np import math from matplotlib import pyplot as plt def caijian(img):#裁剪图像与否根据选择图像大小而定,调用了OpenCV函数 weight=img.shape[0] height=img.shape[1] print(“图像大小为:%d*%d”%(weight,height)) img=cv2.resize(img,(int(weight/2),int(height/2)),interpolation=cv2.INTER_CUBIC) return(img) def graytograyimg(img): grayimg=img1 weight=img.shape[0] height=img.shape[1] for i in range(weight): for j in range(height): grayimg[i,j]=0.299img[i,j,0]+0.587img[i,j,1]+0.114img[i,j,2] return(grayimg) def RGBtoHSV(img): b,g,r=cv2.split(img) rows,cols=b.shape H=np.ones([rows,cols],“float”) S=np.ones([rows,cols],“float”) V=np.ones([rows,cols],“float”) print(“RGB图像大小:%d*%d”%(rows,cols)) for i in range(0, rows): for j in range(0, cols): MAX=max((b[i,j],g[i,j],r[i,j])) MIN=min((b[i,j],g[i,j],r[i,j])) V[i,j]=MAX if V[i,j]0: S[i,j]=0 else: S[i,j]=(V[i,j]-MIN)/V[i,j] if MAXMIN: H[i,j]=0 # 如果rgb三向量相同,色调为黑 elif V[i,j]==r[i,j]: H[i,j]=(60*(float(g[i,j])-b[i,j])/(V[i,j]-MIN)) elif V[i,j]==g[i,j]: H[i,j]=60*(float(b[i,j])-r[i,j])/(V[i,j]-MIN)+120 elif V[i,j]==b[i,j]: H[i,j]=60*(float(r[i,j])-g[i,j])/(V[i,j]-MIN)+240 if H[i,j]<0: H[i,j]=H[i,j]+360 H[i,j]=H[i,j]/2 S[i,j]=255*S[i,j] result=cv2.merge((H,S,V)) # cv2.merge函数是合并单通道成多通道 result=np.uint8(result) return(result) def graytoHSgry(grayimg,HSVimg): H,S,V=cv2.split(HSVimg) rows,cols=V.shape for i in range(rows): for j in range(cols): V[i,j]=grayimg[i][j][0] newimg=cv2.merge([H,S,V]) newimg=np.uint8(newimg) return newimg def HSVtoRGB(img,rgb): h1,s1,v1=cv2.split(img) rg = rgb.copy() rows,cols=h1.shape r,g,b=0.0,0.0,0.0 b1,g1,r1 = cv2.split(rg) print(“HSV图像大小为:%d*%d”%(rows,cols)) for i in range(rows): for j in range(cols): h=h1[i][j] v=v1[i][j]/255 s=s1[i][j]/255 h=h2 hx=int(h/60.0) hi=hx%6 f=hx-hi p=v(1-s) q=v*(1-fs) t=v(1-(1-f)s) if hi0: r,g,b=v,t,p elif hi1: r,g,b=q,v,p elif hi2: r,g,b=p,v,t elif hi3: r,g,b=p,q,v elif hi4: r,g,b=t,p,v elif hi5: r,g,b=v,p,q r,g,b=(r255),(g255),(b255) r1[i][j]=int® g1[i][j]=int(g) b1[i][j]=int(b) rg=cv2.merge([b1,g1,r1]) return rg img=cv2.imread(“D:/RGB.bmp”) gray=cv2.imread(“D:/gray.bmp”) img=caijian(img) gray=caijian(gray) grayimg=graytograyimg(gray) HSVimg=RGBtoHSV(img) HSgray=graytoHSgry(grayimg,HSVimg) RGBimg=HSVtoRGB(HSgray,img) cv2.imshow(“image”,img) cv2.imshow(“Grayimage”,grayimg) cv2.imshow(“HSVimage”,HSVimg) cv2.imshow(“HSGrayimage”,HSgray) cv2.imshow(“RGBimage”,RGBimg) cv2.waitKey(0) cv2.destroyAllWindows()
以上代码是在尽量不调用OpenCV函数的情况下编写,其目的是熟悉图像处理原理和Python编程,注释很少,其中RGB转HSV原理,HSV转RGB原理,在CSDN中都能找到,灰度图替换HSV中的V原理其实很简单,看代码就能明白,不用再找资料。
总结
以上所述是小编给大家介绍的Python+OpenCV实现图像融合的原理及代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]