Matlab实现图像白平衡(灰度世界法、全反射算法)
參考:https://www.cnblogs.com/molakejin/p/5766132.html
白平衡
白平衡的英文為White Balance,其基本概念是“不管在任何光源下,都能將白色物體還原為白色”,對在特定光源下拍攝時出現的偏色現象,通過加強對應的補色來進行補償。
所謂的白平衡是通過對白色被攝物的顏色還原(產生純白的色彩效果),進而達到其他物體色彩準確還原的一種數字圖像色彩處理的計算方法。(源自百度百科)
灰度世界算法
灰度世界理論:認為任何一幅圖像, 當有足夠的色彩變化時, 其R, G, B分量均值會趨于平衡(即 RGB三個數值相等, 也就是說應當是黑白灰類型的顏色)。這個理論在全局白平衡中得到?泛應用, 特點是能夠利用更多的圖像信息來做判斷, 但在面對?色彩較為單一的圖像時就顯得有些乏力了。
灰度世界算法:根據灰度世界理論,將原始圖的RGB均值分別調整到R= G = B即可。不完美的地方就是這個算法對顏色不豐富的圖像敏感程度一般,處理起來效果也就不會很理想,局限性很大。
Matlab代碼實現:
clc;clear;close all;img=imread('test.png');
subplot(121),imshow(img),title('原圖');
R = img(:,:,1);G = img(:,:,2);B = img(:,:,3);
Rave = mean2(R);
Gave = mean2(G);
Bave = mean2(B);
K = (Rave + Gave + Bave) / 3;R_new=(K/Rave)*R;G_new=(K/Gave)*G;B_new=(K/Bave)*B;
subplot(122),imshow(cat(3,R_new,G_new,B_new)),title('平衡后');
代碼效果:
全反射算法
全反射理論:一幅圖像中亮度最大的點就是白點, 即假設在 YCbCr 空間中Y值最?的點為白色, 以此來校正整幅圖像。特點是只考慮色彩最亮的那部分, 跟上面的灰度世界理論正好相反, 在處理色彩偏單調的圖像時效果好些, 但面對顏色豐富的圖片時,因為最亮的點不一定是?色的, 可能會出現偏色的情況。
全反射算法:該算法認為最亮的那個點就是白色,如果不是,就針對偏離白色的數值進行逆向修正。缺點是沒有高亮點或者圖像色彩復雜,它的修正效果就會比較乏力。
Matlab代碼實現(未加解釋),參考https://www.cnblogs.com/Imageshop/archive/2013/04/20/3032062.html
clc;clear;close all;img=imread('test.png');
subplot(121),imshow(img),title('原圖');
R=double(img(:,:,1));G=double(img(:,:,2));B=double(img(:,:,3));histRGB=zeros(765);
[m,n,h]=size(img);
for i=1:mfor j=1:ns=sum(img(i,j,:));histRGB(s)=histRGB(s)+1;end
endnum=0;
for i=1:765num=num+histRGB(766-i);if num>m*n*0.1thresh=765-i;breakend
endamount=0;
Rave=0;Gave=0;Bave=0;
for i=1:mfor j=1:ns=sum(img(i,j,:));if s>threshRave=(Rave*amount+R(i,j))/(amount+1);Gave=(Gave*amount+G(i,j))/(amount+1);Bave=(Bave*amount+B(i,j))/(amount+1);amount=amount+1;endend
endfor i=1:mfor j=1:nR(i,j)=255*R(i,j)/Rave;if R(i,j)>255R(i,j)=255;endG(i,j)=255*G(i,j)/Gave;if G(i,j)>255G(i,j)=255;endB(i,j)=255*B(i,j)/Bave;if B(i,j)>255B(i,j)=255;endend
endsubplot(122),imshow(uint8(cat(3,R,G,B))),title('平衡后');
代碼效果:
寫在后面:
上述圖像為某潛水員在水下拍攝,為得到正確的白平衡,他拍攝了一張灰色卡片作為對比:
由灰色卡片修正圖像白平衡結果如下:
總結
以上是生活随笔為你收集整理的Matlab实现图像白平衡(灰度世界法、全反射算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬虫一般格式
- 下一篇: C语言实现SHA-1