0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于深度學(xué)習(xí)的傳統(tǒng)圖像增強(qiáng)算法

電子設(shè)計(jì) ? 來源:AI加速微信公眾號(hào) ? 作者:AI加速微信公眾號(hào) ? 2020-11-11 16:28 ? 次閱讀

引言

由于受到環(huán)境,光線等的影響,拍攝的照片清晰度和對(duì)比度比較低,不能夠突出圖像中的重點(diǎn)。圖像增強(qiáng)就是通過一定手段來增強(qiáng)圖像的對(duì)比度,使得其中的人物或者事物更加明顯,有利于后邊的識(shí)別等處理。本章介紹幾個(gè)傳統(tǒng)的圖像增強(qiáng)算法,并給出matlab實(shí)現(xiàn)代碼,看一看不同算法的實(shí)現(xiàn)效果,最后再介紹一下深度學(xué)習(xí)在圖像增強(qiáng)上的應(yīng)用。

1. 直方圖均衡
在直方圖中,如果灰度級(jí)集中于高灰度區(qū)域,圖像低灰度就不容易分辨,如果灰度級(jí)集中于低灰度區(qū)域,那么高灰度就不容易分辨。為了能夠讓高低灰度都容易分辨,最好的辦法是將圖像進(jìn)行轉(zhuǎn)換,使得灰度級(jí)分布概率相同。這就是直方圖均衡的目的。假設(shè)圖像經(jīng)過如下變換:

Matlab代碼如下:
function histogramEqual

imgData=imread('../data/img0.jpg');
gray=rgb2gray(imgData);
imshow(gray);
imwrite(gray, '../data/gray0.jpg');
%calculate histogram
histgramData=linspace(0, 0, 256);
[grayRow, grayColumn]=size(gray);
grayPixelNumber=grayRow*grayColumn;
for i=1:grayRow
for j=1:grayColumn
histgramData(gray(i, j)+1)=histgramData(gray(i, j)+1)+1;
end
end

%histogram equalization
histogramIntegral=linspace(0, 0, 256);
for i=1:256
for j=1:i
histogramIntegral(i)=histogramIntegral(i)+histgramData(j);
end
end

for i=1:grayRow
for j=1:grayColumn
gray(i, j)=round(255*histogramIntegral(gray(i, j)+1)/grayPixelNumber);
end
end

imshow(gray);
imwrite(gray, '../output/histogramEqual.jpg');
end

處理結(jié)果:

圖1.1 直方圖均衡化結(jié)果(左)原圖像(右)結(jié)果

2. Gamma變換

Gamma變換主要用于圖像修正,將灰度過高或者過低的圖片進(jìn)行修正,增強(qiáng)對(duì)比度。變換公式是對(duì)每個(gè)像素進(jìn)行乘積運(yùn)算:

從下圖的gamma曲線中可以看出其變換原理:

圖2.1 圖像gamma變換

從圖中可以看出當(dāng)r值大于1,會(huì)拉伸圖像中灰度級(jí)較高的區(qū)域,壓縮灰度級(jí)較低部分;當(dāng)r值小于1時(shí),會(huì)拉伸灰度級(jí)較低部分,而壓縮灰度級(jí)較高部分。這樣來調(diào)整圖像對(duì)比度。

Matlab代碼:
function imageGamma(r)

imgData=imread('../data/img0.jpg');
gray=rgb2gray(imgData);
[grayRow, grayColumn]=size(gray);

gray=double(gray);

for i=1:grayRow
for j=1:grayColumn
gray(i, j)=255*((gray(i, j)/255)^r);
gray(i, j)=round(gray(i, j));
end
end
gray=uint8(gray);

fileName='../output/gamma';
fileSuf='.jpg';
gammaStr=num2str(r);
file=[fileName, gammaStr, fileSuf];
imshow(gray);
imwrite(gray, file);

end

結(jié)果如下:

圖2.2 gamma變換(左)r=0.5(右)r=1.5

3. Laplace變換

對(duì)圖像進(jìn)行二階微分操作可以突出圖像邊緣,增強(qiáng)細(xì)節(jié)。通常希望構(gòu)造一個(gè)同性濾波器,其對(duì)圖像方向的變化不敏感。一個(gè)最簡單的同性濾波器就是laplace算子,定義為:

Matlab代碼為:

% g(x, y)=f(x, y)+c*delta2 f(x, y)

function laplace(c)

imgData=imread('../data/img0.jpg');
gray=rgb2gray(imgData);
[grayRow, grayColumn]=size(gray);

gray=double(gray);

%laplace
laplacePlate=[0, 1, 0; 1, -4, 1; 0, 1, 0];
laplaceResult=zeros(grayRow, grayColumn);
laplaceGray=zeros(grayRow, grayColumn);
laplaceGray=double(laplaceGray);
for i=1:grayRow
for j=1:grayColumn
for k=-1:1
for n=-1:1
if (i+k>=1) && (i+k=1) && (j+n grayValue=gray(i+k, j+n);
else
grayValue=0;
end
laplaceResult(i, j)=laplaceResult(i, j)+laplacePlate(k+2, n+2)*grayValue;
end
end
laplaceGray(i, j)=round(gray(i, j)+c*laplaceResult(i, j));
end
end

maxLaplaceGray=max(max(laplaceGray));
minLaplaceGray=min(min(laplaceGray));
laplaceGray=((laplaceGray-minLaplaceGray) .* 255) ./(maxLaplaceGray-minLaplaceGray);
laplaceGray=uint8(laplaceGray);
fileName='../output/laplace';
fileSuf='.jpg';
gammaStr=num2str(c);
file=[fileName, gammaStr, fileSuf];
figure('name', 'gray');
imshow(laplaceGray);
figure('name', 'laplace');
imshow(laplaceResult);
imwrite(laplaceGray, file);
imwrite(laplaceResult, '../output/laplaceResult.jpg');
end

結(jié)果為:

圖3.1 laplace算子增強(qiáng)(上左)laplace變換結(jié)果(上右)C=0.5(下)C=0.8

4. Retix算法

Retix是一種建立在光學(xué)物理特性基礎(chǔ)上的算法,假設(shè)入射光L(x, y)入射到物體上,經(jīng)過反射R(x, y),進(jìn)入到人眼的光變?yōu)椋?/p>

為了降低卷積運(yùn)算的的運(yùn)算量,我們?nèi)×?x7的高斯卷積模板。

Matlab代碼為:

function singleRetix(c)

imgData=imread('../data/img0.jpg');
gray=rgb2gray(imgData);
[grayRow, grayColumn]=size(gray);
gray=double(gray);

gaussConv=zeros(grayRow, grayColumn);
for i=1:grayRow
for j=1:grayColumn
for k=-3:3
for n=-3:3
gaussValue=two_d_gauss(k, n, c);
if (i+k>=1) && (i+k=1) && (j+n grayValue=gray(i+k, j+n);
else
grayValue=0;
end
gaussConv(i, j)=gaussConv(i, j)+grayValue*gaussValue;
end
end
end
end
gray=log(gray);
gaussConv=log(gaussConv);
reflectGray=exp(gray-gaussConv);
maxReflectGray=max(max(reflectGray));
minReflectGray=min(min(reflectGray));
reflectGray=((reflectGray-minReflectGray) .* 255) ./ (maxReflectGray-minReflectGray);
reflectGray=uint8(reflectGray);

fileName='../output/retix';
fileSuf='.jpg';
gammaStr=num2str(c);
file=[fileName, gammaStr, fileSuf];
figure('name', 'processed');
imshow(reflectGray);
imwrite(reflectGray, file);

end

function res=two_d_gauss(x, y, c)
res=(1/sqrt(2*pi*c))*(-(x^2+y^2)/c^2);
end

結(jié)果:

圖4.1 Retix結(jié)果(左)sigma=90(右)sigma=150

5. 基于深度學(xué)習(xí)的圖像增強(qiáng)

LL-NET是第一個(gè)用深度學(xué)習(xí)來增強(qiáng)圖像的方法。在其論文中使用自動(dòng)編碼器從表示學(xué)習(xí)的角度來解決低光圖像增強(qiáng)的問題,這些自動(dòng)編碼器經(jīng)過訓(xùn)練以學(xué)習(xí)低光圖像中的基礎(chǔ)信號(hào)特征并自適應(yīng)地增亮和去噪。LL-NET借鑒了SSDA網(wǎng)絡(luò)的稀疏特性,可以用來去除圖像中噪聲。運(yùn)用網(wǎng)絡(luò)的泛華能力來提供低照度下的測(cè)試圖片,讓網(wǎng)絡(luò)來學(xué)習(xí)到圖片的特征,從而降低噪聲,提高圖像對(duì)比度。

網(wǎng)絡(luò)結(jié)構(gòu)如下:

圖5.1 LL-NET網(wǎng)絡(luò)結(jié)構(gòu)

結(jié)果為:

圖5.2 結(jié)果

結(jié)論

本文介紹了四種傳統(tǒng)的圖像增強(qiáng)算法,以及一種基于深度學(xué)習(xí)的方法。

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    GPU深度學(xué)習(xí)應(yīng)用案例

    GPU在深度學(xué)習(xí)中的應(yīng)用廣泛且重要,以下是一些GPU深度學(xué)習(xí)應(yīng)用案例: 一、圖像識(shí)別 圖像識(shí)別是
    的頭像 發(fā)表于 10-27 11:13 ?283次閱讀

    深度識(shí)別算法包括哪些內(nèi)容

    :CNN是深度學(xué)習(xí)中處理圖像和視頻等具有網(wǎng)格結(jié)構(gòu)數(shù)據(jù)的主要算法。它通過卷積層、池化層和全連接層等組件,實(shí)現(xiàn)對(duì)圖像特征的自動(dòng)提取和識(shí)別。 應(yīng)
    的頭像 發(fā)表于 09-10 15:28 ?264次閱讀

    圖像識(shí)別算法都有哪些方法

    傳統(tǒng)方法和基于深度學(xué)習(xí)的方法。 傳統(tǒng)圖像識(shí)別算法 1.1 邊緣檢測(cè) 邊緣檢測(cè)是
    的頭像 發(fā)表于 07-16 11:14 ?4926次閱讀

    圖像識(shí)別算法的提升有哪些

    引言 圖像識(shí)別是計(jì)算機(jī)視覺領(lǐng)域的核心任務(wù)之一,旨在使計(jì)算機(jī)能夠自動(dòng)地識(shí)別和理解圖像中的內(nèi)容。隨著計(jì)算機(jī)硬件的發(fā)展和深度學(xué)習(xí)技術(shù)的突破,圖像識(shí)
    的頭像 發(fā)表于 07-16 11:12 ?550次閱讀

    圖像識(shí)別算法的優(yōu)缺點(diǎn)有哪些

    圖像識(shí)別算法可以快速地處理大量圖像數(shù)據(jù),提高工作效率。與傳統(tǒng)的人工識(shí)別方法相比,圖像識(shí)別算法
    的頭像 發(fā)表于 07-16 11:09 ?1222次閱讀

    深度學(xué)習(xí)算法在嵌入式平臺(tái)上的部署

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)算法在各個(gè)領(lǐng)域的應(yīng)用日益廣泛。然而,將深度學(xué)習(xí)算法部署到資源
    的頭像 發(fā)表于 07-15 10:03 ?1097次閱讀

    利用Matlab函數(shù)實(shí)現(xiàn)深度學(xué)習(xí)算法

    在Matlab中實(shí)現(xiàn)深度學(xué)習(xí)算法是一個(gè)復(fù)雜但強(qiáng)大的過程,可以應(yīng)用于各種領(lǐng)域,如圖像識(shí)別、自然語言處理、時(shí)間序列預(yù)測(cè)等。這里,我將概述一個(gè)基本的流程,包括環(huán)境設(shè)置、數(shù)據(jù)準(zhǔn)備、模型設(shè)計(jì)、訓(xùn)
    的頭像 發(fā)表于 07-14 14:21 ?1794次閱讀

    深度學(xué)習(xí)的基本原理與核心算法

    隨著大數(shù)據(jù)時(shí)代的到來,傳統(tǒng)機(jī)器學(xué)習(xí)方法在處理復(fù)雜模式上的局限性日益凸顯。深度學(xué)習(xí)(Deep Learning)作為一種新興的人工智能技術(shù),以其強(qiáng)大的非線性表達(dá)能力和自
    的頭像 發(fā)表于 07-04 11:44 ?1545次閱讀

    深度學(xué)習(xí)傳統(tǒng)機(jī)器學(xué)習(xí)的對(duì)比

    在人工智能的浪潮中,機(jī)器學(xué)習(xí)深度學(xué)習(xí)無疑是兩大核心驅(qū)動(dòng)力。它們各自以其獨(dú)特的方式推動(dòng)著技術(shù)的進(jìn)步,為眾多領(lǐng)域帶來了革命性的變化。然而,盡管它們都屬于機(jī)器學(xué)習(xí)的范疇,但
    的頭像 發(fā)表于 07-01 11:40 ?1100次閱讀

    深度解析深度學(xué)習(xí)下的語義SLAM

    隨著深度學(xué)習(xí)技術(shù)的興起,計(jì)算機(jī)視覺的許多傳統(tǒng)領(lǐng)域都取得了突破性進(jìn)展,例如目標(biāo)的檢測(cè)、識(shí)別和分類等領(lǐng)域。近年來,研究人員開始在視覺SLAM算法中引入
    發(fā)表于 04-23 17:18 ?1227次閱讀
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>下的語義SLAM

    【技術(shù)科普】主流的深度學(xué)習(xí)模型有哪些?AI開發(fā)工程師必備!

    深度學(xué)習(xí)在科學(xué)計(jì)算中獲得了廣泛的普及,其算法被廣泛用于解決復(fù)雜問題的行業(yè)。所有深度學(xué)習(xí)算法都使用
    的頭像 發(fā)表于 01-30 15:26 ?564次閱讀
    【技術(shù)科普】主流的<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>模型有哪些?AI開發(fā)工程師必備!

    詳解深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    在如今的網(wǎng)絡(luò)時(shí)代,錯(cuò)綜復(fù)雜的大數(shù)據(jù)和網(wǎng)絡(luò)環(huán)境,讓傳統(tǒng)信息處理理論、人工智能與人工神經(jīng)網(wǎng)絡(luò)都面臨巨大的挑戰(zhàn)。近些年,深度學(xué)習(xí)逐漸走進(jìn)人們的視線,通過深度
    的頭像 發(fā)表于 01-11 10:51 ?1832次閱讀
    詳解<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>、神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    目前主流的深度學(xué)習(xí)算法模型和應(yīng)用案例

    深度學(xué)習(xí)在科學(xué)計(jì)算中獲得了廣泛的普及,其算法被廣泛用于解決復(fù)雜問題的行業(yè)。所有深度學(xué)習(xí)算法都使用
    的頭像 發(fā)表于 01-03 10:28 ?1648次閱讀
    目前主流的<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>算法</b>模型和應(yīng)用案例

    深度學(xué)習(xí)如何訓(xùn)練出好的模型

    算法工程、數(shù)據(jù)派THU深度學(xué)習(xí)在近年來得到了廣泛的應(yīng)用,從圖像識(shí)別、語音識(shí)別到自然語言處理等領(lǐng)域都有了卓越的表現(xiàn)。但是,要訓(xùn)練出一個(gè)高效準(zhǔn)確的深度
    的頭像 發(fā)表于 12-07 12:38 ?1035次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>如何訓(xùn)練出好的模型

    關(guān)于利用傳統(tǒng)圖像處理方法瑕疵檢測(cè)總結(jié)

    最近做圖像處理與識(shí)別相關(guān)的事情,先從OpenCV/Matlab入手,看傳統(tǒng)算法在瑕疵檢測(cè)方向能做到什么程度。   因之前并沒有相關(guān)的經(jīng)驗(yàn),乍開始生怕閉門造車,遂多方搜尋,相關(guān)的會(huì)議與論述很多,不乏
    的頭像 發(fā)表于 11-20 15:19 ?762次閱讀