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

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

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

3天內不再提示

淺析Java中的圖像處理操作

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

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

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

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

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

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

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

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

  • 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 邊緣檢測算法基于梯度,因此對圖像噪聲高度敏感。因此,在灰度圖像上應用 Canny 邊緣檢測是一種很好的做法。

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

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

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

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

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

圖像轉換為二進制

圖片

二進制圖像

尋找輪廓:ImgProc 類提供了一個findContours方法,該方法接受以下輸入參數:

  • Image:Mat - 二進制圖像
  • Contours : List- 檢測到的輪廓存儲在這個列表中
  • Hierarchy : Mat - 存儲有關圖像拓撲的信息
  • Contour Retrieval Mode:int - OpenCV 提供以下檢索模式:
    • RETR_LIST(0) :檢索所有輪廓而不保持層次關系。
    • RETR_EXTERNAL(1): 僅檢索所有極端外輪廓。
    • RETR_CCOMP(2): 檢索所有輪廓并將它們排列到 2 級層次結構中。對象的外部輪廓放置在層次 1 中,對象內部的孔的輪廓放置在層次 2 中。
    • RETR_TREE(3): 檢索所有輪廓并創建完整的層次結構列表。
  • 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方法,該方法使用以下參數:

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

圖片

輪廓

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

  • curve:MatOfPoint2f
  • approxCurve: MatOfPoint2f - 輸出曲線
  • epsilon: double - Epsilon 指定近似精度。這是原始曲線與其近似值之間的最大距離,我們可以使用 ImgProc arcLength 方法(返回曲線長度或周長)進行優化。
  • 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();
}

使用輪廓進行形狀檢測

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

    關注

    27

    文章

    1292

    瀏覽量

    56747
  • 邊緣檢測
    +關注

    關注

    0

    文章

    92

    瀏覽量

    18211
  • 噪聲抑制
    +關注

    關注

    0

    文章

    29

    瀏覽量

    12177
收藏 人收藏

    評論

    相關推薦

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

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

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

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

    基于Java技術的法醫圖像邊緣檢測的研究

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

    淺析監控圖像處理系統的軟件結構

    在現在的面向計算機內存的圖像處理系統里,一般采用Windows操作系統、PCI總線、單屏操作方式,而且又融合了圖像通信技術。
    發表于 01-20 15:00 ?1627次閱讀
    <b class='flag-5'>淺析</b>監控<b class='flag-5'>圖像</b><b class='flag-5'>處理</b>系統的軟件結構

    JAVA教程之從網絡取得圖像

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

    圖像處理基本算法操作

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

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

    所定義的所有鄰域應該具有相同的大小。鄰域運算與點運算一起形成了最基本、最重要的圖像處理方法。鄰域操作包括兩種類型:滑動鄰域操作和分離鄰域操作
    發表于 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編程對于檢查異常有褒有貶,強制處理異常是一門語言的功能。在本文中,
    的頭像 發表于 05-03 17:49 ?1932次閱讀

    JAVANIO通過MappedByteBuffer操作大文件

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

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

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

    OpenCV實現了圖像形態學什么常見操作?

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

    FPGA如何使用Verilog處理圖像

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

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

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

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

    形態學是圖像處理領域的一個分支,主要用于描述和處理圖像的形狀和結構。形態學可以用于提取圖像
    的頭像 發表于 05-23 15:52 ?1082次閱讀
    形態學運算與仿真:<b class='flag-5'>圖像</b><b class='flag-5'>處理</b><b class='flag-5'>中</b>形態學<b class='flag-5'>操作</b>的簡單解釋

    java對clob類型數據怎么處理

    處理CLOB類型數據在Java是一項非常常見和重要的任務。CLOB(Character Large Object)是一種用于存儲大量字符數據的數據類型,通常用于存儲大型文本文檔、XML文檔
    的頭像 發表于 11-21 10:30 ?2577次閱讀
    主站蜘蛛池模板: 人人舔| 五月综合色啪| 中文字幕一区在线观看视频| 一级特黄aaa大片免色| 69女porenhd| 天堂资源在线观看| 日本黄色大片免费观看| a毛片免费观看完整| 色哟永久免费| 禁h粗大太大好爽好涨受不了了| 亚色影视| 大乳妇女bd视频在线观看| 午夜小视频网站| 久久福利国产| 一区二区三区网站| 亚洲高清免费| 成人一级视频| 欧美性黄色| 日日艹| 天堂中文最新版www| 免费观看视频在线| 一级视频在线观看| 大尺度在线| 59日本人xxxxxxxxx69| 欧美在线资源| 久久夜夜肉肉热热日日| 亚洲最大成人网色| 爱婷婷网站在线观看| 久久天天躁狠狠躁夜夜躁| 中文字幕日韩三级| 欧美色惰| 天天曰天天干天天操| 初恋视频黄色| 四虎午夜剧场| 成 人 免 费 黄 色| 国产黄色大片网站| 免费成人看片| 色一情一乱一乱91av| 一级做a爰片久久毛片图片| 国产主播在线看| 中文字幕国产一区|