环境:Matlab R2017b
一、图像数据格式
- bmp:位图,无损图片数据格式
- jpg:位图,有损压缩,尺寸小,不支持透明
- png:无损压缩,质量高,支持图像透明
二、图像空间处理
i0 = imread('0.jpg');
i1 = 1.25*i0+10; %增强亮度
i2 = 255-i0; %反色
i3 = imrotate(i0,90,'bilinear','crop'); %旋转90度
三、颜色空间转换
rgb1 =imread('1.jpg');
xyz1 = rgb2xyz(rgb1);
YCbCr1 = rgb2ycbcr(rgb1);
rgb2 =imread('2.jpg');
xyz2 = rgb2xyz(rgb2);
YCbCr2 = rgb2ycbcr(rgb2);
直接利用matlab中自带函数对颜色空间进行转换,通过对比同一场景下不同光线的图片,不难发现:
其中xyz空间整体偏暗,暖色更少,能更好展示光照与对比度,但对暗处细节不能很好区分;
而YCbCr空间整体偏青紫,不同色彩有更大区分度,对暗处细节色彩也有一定分辨能力,但色彩失真明显。
四、频域分析
img=imread('1.jpg');
imgF = fft(img);
%中值滤波
imgmid = medfilt2(rgb2gray(img));
imgmidF = fft(imgmid);
%均值滤波
avg = fspecial('average',[3,3]);
imgavg = imfilter(img,avg,'replicate');
imgavgF = fft(imgavg);
%快速傅里叶变换
function imF = fft(I)
if size(I, 3) > 1
G = im2double(rgb2gray(I));
else
G = im2double(I);
end
F = fftshift(fft2(G));
imF = log10(abs(F)+1);
end
通过对原图进行二维快速傅里叶变换,并对频谱图像中心化,可以得到中心亮,向四周辐射白线的二维频谱图。
对图像进行中值滤波后,通过观察,可以发现频谱图左上与右下的白斑有明显减少,整个图像外围辐射出去的白线也更少了。
对图像进行均值滤波后,通过观察,可以发现频谱图的中心化更明显,除了中央十字的白线外,外围的白线几乎消失。
五、白平衡算法
%白平衡
wb = imread('2.jpg');
R = wb(:,:,1);
G = wb(:,:,2);
B = wb(:,:,3);
%求其各通道平均值及增益
Raver = mean(mean(R));
Gaver = mean(mean(G));
Baver = mean(mean(B));
K = (Raver+Gaver+Baver)/3;
Kr = K/Raver;
Kg = K/Gaver;
Kb = K/Baver;
%更新RGB值
Rnew = R*Kr;
Gnew = G*Kg;
Bnew = B*Kb;
%合并通道
wbnew(:,:,1) = Rnew;
wbnew(:,:,2) = Gnew;
wbnew(:,:,3) = Bnew;