彩色图像处理

本次实验环境Python3

 

1.理解彩色图像的不同格式;

2.掌握彩色图像模型间的转化方法

3.掌握伪彩色图像增强及其实现方法

 

彩色图像处理:

可分为两类。(1)对3个平面分量单独处理,然后将分别处理过的三个分量合成彩色图像,对每个分量的处理技术可以应用到对灰度图像处理的技术上。(2)直接对彩色像素进行处理。因为全彩色图像至少有3个分量,彩色像素实际上是一个向量,直接处理就是同时对所有分量进行无差别的处理。

 

伪彩色图像增强处理:

      将图像中的黑白灰度级变成不同的彩色,如果分层越多,人眼所能提取的信息也多,从而达到图像增强的效果。是一种视觉效果明显,又不太复杂的图像增强技术。伪彩色图像处理技术适用于航空摄影、遥感图片、X光片及云母的判读等处理。主要有密度分割法、灰度级-伪彩色变换法、频域伪彩色处理等多种方法。

 

实验内容或步骤:

对“lena.jpg”的彩色图像分离出R、G、B三个通道图像,分别求其补色,然后再合并为一张图像保存并显示;

思路:先将lena.jpg分离出R,G,B三个通道图像,将它们分别传入求补色的函数complementary_colour(img,img_split)经过处理后采用cv2.merge()进行合成,并用cv2.imwrite()进行保存

 

 

对“lena.jpg” 的彩色图像分离为H、S、V三个通道图像,分别采用平滑滤波处理,分别显示,且合并为一张图像保存;

思路:先用cvtColor()函数将lena图像转换为hsv类型的图像并用split()进行分离,然后用blur()函数做3x3或者5x5或者7x7的滤波处理,用merge()函数合并、imshow()显示、imwrite()保存。

 

 

对“gf3.jpg”灰度图像转成伪彩色图,并显示和保存。

思路:利用python自带的applyColorMap(img,3)函数进行伪彩色处理,数字(1-13)代表不同的伪彩色处理方法。处理完后用imshow()显示、imwrite()保存。

 

 

源码:

1.

import cv2
import numpy as np

def complementary_colour(img,img_split):#求补色的函数
    h,w=img.shape[0],img.shape[1]
    new_img=np.zeros((h,w),
dtype=int)#构造一个和img大小相同的矩阵
    for i in range(h):
       
for j in range(w):
            b=
int(img[i,j,0])
            g=
int(img[i,j,1])
            r=
int(img[i,j,2])
            new_img[i][j]=
max(r,g,b)+min(r,g,b)-int(img_split[i][j])#注意取整,否则可能溢出
    new_img=cv2.convertScaleAbs(new_img)#转换为np.uint8
   
return new_img

def main():
    img=cv2.imread(
r'.\lena.jpg')
    B,G,R=cv2.split(img)
#分离
    r = complementary_colour(img, R)
    g = complementary_colour(img, G)
    b = complementary_colour(img, B)
    img_bu=cv2.merge([b,g,r])
#合并
    cv2.imshow("img_bu",img_bu)
    cv2.imwrite(
r'.\lena_bu.jpg',img_bu)#保存
    cv2.waitKey()

if __name__=='__main__':
    main()

 

2.

import cv2
import numpy as np

def main():
    img = cv2.imread(
r'.\lena.jpg')
    img_HSV=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
    v,s,h=cv2.split(img_HSV)
    cv2.blur(v,(
3,3))
    cv2.blur(s,(
3,3))
    cv2.blur(h,(
3,3))
    cv2.imshow(
"v",v)
    cv2.imshow(
"s",s)
    cv2.imshow(
"h",h)
    HSV_merge=cv2.merge([v,s,h])
    cv2.imshow(
"HSV_merge",HSV_merge)
    cv2.imwrite(
r'.\HSV_merge.jpg')
    cv2.waitKey()


if __name__=='__main__':
    main()

 

3.

import cv2
import numpy as np

def main():
    img=cv2.imread(
r'.\gf3.jpg')
    img_preudo=cv2.applyColorMap(img,
3)
    cv2.imshow(
"img_pseudo",img_preudo)
    cv2.imwrite(
r'.\gf3_preudo.jpg',img_preudo)
    cv2.waitKey()


if __name__=='__main__':
    main()

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值