在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

淺析Java中的圖像處理操作

jf_78858299 ? 來源:深度學習與計算機視覺 ? 作者:磐懟懟 ? 2023-02-08 15:10 ? 次閱讀

我們將在本文中介紹以下高級圖像處理操作:

  • Canny 邊緣檢測
  • 輪廓和形狀識別

Canny 邊緣檢測 :Canny 邊緣檢測是一種流行的邊緣檢測算法。它是由 John F. Canny 在 1986 年開發(fā)的。它是一個多階段算法,我們將按如下方式經(jīng)歷每個階段:

  1. 噪聲抑制: 第一步是使用高斯平滑從圖像中去除噪聲,這涉及使用高斯核,其中靠近核中心的像素被賦予比遠處像素更多的權(quán)重。
  2. 梯度計算 :應(yīng)用Sobel 濾波器計算圖像的梯度以計算邊緣強度和方向,該濾波器突出顯示 x 和 y 軸上的強度變化。
  3. Non-Maximum Suppression: Non-Maximum Suppression通過遍歷上一步生成的梯度矩陣中的所有值來尋找邊緣方向強度更大的像素,從而減少邊緣的厚度。
  4. 雙閾值滯后: 最后一步使用輸入?yún)?shù)下閾值和上限閾值來過濾掉潛在邊緣,根據(jù)以下標準丟棄不相關(guān)的邊緣:

如果像素梯度值高于上限閾值,則像素被接受為邊緣。

如果像素梯度值低于下限閾值,則像素被拒絕。

如果像素梯度值介于兩個閾值之間,則僅當它連接到高于閾值上限的像素時才會被接受。

ImgProc類為 Canny 邊緣檢測提供了一個Canny方法,該方法采用以下參數(shù):

  • Source Image: Mat
  • Output edges: Mat
  • Lower Threshold: double
  • Upper Threshold: double

public static Mat cannyEdges(Mat img){
Mat canny = new Mat();
Imgproc.Canny(img,canny,30,100);
return canny;
}

Canny 邊緣檢測

圖片

原始圖像

圖片

Canny 邊緣檢測

圖片

雙邊濾波圖像上的 Canny 邊緣檢測

注意:Canny 邊緣檢測算法基于梯度,因此對圖像噪聲高度敏感。因此,在灰度圖像上應(yīng)用 Canny 邊緣檢測是一種很好的做法。

**輪廓:**輪廓可以定義為連接沿邊界具有相同強度的所有連續(xù)點的曲線。它們對于形狀分析和對象檢測很有用。

使用二值圖像查找輪廓是一種很好的做法。二值圖像是這樣的圖像,其中每個像素只能有兩個可能的強度值(0 表示黑色,1 或 255 表示白色)。

ImgProc 類提供了一種用于生成二值圖像的閾值方法,該方法使用以下參數(shù):

  • Source Image: Mat - grayscale image
  • Output Image: Mat
  • Threshold : double: 如果像素值小于閾值,則設(shè)置為 0。
  • Maximum:雙精度 - 分配給超過閾值的像素的最大值。
  • Type of threshold:int - OpenCV 提供不同類型的閾值技術(shù),如 OTSUTOZERO等。

public static Mat convertToBinary(Mat img){
Mat binImg = new Mat();
Imgproc.threshold(img,binImg,125 ,255,Imgproc.THRESH_BINARY);
return binImg;
}

圖像轉(zhuǎn)換為二進制

圖片

二進制圖像

尋找輪廓:ImgProc 類提供了一個findContours方法,該方法接受以下輸入?yún)?shù):

  • Image:Mat - 二進制圖像
  • Contours : List- 檢測到的輪廓存儲在這個列表中
  • Hierarchy : Mat - 存儲有關(guān)圖像拓撲的信息
  • Contour Retrieval Mode:int - OpenCV 提供以下檢索模式:
    • RETR_LIST(0) :檢索所有輪廓而不保持層次關(guān)系。
    • RETR_EXTERNAL(1): 僅檢索所有極端外輪廓。
    • RETR_CCOMP(2): 檢索所有輪廓并將它們排列到 2 級層次結(jié)構(gòu)中。對象的外部輪廓放置在層次 1 中,對象內(nèi)部的孔的輪廓放置在層次 2 中。
    • RETR_TREE(3): 檢索所有輪廓并創(chuàng)建完整的層次結(jié)構(gòu)列表。
  • Contour Approximation Method : int - 近似方法指定存儲邊界坐標的方式。
    • CHAIN_APPROX_NONE: 存儲所有邊界點。
    • CHAIN_APPROX_SIMPLE :去除冗余點并壓縮輪廓;例如:對于一條線,存儲兩個端點。

public static void findAndDrawContours(Mat binImg,Mat org){
List contourList = new ArrayList();
Imgproc.findContours(binImg,contourList,new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);
Imgproc.drawContours(org, contourList, -1, new Scalar(50, 205, 50), 2);
HighGui.imshow("Contours",org);
HighGui.waitKey();
}

查找和繪制輪廓

繪制輪廓: ImgProc 類提供了一個drawContours方法,該方法使用以下參數(shù):

  • Image:Mat - 目標圖像
  • Contour List:List< MatOfPoint>
  • Contour Index: int - 要繪制的輪廓索引,負值表示所有輪廓都已繪制。
  • Color:Scalar - 輪廓的顏色。
  • Thickness:int - 邊界線的厚度。

圖片

輪廓

使用輪廓進行形狀檢測: 我們可以使用輪廓來根據(jù)近似曲線中的周長、面積和陣列點的數(shù)量來檢測形狀。ImgProc 類提供了一個approxPolyDP方法,該方法返回基于輪廓的近似曲線并使用以下參數(shù):

  • curve:MatOfPoint2f
  • approxCurve: MatOfPoint2f - 輸出曲線
  • epsilon: double - Epsilon 指定近似精度。這是原始曲線與其近似值之間的最大距離,我們可以使用 ImgProc arcLength 方法(返回曲線長度或周長)進行優(yōu)化。
  • closed:布爾值 - 如果近似曲線是閉合的,則為 true,否則為 false。

public static void shapeDetection(Mat binImg,Mat org){
List contourList = new ArrayList();
List selectedContours = new ArrayList<>();
Imgproc.findContours(binImg,contourList,new Mat(), Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
for(int i=0;i MatOfPoint2f point = new MatOfPoint2f();
point.fromList(contourList.get(i).toList());
MatOfPoint2f approxCurve = new MatOfPoint2f();
double parameter = Imgproc.arcLength(point, true);
Imgproc.approxPolyDP(point, approxCurve, parameter * 0.02, true);
long total = approxCurve.total();
//Detecting Rectangle Shape
if (total == 4) {
double area = Imgproc.contourArea(contourList.get(i));
//rectangle with area greater than 500
if(area>500)
selectedContours.add(contourList.get(i));
}
}
Imgproc.drawContours(org, selectedContours, -1, new Scalar(50, 205, 50), 3);
HighGui.imshow("Contours",org);
HighGui.waitKey();
}

使用輪廓進行形狀檢測

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

    關(guān)注

    27

    文章

    1326

    瀏覽量

    57823
  • 邊緣檢測
    +關(guān)注

    關(guān)注

    0

    文章

    94

    瀏覽量

    18385
  • 噪聲抑制
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    12310
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    Java的常用異常處理方法 java推薦

    Java,異常情況分為Exception(異常)和Error(錯誤)兩大類,Java異常通常是指程序運行過程中出現(xiàn)的非正常情況,如用戶輸入錯誤、除數(shù)為零、需要處理的文件不存在、數(shù)組
    發(fā)表于 01-19 17:26

    圖像處理ROI和繪圖是如何操作的?

    圖像處理ROI和繪圖的操作
    發(fā)表于 11-09 07:01

    基于Java技術(shù)的法醫(yī)圖像邊緣檢測的研究

    在醫(yī)學圖像,在相對較小的區(qū)域內(nèi)圖像頻率的陡峭變化反映了目標對象的邊緣信息,基于Sobel 算子的梯度向量操作對低噪聲的醫(yī)學圖像的邊緣提取效
    發(fā)表于 07-30 09:23 ?18次下載

    淺析監(jiān)控圖像處理系統(tǒng)的軟件結(jié)構(gòu)

    在現(xiàn)在的面向計算機內(nèi)存的圖像處理系統(tǒng)里,一般采用Windows操作系統(tǒng)、PCI總線、單屏操作方式,而且又融合了圖像通信技術(shù)。
    發(fā)表于 01-20 15:00 ?1738次閱讀
    <b class='flag-5'>淺析</b>監(jiān)控<b class='flag-5'>圖像</b><b class='flag-5'>處理</b>系統(tǒng)的軟件結(jié)構(gòu)

    JAVA教程之從網(wǎng)絡(luò)取得圖像

    JAVA教程之從網(wǎng)絡(luò)取得圖像,很好的JAVA的資料,快來學習吧
    發(fā)表于 04-11 17:28 ?5次下載

    圖像處理基本算法操作

    直方圖是圖像處理另一重要處理過程,它反映圖像不同像素值的統(tǒng)計信息。從這句話我們可以了解到直方
    的頭像 發(fā)表于 08-14 15:05 ?6076次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>處理</b>基本算法<b class='flag-5'>操作</b>

    圖像處理教程之圖像的鄰域操作資料說明

    所定義的所有鄰域應(yīng)該具有相同的大小。鄰域運算與點運算一起形成了最基本、最重要的圖像處理方法。鄰域操作包括兩種類型:滑動鄰域操作和分離鄰域操作
    發(fā)表于 03-08 15:58 ?12次下載
    <b class='flag-5'>圖像</b><b class='flag-5'>處理</b>教程之<b class='flag-5'>圖像</b>的鄰域<b class='flag-5'>操作</b>資料說明

    10個Java編程異常處理最佳實踐

    這里是我收集的10個Java編程中進行異常處理的10最佳實踐。在Java編程對于檢查異常有褒有貶,強制處理異常是一門語言的功能。在本文中,
    的頭像 發(fā)表于 05-03 17:49 ?2138次閱讀

    JAVANIO通過MappedByteBuffer操作大文件

    java io操作通常采用BufferedReader,BufferedInputStream等帶緩沖的IO類處理大文件,不過java n
    的頭像 發(fā)表于 05-05 23:42 ?3733次閱讀

    視覺圖像系統(tǒng),ROI如何做顯示處理以及具體操作步驟

    處理以及具體操作步驟。 如何確保ROI感興趣的區(qū)域,在我們選定的測量范圍之內(nèi)呢?大致有4個以下步驟: 1)基于標準圖像目標的特征,確定參考坐標系; 2)在標準圖像
    的頭像 發(fā)表于 01-27 09:39 ?1.1w次閱讀
    視覺<b class='flag-5'>圖像</b>系統(tǒng)<b class='flag-5'>中</b>,ROI如何做顯示<b class='flag-5'>處理</b>以及具體<b class='flag-5'>操作</b>步驟

    OpenCV實現(xiàn)了圖像形態(tài)學什么常見操作

    圖像形態(tài)學是圖像處理的分支學科,在二值圖像處理占有重要地位、OpenCV
    的頭像 發(fā)表于 05-27 14:11 ?1652次閱讀
    OpenCV<b class='flag-5'>中</b>實現(xiàn)了<b class='flag-5'>圖像</b>形態(tài)學什么常見<b class='flag-5'>操作</b>?

    FPGA如何使用Verilog處理圖像

    的完整 Verilog 代碼 。 在這個FPGA Verilog項目中,一些簡單的處理操作都是在Verilog實現(xiàn)的,比如反相、亮度控制和閾值操作
    的頭像 發(fā)表于 09-23 15:50 ?6559次閱讀

    java實時圖像處理庫教程演示

    項目介紹 項目名稱:cv4j 所屬系列:openharmony的第三方組件適配移植 功能:CV in Java,純 java 實時圖像處理庫 項目移植狀態(tài):主功能完成 調(diào)用差異:無
    發(fā)表于 03-23 09:19 ?2次下載

    形態(tài)學運算與仿真:圖像處理形態(tài)學操作的簡單解釋

    形態(tài)學是圖像處理領(lǐng)域的一個分支,主要用于描述和處理圖像的形狀和結(jié)構(gòu)。形態(tài)學可以用于提取圖像
    的頭像 發(fā)表于 05-23 15:52 ?1361次閱讀
    形態(tài)學運算與仿真:<b class='flag-5'>圖像</b><b class='flag-5'>處理</b><b class='flag-5'>中</b>形態(tài)學<b class='flag-5'>操作</b>的簡單解釋

    java對clob類型數(shù)據(jù)怎么處理

    處理CLOB類型數(shù)據(jù)在Java是一項非常常見和重要的任務(wù)。CLOB(Character Large Object)是一種用于存儲大量字符數(shù)據(jù)的數(shù)據(jù)類型,通常用于存儲大型文本文檔、XML文檔
    的頭像 發(fā)表于 11-21 10:30 ?3221次閱讀
    主站蜘蛛池模板: 欧美天天综合 | 免费观看理论片毛片 | 日韩午夜在线视频不卡片 | 日韩a毛片免费全部播放完整 | 激情五月综合婷婷 | 天天综合亚洲国产色 | 色综合中文字幕 | 屁股趴过来欠打高h | 国产三级视频 | 99久久国产免费 - 99久久国产免费 | 在线亚洲精品中文字幕美乳 | 中文天堂在线观看 | 91午夜在线观看 | 天天操天天摸天天射 | 亚洲成人在线网站 | 一级黄色毛毛片 | 欧美视频一区二区三区在线观看 | 亚洲色图 第一页 | 免费免费啪视频视频观看 | 欧美日本免费 | 天天碰人人 | 四虎影视在线观看 | 最近2018中文字幕免费看2019 | 色婷婷资源网 | 日本最猛黑人xxxx猛交 | 午夜精品久久久久久91 | 日本不卡一区二区三区视频 | 婷婷狠狠 | 免费爱爱网 | 国产亚洲自在精品久久 | 在线观看视频一区二区三区 | 特黄一级视频 | 免费在线成人 | 亚洲天堂资源 | 欧美性猛交ⅹxxx乱大交免费 | 超人碰碰碰人人成碰人 | 深夜视频在线观看免费 | 亚洲综合图片人成综合网 | 91操碰| 日韩午夜r电影在线观看 | 午夜视频在线观看免费观看在线观看 |