国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述

這篇具有很好參考價(jià)值的文章主要介紹了(數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一:邊界描述

(1)邊界鏈碼

A:概述

邊界鏈碼:是一種用于圖像處理和計(jì)算機(jī)視覺領(lǐng)域的技術(shù),主要用于描述二進(jìn)制圖像中物體的輪廓。邊界鏈碼通過將輪廓轉(zhuǎn)化為一系列有序的連續(xù)像素點(diǎn)來表示。邊界鏈碼的基本思想是從圖像中選擇一個(gè)起始點(diǎn),然后按照一定的順序遍歷相鄰像素,將它們連接起來形成一個(gè)閉合的輪廓。這些相鄰像素的連接方式可以根據(jù)具體的算法不同而有所差異,常見的有4鄰域鏈碼和8鄰域鏈碼

(數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述,MATLAB+Python數(shù)字圖像處理教程,matlab,python,圖像處理

如下圖,以左下角0點(diǎn)為起始點(diǎn),設(shè)其坐標(biāo)為(0,3),4方向和8方向鏈碼表示區(qū)域邊界,則

  • 4方向鏈碼:(0,3)0 0 0 1 1 1 2 3 2 3 2 3
  • 8方向鏈碼:(0,3)0 0 0 2 2 2 4 5 5 6

(數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述,MATLAB+Python數(shù)字圖像處理教程,matlab,python,圖像處理

邊界鏈碼特點(diǎn)如下

  • 由于表示一個(gè)方向數(shù)比表示一個(gè)坐標(biāo)值所需比特?cái)?shù)少,而且對(duì)每一個(gè)點(diǎn)又只需一個(gè)方向數(shù)就可以代替兩個(gè)坐標(biāo)值,因此鏈碼表達(dá)可大大減少邊界表示所需的數(shù)據(jù)量
  • 可以很方便地獲取相關(guān)幾何特征,如區(qū)域的周長
  • 隱含了區(qū)域邊界的形狀信息

邊界鏈碼缺點(diǎn)如下

  • 碼串比較長
  • 噪聲等干擾會(huì)導(dǎo)致小的邊界變化,從而使鏈碼發(fā)生與目標(biāo)整體形狀無關(guān)的較大變動(dòng)
  • 目標(biāo)平移時(shí),鏈碼不變,但目標(biāo)旋轉(zhuǎn)時(shí),鏈碼會(huì)發(fā)生變化

B:邊界鏈碼改進(jìn)

多重網(wǎng)格采樣:對(duì)原邊界以較大的網(wǎng)格重新采樣,并把與原邊界點(diǎn)最接近的大網(wǎng)格點(diǎn)定為新的邊界點(diǎn)。也可用于消除目標(biāo)尺度變化鏈碼的影響

(數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述,MATLAB+Python數(shù)字圖像處理教程,matlab,python,圖像處理

邊界鏈碼的起點(diǎn):起點(diǎn)不同,鏈碼不同。把鏈碼歸一化可解決這個(gè)問題

  • 給定一個(gè)從任意點(diǎn)開始產(chǎn)生的鏈碼,把它看作一個(gè)由各方向數(shù)構(gòu)成的自然數(shù)
  • 將這些方向數(shù)依一個(gè)方向循環(huán),以使它們所構(gòu)成的自然數(shù)的值最小;
  • 將轉(zhuǎn)換后所對(duì)應(yīng)的鏈碼起點(diǎn)作為這個(gè)邊界的歸一化鏈碼的起點(diǎn)

一階差分鏈碼:鏈碼中相鄰兩個(gè)方向數(shù)按反方向相減(后一個(gè)減前一個(gè)),目標(biāo)發(fā)生旋轉(zhuǎn)時(shí),一階差分鏈碼不發(fā)生變化

(數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述,MATLAB+Python數(shù)字圖像處理教程,matlab,python,圖像處理

C:程序

如下,統(tǒng)計(jì)邊界鏈碼,并利用鏈碼重構(gòu)目標(biāo)區(qū)域邊界

(數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述,MATLAB+Python數(shù)字圖像處理教程,matlab,python,圖像處理


matlab

clear,clc,close all;
image=imread('morphplane.jpg');
figure,imshow(image),title('?-í?');
BW=im2bw(image);
[B,L]=bwboundaries(1-BW);
len=length(B);
chain=cell(len,1);
startpoint=zeros(len,2);
for i=1:len
    boundary=B{i};
    everylen=length(boundary);
    startpoint(i,:)=boundary(1,:);
    for j=1:everylen-1
        candidate=[0 1;-1 1;-1 0;-1 -1;0 -1;1 -1;1 0;1 1];
        y=boundary(j+1,1)-boundary(j,1);
        x=boundary(j+1,2)-boundary(j,2);       
        [is,pos]=ismember([y x],candidate,'rows');     
        chain{i}(j)=pos-1;             
    end    
end
figure,imshow(L),title('????á′??');
hold on
for i=1:len
    x=startpoint(i,2);
    y=startpoint(i,1);
    plot(x,y,'r*','MarkerSize',12);
    boundary=chain{i};
    everylen=length(boundary);
    for j=1:everylen
        candidate=[y x+1;y-1 x+1;y-1 x;y-1 x-1;y x-1;y+1 x-1;y+1 x;y+1 x+1];
        next=candidate(boundary(j)+1,:);
        x=next(2);y=next(1);
        plot(x,y,'g.');
    end
end

python

import numpy as np
import matplotlib.pyplot as plt
from skimage import io, color, measure

# 讀取圖像
image = io.imread('morphplane.jpg')
plt.imshow(image)
plt.title('原始圖片')
plt.show()

# 圖像二值化處理
bw = color.rgb2gray(image) > 0.5

# 提取邊界
boundaries = measure.find_boundaries(1 - bw)

# 獲取邊界鏈碼
chain = []
startpoints = []

for boundary in measure.find_contours(boundaries, 0.5):
    startpoint = boundary[0].astype(int)
    startpoints.append(startpoint)
    
    chain_segment = []
    for i in range(len(boundary)-1):
        y = boundary[i+1, 0] - boundary[i, 0]
        x = boundary[i+1, 1] - boundary[i, 1]
        
        candidate = np.array([[0, 1], [-1, 1], [-1, 0], [-1, -1], [0, -1], [1, -1], [1, 0], [1, 1]])
        pos = np.where((candidate == [y, x]).all(axis=1))[0][0]
        
        chain_segment.append(pos)
    
    chain.append(chain_segment)

# 顯示邊界鏈碼
fig, ax = plt.subplots()
ax.imshow(boundaries)
ax.set_title('邊界鏈碼')
for i in range(len(startpoints)):
    startpoint = startpoints[i]
    ax.plot(startpoint[1], startpoint[0], 'r*', markersize=12)
    boundary = chain[i]
    y, x = startpoint
    
    for j in range(len(boundary)):
        candidate = np.array([[y, x+1], [y-1, x+1], [y-1, x], [y-1, x-1], [y, x-1], [y+1, x-1], [y+1, x], [y+1, x+1]])
        next_point = candidate[boundary[j]]
        x, y = next_point
        ax.plot(x, y, 'g.')

plt.show()

(2)傅里葉描繪子

A:概述

傅里葉描繪子:是一種常用于形狀描述和圖像處理的數(shù)學(xué)方法。它利用傅里葉變換的思想,將一個(gè)封閉曲線或輪廓分解為一系列頻譜成分,從而對(duì)形狀進(jìn)行表示和比較。傅里葉描繪子的基本原理是將曲線表示為一系列復(fù)數(shù),每個(gè)復(fù)數(shù)代表了曲線上的一個(gè)點(diǎn)。通過對(duì)這些復(fù)數(shù)進(jìn)行傅里葉變換,可以得到頻譜信息。在傅里葉變換中,高頻成分表示了曲線的細(xì)節(jié)和局部特征,低頻成分表示了曲線的整體形狀。其計(jì)算步驟如下

  • 對(duì)封閉曲線或輪廓進(jìn)行采樣,獲取一系列坐標(biāo)點(diǎn)
  • 將坐標(biāo)點(diǎn)轉(zhuǎn)換為復(fù)數(shù)形式,即將每個(gè)點(diǎn)的 x x x y y y坐標(biāo)看作是實(shí)部和虛部構(gòu)成的復(fù)數(shù)
  • 對(duì)復(fù)數(shù)序列進(jìn)行離散傅里葉變換(DFT),得到頻域表示
  • 根據(jù)需要選擇保留的頻率成分,可以通過截?cái)喔哳l成分來降低數(shù)據(jù)量或者提取感興趣的特征
  • 對(duì)保留的頻率成分進(jìn)行逆傅里葉變換(IDFT),得到原始坐標(biāo)點(diǎn)的復(fù)數(shù)表示
  • 將復(fù)數(shù)表示轉(zhuǎn)換為實(shí)部和虛部,得到重建后的坐標(biāo)點(diǎn)

通過傅里葉描繪子,可以對(duì)形狀進(jìn)行壓縮、匹配和比較。由于傅里葉變換具有平移、旋轉(zhuǎn)和尺度不變性,因此傅里葉描繪子也具有這些不變性,使得它在形狀識(shí)別、目標(biāo)跟蹤和圖像檢索等領(lǐng)域有廣泛應(yīng)用

B:程序

如下,分割圖像,計(jì)算各區(qū)域邊界點(diǎn)的傅里葉描繪子并重建邊界

(數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述,MATLAB+Python數(shù)字圖像處理教程,matlab,python,圖像處理


matlab

Image=rgb2gray(imread('bricks.jpg'));
figure,imshow(Image),title('原始圖像');
T=graythresh(Image);                     %獲取閾值T
result=im2bw(Image,T);                   %二值化圖像
S=zeros(size(Image));
[B,L]=bwboundaries(1-result);
for k=1:length(B) 
    N=length(B{k});
    if N/2~=round(N/2)
        B{k}(end+1,:)=B{k}(end,:);
        N=N+1;
    end
    z=B{k}(:,2)+1i*B{k}(:,1);    
    for m=[N/2 N*24/32 N*60/64 N*126/128]
        Z=fft(z);
        [Y,I]=sort(abs(Z));
        for count=1:m
            Z(I(count))=0;
        end
        zz=ifft(Z);
        figure,imshow(S);
        hold on;
        plot(real(zz),imag(zz),'w');
    end
end


python

import numpy as np
import matplotlib.pyplot as plt
from skimage import io, color, filters

# 讀取圖像并轉(zhuǎn)為灰度圖像
image = color.rgb2gray(io.imread('bricks.jpg'))
plt.imshow(image, cmap='gray')
plt.title('原始圖像')
plt.show()

# 二值化圖像
threshold = filters.threshold_otsu(image)
result = image > threshold

# 初始化畫布
S = np.zeros_like(image)

# 獲取邊界
boundaries = color.label2rgb(result, image, kind='overlay')
contours = measure.find_contours(result, 0.5)

# 繪制傅里葉描繪子
for contour in contours:
    N = len(contour)
    if N % 2 != 0:
        contour = np.append(contour, [contour[-1]], axis=0)
        N += 1
    
    z = contour[:, 1] + 1j * contour[:, 0]
    
    for m in [N/2, N*24/32, N*60/64, N*126/128]:
        Z = np.fft.fft(z)
        I = np.argsort(np.abs(Z))
        
        for count in range(int(m)):
            Z[I[count]] = 0
        
        zz = np.fft.ifft(Z)
        
        plt.imshow(S, cmap='gray')
        plt.hold(True)
        plt.plot(np.real(zz), np.imag(zz), 'w')
        plt.show()


二:矩描述

(1)矩

A:幾何矩

幾何矩:是一種用于描述圖像或形狀的數(shù)學(xué)特征。它們通過對(duì)圖像或形狀的像素值及其位置進(jìn)行加權(quán)求和來計(jì)算,提供了關(guān)于形狀的位置、大小、方向以及形態(tài)特征的信息。幾何矩的計(jì)算基于圖像或形狀的二維坐標(biāo)系,并使用不同的權(quán)重函數(shù)來表示不同的特征

  • 一階幾何矩:是形狀的質(zhì)心(centroid),它表示形狀的位置信息
  • 二階幾何矩:包括中心距(central moments),可以獲得形狀的尺寸和形態(tài)特征,例如面積、面積矩、最大、最小軸長和方向等
  • 三階幾何矩和高階幾何矩:提供了更豐富的形態(tài)信息,如形狀的對(duì)稱性、彎曲程度等

幾何矩計(jì)算公式如下

  • 零階幾何矩(面積) M 00 = ∑ ∑ I ( x , y ) M_{00} = \sum \sum I(x, y) M00?=∑∑I(x,y)
  • 一階幾何矩(質(zhì)心) M 10 = ∑ ∑ x ? I ( x , y ) , M 01 = ∑ ∑ y ? I ( x , y ) M_{10} = \sum \sum x \cdot I(x, y), \quad M_{01} = \sum \sum y \cdot I(x, y) M10?=∑∑x?I(x,y),M01?=∑∑y?I(x,y)
  • 二階幾何矩(中心矩) μ 20 = ∑ ∑ ( x ? x c ) 2 ? I ( x , y ) , μ 02 = ∑ ∑ ( y ? y c ) 2 ? I ( x , y ) , μ 11 = ∑ ∑ ( x ? x c ) ( y ? y c ) ? I ( x , y ) \mu_{20} = \sum \sum (x - x_c)^2 \cdot I(x, y), \quad \mu_{02} = \sum \sum (y - y_c)^2 \cdot I(x, y), \quad \mu_{11} = \sum \sum (x - x_c)(y - y_c) \cdot I(x, y) μ20?=∑∑(x?xc?)2?I(x,y),μ02?=∑∑(y?yc?)2?I(x,y),μ11?=∑∑(x?xc?)(y?yc?)?I(x,y)

B:不變矩組

不變矩組:是一種用于圖像處理和模式識(shí)別的特征描述方法。它基于幾何矩的概念,通過對(duì)圖像或形狀的幾何矩進(jìn)行歸一化和旋轉(zhuǎn)不變性的處理,生成一組具有唯一性和穩(wěn)定性的特征向量,用于表示和比較圖像或形狀。計(jì)算步驟如下

  • 將圖像或形狀轉(zhuǎn)換為灰度圖像,并對(duì)其進(jìn)行二值化處理
  • 計(jì)算二值化圖像的幾何矩,包括零階、一階和二階矩
  • 根據(jù)幾何矩計(jì)算歸一化中心矩,將幾何矩除以零階矩的冪次來消除尺度的影響
  • 根據(jù)歸一化中心矩計(jì)算不變矩,通過對(duì)幾何矩進(jìn)行線性組合和歸一化得到一組不變矩
  • 對(duì)不變矩進(jìn)行平移、旋轉(zhuǎn)和縮放等操作,使其具有平移和旋轉(zhuǎn)不變性

(2)與矩相關(guān)的特征

A:二階矩

二階矩:也稱為方差(Variance),是統(tǒng)計(jì)學(xué)中常用的描述數(shù)據(jù)分布離散程度的指標(biāo)。在圖像處理和模式識(shí)別中,二階矩被廣泛應(yīng)用于描述圖像的紋理特征和灰度分布特性。對(duì)于一維數(shù)據(jù)集,二階矩定義為每個(gè)數(shù)據(jù)點(diǎn)與數(shù)據(jù)集均值之差的平方的平均值。對(duì)于二維數(shù)據(jù)集或圖像,二階矩是對(duì)數(shù)據(jù)點(diǎn)與數(shù)據(jù)集均值之差的平方的期望

{ M 20 = ∑ x = 0 M ? 1 ∑ y = 0 N ? 1 x 2 f ( x , y ) M 02 = ∑ x = 0 M ? 1 ∑ y = 0 N ? 1 y 2 f ( x , y ) \left\{\begin{array}{l}M_{20}=\sum_{x=0}^{M-1} \sum_{y=0}^{N-1} x^{2} f(x, y) \\M_{02}=\sum_{x=0}^{M-1} \sum_{y=0}^{N-1} y^{2} f(x, y)\end{array}\right. {M20?=x=0M?1?y=0N?1?x2f(x,y)M02?=x=0M?1?y=0N?1?y2f(x,y)?

B:主軸

主軸:是指圖形、形狀或區(qū)域的特征軸線,它描述了形狀的主要方向和旋轉(zhuǎn)情況。主軸通常使用慣性矩陣來計(jì)算,通過分析圖像或形狀在不同方向上的質(zhì)量分布來確定主軸的方向和長度

(數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述,MATLAB+Python數(shù)字圖像處理教程,matlab,python,圖像處理

C:等效橢圓

等效橢圓:是用于描述圖形或形狀的一種幾何模型,它能夠近似地表示原始圖形的外形和尺寸。等效橢圓通常是通過對(duì)圖形的邊界進(jìn)行擬合得到的,使得橢圓與圖形的形狀最相似

{ a = [ 2 ( μ 20 + μ 02 + ( μ 20 ? μ 02 ) 2 + 4 μ 11 2 ) 1 2 μ 00 ] 1 2 ] 1 2 b = [ 2 ( μ 20 + μ 02 ? ( μ 20 ? μ 02 ) 2 + 4 μ 11 2 μ 00 ] 1 2 \left\{\begin{array}{l}\left.a=\left[\frac{2\left(\mu_{20}+\mu_{02}+\sqrt{\left(\mu_{20}-\mu_{02}\right)^{2}+4 \mu_{11}^{2}}\right)^{\frac{1}{2}}}{\mu_{00}}\right]^{\frac{1}{2}}\right]^{\frac{1}{2}} \\b=\left[\frac{2\left(\mu_{20}+\mu_{02}-\sqrt{\left(\mu_{20}-\mu_{02}\right)^{2}+4 \mu_{11}^{2}}\right.}{\mu_{00}}\right]^{\frac{1}{2}}\end{array}\right. ? ? ??a=[μ00?2(μ20?+μ02?+(μ20??μ02?)2+4μ112? ?)21??]21? ?21?b=[μ00?2(μ20?+μ02??(μ20??μ02?)2+4μ112? ??]21??

D:偏心率

偏心率:是描述橢圓形狀的一個(gè)指標(biāo),它表示橢圓離開圓形的程度。偏心率越接近于0,表示橢圓形狀越接近于圓形;而偏心率越接近于1,表示橢圓形狀越拉長。在幾何學(xué)中,偏心率可以通過橢圓的焦點(diǎn)和半長軸之間的比例來定義

e = a b e=\frac{a} e=ba?文章來源地址http://www.zghlxwxcb.cn/news/detail-690304.html

到了這里,關(guān)于(數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包