照明与图像
光通量:
- 人眼所能感受到的輻射功率,等于單位時(shí)間內(nèi)某一波段的輻射能量和該波段的相對(duì)視見(jiàn)率的乘積。
- 單位是lm(流明)
- 1流明 = 0.00146瓦
輻照度
- 投射到一平表面上的輻射通量密度。指到達(dá)一表面上,單位時(shí)間,單位面積上的輻射能。
- 以符號(hào)E表示,常用單位lux(勒克斯)
- 1 lux = 1 lm/m2
圖像傳感器基本原理:
感光面中每一個(gè)小格對(duì)應(yīng)圖片的一個(gè)像素。
對(duì)于彩色圖像傳感器,相比灰度傳感器在感光面上多了一層顏色薄膜層,由RGB三種小孔組成,最上面是微透鏡層,它保證光能集中在帶顏色的孔上。
彩色圖片有3個(gè)通道。
顏色空間
顏色模型:
- RGB顏色模型(三原色)
- CMYK顏色模型(RGB的補(bǔ)色,三補(bǔ)色,K代表黑色,常用于印刷服裝業(yè),因?yàn)槲覀兛吹降氖穷伭衔漳撤N顏色之后的補(bǔ)色)
- HSI顏色模型(色調(diào)H是描述純色的屬性,如紅色,黃色;飽和度S表示的是一種純色被白光稀釋的程度的度量;亮度I體現(xiàn)了無(wú)色的光強(qiáng)度概念,是一個(gè)主觀的描述)
顏色空間的分解
相關(guān)函數(shù):
- 顏色空間轉(zhuǎn)換:
Python:
- 通道分離
Python:
形如 bgr[:, :, 0]表示第0個(gè)通道(blue)
顏色空間:
- Opencv中,彩色圖像缺省為BGR格式,顏色三通道順序?yàn)锽,G,R,分別對(duì)應(yīng)索引0,1,2(這點(diǎn)和windows不同,后者缺省是RGB)
- Opencv中,HSI/HSV顏色空間中H的取值范圍是0-180,其他兩個(gè)是0-255.
- 兩個(gè)相似的概念:HSI和HSV空間。HSV里面的v指的是RGB里面的最大的值,v = max(r,g,b);而HSI的I是平均值,I = (r+g+b)/3;另外兩個(gè)分量應(yīng)該是一樣的。
OpenCV實(shí)現(xiàn)程序?qū)嵗?#xff1a;
import cv2 as cvfilename = 'C:/python/img/lena.jpg' img = cv.imread(filename) gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)cv.imshow("source image", img) cv.imshow("gray", gray) cv.waitKey() #等候鼠標(biāo)操作,關(guān)閉窗口hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)cv.imshow("Hue", hsv[:, :, 0]) cv.imshow("Saturation", hsv[:, :, 1]) cv.imshow("Value", hsv[:, :, 2]) cv.waitKey()cv.imshow("Blue", img[:, :, 0]) cv.imshow("Green", img[:, :, 1]) cv.imshow("Red", img[:, :, 2])cv.waitKey() cv.destroyAllWindows()彩色圖像的各通道都是二維矩陣,分別顯示為灰度圖像。
c++版:
#include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp>//using namespace std; using namespace cv;int main() {Mat srcImage = imread("lena.jpg");//判斷圖像是否加載成功if (!srcImage.data){std::cout << "圖像加載失敗!" << std::endl;return false;}elsestd::cout << "圖像加載成功!" << std::endl << std::endl;//顯示原圖像namedWindow("原圖像", WINDOW_AUTOSIZE);imshow("原圖像", srcImage);//將圖像轉(zhuǎn)換為灰度圖,采用CV_前綴Mat grayImage;cvtColor(srcImage, grayImage, COLOR_BGR2GRAY); //將圖像轉(zhuǎn)換為灰度圖namedWindow("灰度圖", WINDOW_AUTOSIZE);imshow("灰度圖", grayImage);//將圖像轉(zhuǎn)換為HSV,采用COLOR_前綴Mat HSVImage;cvtColor(srcImage, HSVImage, COLOR_BGR2HSV); //將圖像轉(zhuǎn)換為HSV圖namedWindow("HSV", WINDOW_AUTOSIZE);imshow("HSV", HSVImage);//分離HSV三通道std::vector<Mat> hsvChannels;split(HSVImage, hsvChannels);imshow("image_H", hsvChannels[0]);imshow("image_S", hsvChannels[1]);imshow("image_V", hsvChannels[2]);waitKey(0);return 0; }向量(Vector)是一個(gè)封裝了動(dòng)態(tài)大小數(shù)組的順序容器(Sequence Container)。跟任意其它類(lèi)型容器一樣,它能夠存放各種類(lèi)型的對(duì)象。可以簡(jiǎn)單的認(rèn)為,向量是一個(gè)能夠存放任意類(lèi)型的動(dòng)態(tài)數(shù)組。
總結(jié)
- 上一篇: python解析xml+得到pascal
- 下一篇: 线性运算和非线性运算