日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB可视化实战系列(二十五)-MATLAB基于直方图的图像去雾

發布時間:2025/4/5 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB可视化实战系列(二十五)-MATLAB基于直方图的图像去雾 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

? ? ? ?直方圖是圖像的一種統計表達形式,在一定程度上能夠反映數學圖像的概貌性描述,包括圖像的灰度范圍、灰度分布、整幅圖像的亮度均值、陰暗對比度等,并可以此為基礎進行分析來得出對圖像進一步處理的重要依據。直方圖均衡化也叫作直方圖均勻化,就是把給定圖像的直方圖分布變換成均勻分布的直方圖,是較為常用的灰度增強算法。直方圖均衡化概括起來包括以下三個主要步驟。

以下是我為大家準備的幾個精品專欄,喜歡的小伙伴可自行訂閱,你的支持就是我不斷更新的動力喲!

MATLAB-30天帶你從入門到精通

MATLAB深入理解高級教程(附源碼)

tableau可視化數據分析高級教程

●預處理。輸入圖像,計算該圖像直方圖。

●灰度變換表。根據輸入圖像的直方圖計算灰度值變換表。

●查表變換。執行變換x=H(x),表示對步驟1中得到的直方圖使用步驟2得到的灰度值變換表進行查表變換操作,通過遍歷整幅圖像的每一個像元,將原始圖像灰度值x放入變換表H(x)中,可得到變換后的新灰度值x'。

? ? ? ?根據信息論的相關理論,我們可以知道圖像經直方圖均衡化后,將會包含更多的信息量,進而能突出某些圖像特征。下面就為大家介紹三種常用的圖像去霧方法。

1.全局直方圖處理

通過函數imread讀取RGB圖像,并通過維數m*n*3的矩陣來表示。其中,維數m*n表示圖像的行數、列數信息,維數3表示圖像的R、G、B三層通道數據。因此,全局直方圖處理通過對RGB圖像的R、G、B三層通道分別進行直方圖均衡化,再整合到新的圖像的方式來進行。

%全局直方圖I=imread('photo1.jpg');R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);M=histeq(R);N=histeq(G);L=histeq(B);E=cat(3,M,N,L);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(E);

全局直方圖去霧處理對比

2.局部直方圖處理

全局直方圖均衡化增強只是將原圖像的直方圖進行了均衡化,未能有效保持原始圖像的局部特征,容易出現色彩失真問題。通過選擇固定尺寸的滑動窗口作用于原始圖像來進行局部直方圖處理,可以在一定程度上保持原始圖像的局部特征,提高圖像增強的效果。因此,局部直方圖處理通過對RGB圖像的R、G、B三層通道分別進行局部直方圖均衡化,再整合到新的圖像的方式來進行。

%局部直方圖I=imread('photo1.jpg');x=mat2gray(I);f=im2double(x);w=4;k=0.06;M=mean2(f);f1=x(:,:,1);f2=x(:,:,2);f3=x(:,:,3);z1=colfilt(f1,[w w],'sliding',@std);m1=colfilt(f1,[w w],'sliding',@mean);z2=colfilt(f2,[w w],'sliding',@std);m2=colfilt(f2,[w w],'sliding',@mean);z3=colfilt(f3,[w w],'sliding',@std);m3=colfilt(f3,[w w],'sliding',@mean);A1=k*M./z1;A2=k*M./z2;A3=k*M./z3;g1=A1.*(f1-m1)+m1;g1=im2uint8(mat2gray(g1));g2=A2.*(f2-m2)+m2;g2=im2uint8(mat2gray(g2));g3=A3.*(f3-m3)+m3;g3=im2uint8(mat2gray(g3));E=cat(3,g1,g2,g3);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(E);

局部直方圖去霧處理對比

3.Retinex增強處理

為了進行對比,采取了Retinex 圖像增強算法來進行對比,該算法可以平衡圖像灰度動態范圍壓縮、圖像增強和圖像顏色恒常三個指標,能夠實現對含霧圖像的自適應性增強。因此,Retinex 增強處理通過對RGB圖像的R、G、B三層通道分別應用Retinex算法進行處理,再整合到新的圖像的方式來進行。

%Retinex增強I=imread('photo1.jpg');f=I;%提取RGB通道fr=f(:,:,1);fg=f(:,:,2);fb=f(:,:,3);%數據類型歸一化mr=mat2gray(im2double(fr));mg=mat2gray(im2double(fg));mb=mat2gray(im2double(fb));%定義標準差aa=1000;%定義模板大小n=80;%計算中心n1=floor((n+1)/2);for i=1:n for j=1:n%高斯函數 b(i,j)=exp(-((i-n1)^2+(j-n1)^2)/(4*aa))/(pi*aa); endend%卷積濾波nr1=imfilter(mr,b,'conv','replicate');ng1=imfilter(mg,b,'conv','replicate');nb1=imfilter(mb,b,'conv','replicate');ur1=log(nr1);ug1=log(ng1);ub1=log(nb1);tr1=log(mr);tg1=log(mg);tb1=log(mb);yr1=(tr1-ur1)/3;yg1=(tg1-ug1)/3;yb1=(tb1-ub1)/3;%定義標準差bb=53;%定義模板大小x=31;%計算中心x1=floor((n+1)/2);for i=1:n for j=1:n%高斯函數 a(i,j)=exp(-((i-n1)^2+(j-n1)^2)/(4*bb))/(6*pi*bb); endend%卷積濾波nr2=imfilter(mr,a,'conv','replicate');ng2=imfilter(mg,a,'conv','replicate');nb2=imfilter(mb,a,'conv','replicate');ur2=log(nr2);ug2=log(ng2);ub2=log(nb2);tr2=log(mr);tg2=log(mg);tb2=log(mb);yr2=(tr2-ur2)/3;yg2=(tg2-ug2)/3;yb2=(tb2-ub2)/3;%定義標準差cc=13000;%定義模板大小l=501;%計算中心l1=floor((n+1)/2);for i=1:n for j=1:n%高斯函數 e(i,j)=exp(-((i-n1)^2+(j-n1)^2)/(4*cc))/(4*pi*cc); endend%卷積濾波nr3=imfilter(mr,e,'conv','replicate');ng3=imfilter(mg,e,'conv','replicate');nb3=imfilter(mb,e,'conv','replicate');ur3=log(nr3);ug3=log(ng3);ub3=log(nb3);tr3=log(mr);tg3=log(mg);tb3=log(mb);yr3=(tr3-ur3)/3;yg3=(tg3-ug3)/3;yb3=(tb3-ub3)/3;dr=yr1+yr2+yr3;dg=yg1+yg2+yg3;db=yb1+yb2+yb3;cr=im2uint8(dr);cg=im2uint8(dg);cb=im2uint8(db);E=cat(3,cr,cg,cb);%結果顯示subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(E);

Retinex算法去霧處理對比

? ? ???以上就是今天介紹的三種不同圖像去霧算法。其中,Retinex算法在使用時可針對圖像對程序中定義的標準差與模板大小進行改動,以便于增強適用性,不同算法在不同照片中的效果也會有所不同。

總結

以上是生活随笔為你收集整理的MATLAB可视化实战系列(二十五)-MATLAB基于直方图的图像去雾的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。