<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          圖像梯度的基本原理

          共 1901字,需瀏覽 4分鐘

           ·

          2021-10-17 00:51

          點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號(hào)

          視覺/圖像重磅干貨,第一時(shí)間送達(dá)

          當(dāng)用均值濾波器降低圖像噪聲的時(shí)候,會(huì)帶來圖像模糊的副作用。我們當(dāng)然希望看到的是清晰圖像。那么,清晰圖像和模糊圖像之間的差別在哪里呢?從邏輯上考慮,圖像模糊是因?yàn)閳D像中物體的輪廓不明顯,輪廓邊緣灰度變化不強(qiáng)烈,層次感不強(qiáng)造成的,那么反過來考慮,輪廓邊緣灰度變化明顯些,層次感強(qiáng)些是不是圖像就更清晰些呢。

          那么,這種灰度變化明顯不明顯怎樣去定義呢。我們學(xué)過微積分,知道微分就是求函數(shù)的變化率,即導(dǎo)數(shù)(梯度),那么對(duì)于圖像來說,可不可以用微分來表示圖像灰度的變化率呢,當(dāng)然是可以的,前面我們提到過,圖像就是函數(shù)嘛。

          在微積分中,一維函數(shù)的一階微分的基本定義是這樣的:

          而圖像是一個(gè)二維函數(shù)f(x,y),其微分當(dāng)然就是偏微分。因此有:

          因?yàn)閳D像是一個(gè)離散的二維函數(shù),? 不能無限小,我們的圖像是按照像素來離散的,最小的?就是1像素。因此,上面的圖像微分又變成了如下的形式(?=1):

          這分別是圖像在(x, y)點(diǎn)處x方向和y方向上的梯度,從上面的表達(dá)式可以看出來,圖像的梯度相當(dāng)于2個(gè)相鄰像素之間的差值。

          那么,這個(gè)梯度(或者說灰度值的變化率)如何增強(qiáng)圖像的清晰度呢?

          我們先考慮下x方向,選取某個(gè)像素,假設(shè)其像素值是100,沿x方向的相鄰像素分別是90,90,90,則根據(jù)上面的計(jì)算其x方向梯度分別是10,0,0。這里只取變化率的絕對(duì)值,表明變化的大小即可。

          我們看到,100和90之間亮度相差10,并不是很明顯,與一大群90的連續(xù)灰度值在一起,輪廓必然是模糊的。我們注意到,如果相鄰像素灰度值有變化,那么梯度就有值,如果相鄰像素灰度值沒有變化,那么梯度就為0。如果我們把梯度值與對(duì)應(yīng)的像素相加,那么灰度值沒有變化的,像素值不變,而有梯度值的,灰度值變大了。

          我們看到,相加后的新圖像,原圖像像素點(diǎn)100與90亮度只相差10,現(xiàn)在是110與90,亮度相差20了,對(duì)比度顯然增強(qiáng)了,尤其是圖像中物體的輪廓和邊緣,與背景大大加強(qiáng)了區(qū)別,這就是用梯度來增強(qiáng)圖像的原理。

          上面只是說了x方向,y方向是一樣的。那么能否將x方向和y方向的梯度結(jié)合起來呢?當(dāng)然是可以的。x方向和y方向上的梯度可以用如下式子表示在一起:

          這里又是平方,又是開方的,計(jì)算量比較大,于是一般用絕對(duì)值來近似平方和平方根的操作,來降低計(jì)算量:

          我們來計(jì)算一下月球圖像的x方向和y方向結(jié)合的梯度圖像,以及最后的增強(qiáng)圖像。(原圖像來自岡薩雷斯的《數(shù)字圖像處理》一書。)

          import cv2
          import numpy as np

          moon = cv2.imread("moon.tif", 0)
          row, column = moon.shape
          moon_f = np.copy(moon)
          moon_f = moon_f.astype("float")

          gradient = np.zeros((row, column))

          for x in range(row - 1):
          for y in range(column - 1):
          gx = abs(moon_f[x + 1, y] - moon_f[x, y])
          gy = abs(moon_f[x, y + 1] - moon_f[x, y])
          gradient[x, y] = gx + gy

          sharp = moon_f + gradient
          sharp = np.where(sharp < 0, 0, np.where(sharp > 255, 255, sharp))

          gradient = gradient.astype("uint8")
          sharp = sharp.astype("uint8")
          cv2.imshow("moon", moon)
          cv2.imshow("gradient", gradient)
          cv2.imshow("sharp", sharp)
          cv2.waitKey()


          來源:CSDN,作者:saltriver。

          原文鏈接:https://blog.csdn.net/saltriver/article/details/78987096


          —版權(quán)聲明—

          僅用于學(xué)術(shù)分享,版權(quán)屬于原作者。

          若有侵權(quán),請(qǐng)聯(lián)系微信號(hào):yiyang-sy 刪除或修改!


          —THE END—
          瀏覽 28
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美在线观看视频一区 | 欧美激情久久久 | 韩国九九jiu | 久久婷婷色 | 99视频在线免费观看 |