目錄
1.算法運(yùn)行效果圖預(yù)覽
2.算法運(yùn)行軟件版本
3.部分核心程序
4.算法理論概述
5.算法完整程序工程
1.算法運(yùn)行效果圖預(yù)覽
2.算法運(yùn)行軟件版本
vivado2019.2
matlab2022a
3.部分核心程序
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2023/07/31
// Design Name:
// Module Name: sobel
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module tops(
input i_clk,
input i_rst,
input[7:0]i_I,
output reg[7:0]o_sobel
);
parameter LEN = 256;
parameter th = 255;
........................................................
reg signed[10:0]x1;
reg signed[10:0]x2;
reg signed[10:0]y1;
reg signed[10:0]y2;
reg signed[11:0]x12;
reg signed[11:0]y12;
reg signed[11:0]x_;
reg signed[11:0]y_;
reg signed[12:0]edge_;
always @(posedge i_clk or posedge i_rst)
begin
if(i_rst)
begin
x1 <=11'd0;
x2 <=11'd0;
y1 <=11'd0;
y2 <=11'd0;
x12<=12'd0;
y12<=12'd0;
x_<=11'd0;
y_<=11'd0;
edge_ <=13'd0;
end
else begin
.........................................................
edge_<= x_ + y_; // 計(jì)算Sobel算子響應(yīng)的絕對(duì)值和
end
end
always @(posedge i_clk or posedge i_rst)
begin
if(i_rst)
begin
o_sobel <= 8'd0;
end
else begin
if(edge_>=th) //判斷絕對(duì)值和是否大于閾值
o_sobel <= 8'd255;
else
o_sobel <= 8'd0;
end
end
endmodule
0X_001m
4.算法理論概述
? ? ? ? 圖像邊緣檢測(cè)大幅度地減少了數(shù)據(jù)量,并且剔除了可以認(rèn)為不相關(guān)的信息,保留了圖像重要的結(jié)構(gòu)屬性。有許多方法用于邊緣檢測(cè),它們的絕大部分可以劃分為兩類:基于查找一類和基于零穿越的一類。基于查找的方法通過(guò)尋找圖像一階導(dǎo)數(shù)中的最大和最小值來(lái)檢測(cè)邊界,通常是將邊界定位在梯度最大的方向?;诹愦┰降姆椒ㄍㄟ^(guò)尋找圖像二階導(dǎo)數(shù)零穿越來(lái)尋找邊界,通常是Laplacian過(guò)零點(diǎn)或者非線性差分表示的過(guò)零點(diǎn)。
? ? ? ?Soble邊緣檢測(cè)算法比較簡(jiǎn),實(shí)際應(yīng)用中效率比canny邊緣檢測(cè)效率要高,但是邊緣不如Canny檢測(cè)的準(zhǔn)確,但是很多實(shí)際應(yīng)用的場(chǎng)合,sobel邊緣卻是首選,尤其是對(duì)效率要求較高,而對(duì)細(xì)紋理不太關(guān)心的時(shí)候。Soble邊緣檢測(cè)通常帶有方向性,可以只檢測(cè)豎直邊緣或垂直邊緣或都檢測(cè)。所以我們先定義兩個(gè)梯度方向的系數(shù):
? ? ? ? 然后我們來(lái)計(jì)算梯度圖像,我們知道邊緣點(diǎn)其實(shí)就是圖像中灰度跳變劇烈的點(diǎn),所以先計(jì)算梯度圖像,然后將梯度圖像中較亮的那一部分提取出來(lái)就是簡(jiǎn)單的邊緣部分。
? ? ? ? Sobel算子用了一個(gè)3*3的濾波器來(lái)對(duì)圖像進(jìn)行濾波從而得到梯度圖像,這里面不再詳細(xì)描述怎樣進(jìn)行濾波及它們的意義等。
豎起方向的濾波器:y_mask=op = [-1 -2 -1;0 0 0;1 2 1]/8;
水平方向的濾波器:op的轉(zhuǎn)置:x_mask=op’;
定義好濾波器后,我們就開始分別求垂直和豎起方向上的梯度圖像。用濾波器與圖像進(jìn)行卷積即可:
bx = abs(filter2(x_mask,a));?
by = abs(filter2(y_mask,a));
上面bx為水平方向上的梯度圖像,by為垂直方向上的梯度圖像。為了更清楚的說(shuō)明算法過(guò)程,下面給出一張示例圖像的梯度圖像。
5.算法完整程序工程
OOOOO
OOO文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-685649.html
O文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-685649.html
到了這里,關(guān)于基于FPGA的圖像sobel邊緣提取算法開發(fā),包括tb測(cè)試文件以及matlab驗(yàn)證代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!