使用 R 處理圖像

在 R 中進行圖像處理,使用像 imager 這樣的包,可以實現強大的數字圖像分析和處理。本博客將基于"圖像數據分析"文檔的概念,演示使用 imager 包進行的關鍵技術——圖像增強、去噪和直方圖均衡化,并通過可視化結果展示這些效果。

理解數字圖像

數字圖像是一個二維函數 f ( x , y ) : R 2 → R f(x, y): \mathbb{R}^2 \rightarrow \mathbb{R} f(x,y):R2R,其中 ( x , y ) (x, y) (x,y) 是空間坐標, f ( x , y ) f(x, y) f(x,y) 表示像素強度。在數字圖像中,像素具有離散的位置和值。對于8位灰度圖像,強度范圍從0(黑色)到255(白色)。圖像可分為以下類別:

  • 二值圖像:像素值為0(黑色)或1(白色)
  • 灰度圖像:像素值在 { 0 , … , 255 } \{0, \ldots, 255\} {0,,255} 范圍內
  • 彩色圖像:三個通道(RGB),每個通道的值在 { 0 , … , 255 } \{0, \ldots, 255\} {0,,255} 范圍內

使用 imager 處理圖像

imager 包基于CImg構建,支持圖像的加載、處理和可視化。下面,我們將使用內置的"parrots.png"圖像,通過代碼和可視化輸出來演示關鍵操作。

1. 圖像獲取

加載并顯示圖像:

library(imager)
file <- system.file('extdata/parrots.png', package='imager')
img <- load.image(file)
plot(img, main="原始鸚鵡圖像")

結果
請添加圖片描述

2. 圖像增強(模糊)

模糊處理可以增強特定應用中的圖像,例如平滑細節:

img_blurry <- isoblur(img, sigma=10)
plot(img_blurry, main="模糊圖像 (sigma=10)")

結果
請添加圖片描述

注意:模糊后的圖像更加平滑,減少了羽毛紋理等細節。

3. 圖像去噪

去噪可以在保持結構的同時去除噪聲。添加噪聲并應用各向異性模糊:

img_noisy <- img + 0.5 * rnorm(prod(dim(img)))
img_denoised <- blur_anisotropic(img_noisy, ampl=1e3, sharp=0.3)
layout(t(1:2))
plot(img_noisy, main="含噪圖像")
plot(img_denoised, main="去噪后圖像(各向異性)")

結果
請添加圖片描述

注意:含噪圖像顯示隨機斑點,而去噪后的圖像恢復了清晰度,同時保持了邊緣特征。

4. 直方圖均衡化

直方圖均衡化通過重新分配像素強度來增強對比度:

img_gray <- grayscale(img)
f <- ecdf(img_gray)
img_equalized <- f(img_gray) %>% as.cimg(dim=dim(img_gray))
layout(t(1:2))
plot(img_gray, main="灰度圖像")
plot(img_equalized, main="直方圖均衡化后圖像")

結果
請添加圖片描述

注意:均衡化后的圖像對比度得到改善,使得顏色變化等細節更加明顯。

5. 形態學處理

通過強度進行閾值分割對象:

img_gray <- grayscale(img)
threshold(img_gray, "20%") %>% plot(main="閾值處理后圖像 (20%)")

結果
請添加圖片描述

注意:閾值處理創建了一個二值圖像,突出顯示了較亮區域(如白色羽毛)與較暗區域的對比。

6. 完整代碼

library(imager)# 設置保存圖像的目錄(可選:如果不存在則創建)
output_dir <- "plots"
if (!dir.exists(output_dir)) {dir.create(output_dir)
}# 圖像獲取
file <- system.file('extdata/parrots.png', package='imager')
img <- load.image(file)
plot(img, main="原始鸚鵡圖像")
dev.copy(png, file.path(output_dir, "original_parrots.png"))
dev.off()# 圖像增強(模糊)
img_blurry <- isoblur(img, sigma=10)
plot(img_blurry, main="模糊圖像 (sigma=10)")
dev.copy(png, file.path(output_dir, "blurred_parrots.png"))
dev.off()# 圖像去噪
img_noisy <- img + 0.5 * rnorm(prod(dim(img)))
img_denoised <- blur_anisotropic(img_noisy, ampl=1e3, sharp=0.3)
layout(t(1:2))
plot(img_noisy, main="含噪圖像")
plot(img_denoised, main="去噪后圖像(各向異性)")
dev.copy(png, file.path(output_dir, "noisy_vs_denoised_parrots.png"))
dev.off()# 直方圖均衡化
img_gray <- grayscale(img)
f <- ecdf(img_gray)
img_equalized <- f(img_gray) %>% as.cimg(dim=dim(img_gray))
layout(t(1:2))
plot(img_gray, main="灰度圖像")
plot(img_equalized, main="直方圖均衡化后圖像")
dev.copy(png, file.path(output_dir, "grayscale_vs_equalized_parrots.png"))
dev.off()# 形態學處理
img_gray <- grayscale(img)
threshold(img_gray, "20%") %>% plot(main="閾值處理后圖像 (20%)")
dev.copy(png, file.path(output_dir, "thresholded_parrots.png"))
dev.off()

應用場景

R中的圖像處理應用于以下領域:

  • 汽車工業:車道檢測、障礙物警告
  • 醫療:診斷成像、手術輔助
  • 安防:人臉識別、監控
  • 媒體:特效、圖像編輯

結論

R中的 imager 包簡化了圖像處理任務,如增強、去噪和直方圖均衡化。可視化結果展示了這些技術如何轉換圖像,改善質量或提取特征。探索 imagerimagerExtra 以進行更高級的應用。

資源

  • imager包文檔
  • imager入門指南
  • imagerExtra指南

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84540.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84540.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84540.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一命速通Prometheus+Grafana+Consul+VictoriaMetrics

Prometheus業務 搭建及使用 注意&#xff1a;優先看完提供的博客鏈接&#xff0c;可以快速了解該工具的功能及其搭建和使用。 prometheusgrafana 一、PrometheusGrafana普羅米修斯&#xff0c;搭建和使用_普羅米修斯 grafana-CSDN博客 ./prometheus --config.fileprometheus.ym…

螞蟻百寶箱快速創建智能體AI小程序

螞蟻百寶箱官網https://tbox.alipay.com/community?operationSource1006/ 以下是一篇關于螞蟻百寶箱快速創建智能體 AI 小程序的圖文并茂的博客&#xff1a; 標題&#xff1a;螞蟻百寶箱快速創建智能體 AI 小程序&#xff0c;開啟智能應用新體驗 引言 在數字化飛速發展的當…

大模型面試題:RL Scaling Law 中的“過優化”現象及其緩解方法是啥?

更多面試題&#xff0c;請看 大模型面試題總結-CSDN博客 或者 https://gitee.com/lilitom/ai_interview_questions/blob/master/README.md 最好將URL復制到瀏覽器中打開&#xff0c;不然可能無法直接打開 ---------------------------------------------------------------…

Filecoin系列 - IPLD 技術分析

1. 用途 1.1 存儲數據 為了成功地將數據加到 Filecoin 網絡, 需要成功完成以下步驟: 客戶端導入數據生成CAR文件: 數據必須打包成 CAR file (內容可尋址檔案) - CAR是IPLD規范的序列化歸檔文件.存儲交易: 存儲供應商和客戶之間的存儲交易必須由客戶發起, 并由存儲供應商接受…

Apptrace如何幫我精準追蹤移動廣告效果?

開發者視角&#xff1a;Apptrace如何幫我精準追蹤移動廣告效果&#xff1f;?? 作為獨立開發者&#xff0c;我最頭疼的就是?“廣告投放到底有沒有用&#xff1f;”?——錢花出去了&#xff0c;用戶是刷量機器人還是真實用戶&#xff1f;哪個渠道的ROI最高&#xff1f;Apptr…

【MySQL篇07】:redo log日志與buffer pool詳解

文章目錄 1. Buffer Pool 緩沖池2. redo log (重做日志)redo log 的作用&#xff1a;為什么需要 redo log buffer&#xff1f;什么時候刷盤呢&#xff1f; 3. 總結一下 redo log 和 Buffer Pool 在更新數據時的協同工作關鍵組件關系圖刷盤完成后 1. Buffer Pool 緩沖池 首先&a…

Qt Library庫系列----Serial串口

前言 每次寫串口相關的功能時&#xff0c;總是需要重新寫或者復制原來寫過的文件&#xff0c;容易出錯不說&#xff0c;這也不是碼農的風格&#xff0c;所以還是得有一套自己得代碼庫&#xff0c;方便調用&#xff0c;又能保持神秘感。 一、開發需求 1.有個實例類&#xff1b;…

第八節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 用戶管理(下)

Vben5 系列文章目錄 ?? 基礎篇 ? 第一節:Vben Admin 最新 v5.0 (vben5) 快速入門 ? 第二節:Vben Admin 最新 v5.0 (vben5) 快速入門 - Python Flask 后端開發詳解(附源碼) ? 第三節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 對接后端登錄接口(上) ? 第四節:Vben Ad…

Redis 性能瓶頸時如何處理?

當 Redis 遇到性能瓶頸時&#xff0c;需要從多個維度進行排查和優化。以下是系統化的解決方案&#xff0c;涵蓋硬件、配置、數據模型、網絡等關鍵點&#xff1a; 一、硬件資源優化 內存瓶頸 現象&#xff1a;頻繁觸發 OOM 或 used_memory 接近物理內存。解決&#xff1a; 升級服…

多相機三維人臉掃描儀:超寫實數字人模型制作“加速器”

超寫實數字人&#xff0c;又稱“數字分身”&#xff0c;是以真人形象為原型構建的高仿真虛擬形象&#xff0c;按維度可分為2D數字人與3D數字人。這類數字人已廣泛應用于影視制作、游戲交互、品牌直播等場景&#xff0c;其核心價值在于通過技術手段實現真人形象的數字化復刻&…

ceph 自動調整 pg_num

要讓 Ceph 的 pool 自動調整 pg_num(PG 數量),你需要啟用 PG autoscaler。這是從 Ceph Octopus(15.x) 開始引入的功能,能根據池的容量和對象數量自動建議或調整 pg_num,以實現負載均衡。 ? 一步步開啟 Pool 的 pg_num 自動調整 1. 啟用 PG autoscaler 模塊(通常默認啟…

Python Beautiful Soup 4【HTML/XML解析庫】 簡介

全面剖析大模型 圖解大模型&#xff1a;生成式AI原理與實戰 大語言模型大模型應用開發Transformer DeepSeek模型原理開發深度學習 圖靈出品 大模型強化學習詳解 大模型算法&#xff1a;強化學習、微調與對齊&#xff08;全彩&#xff09;詳解強化學習 RLHF GRPO DPO SFT CoT D…

AI Agent開發與安全

AI Agent的核心演進 Level 1&#xff1a;LLM Agent&#xff08;聊天機器人&#xff09; 特點&#xff1a;靠提示詞工程賦予人設&#xff08;如星座占卜、角色扮演&#xff09;&#xff0c;但存在幻覺問題&#xff0c;輸出不可控。局限&#xff1a;娛樂性強&#xff0c;難勝任嚴…

NumPy玩轉數據科學

本文在創作過程中借助 AI 工具輔助資料整理與內容優化。圖片來源網絡。 文章目錄 一、引言二、NumPy 概述2.1 NumPy 的定義與發展2.2 NumPy 的重要性 三、NumPy 的多維數組支持3.1 多維數組的概念3.2 多維數組的創建與操作3.2.1 數組的創建3.2.2 數組的索引和切片3.2.3 數組的運…

【uniapp小程序開發】圖表組件ucharts的使用(入門)

一、插件的安裝 安裝非常簡單&#xff0c;打開uniapp的插件市場&#xff0c;導入到項目中即可 下載地址&#xff1a;https://ext.dcloud.net.cn/plugin?id271 二、開始實踐 先看頁面的效果 頁面中實現了三個基本圖形的展示&#xff1a;折線圖、餅圖和柱狀圖。 上圖左一&a…

APISIX+etcd高可用集群部署方案詳解

#作者&#xff1a;任少近 文章目錄 一、背景二、部署etcd1、etcd的svc部署yaml2、Etcd 服務定義說明3、etcd的statefulset部署yaml4、Etcd 狀態集&#xff08;StatefulSet&#xff09;配置說明5、查看集群狀態 三、部署apisix的deployment部署1、apisix部署yaml文件2、APISIX …

Excel常用公式大全

資源寶整理分享&#xff1a;https://www.httple.net Excel常用公式大全可以幫助用戶提高工作效率&#xff0c;掌握常用的Excel公式&#xff0c;讓數據處理和計算工作更加便捷高效。了解公式學習方法、用途&#xff0c;不再死記硬背&#xff0c;拒絕漫無目的。 命令用途注釋說…

什么是Seata?

深入解析Seata&#xff1a;分布式事務的終極解決方案 什么是Seata&#xff1f; Seata&#xff08;Simple Extensible Autonomous Transaction Architecture&#xff09;是一款開源的分布式事務解決方案&#xff0c;由阿里巴巴中間件團隊于2019年1月發起并開源&#xff08;最初…

【系統規劃與管理師第二版】1.3 新一代信息技術及發展

一、物聯網 物聯網&#xff08;IoT&#xff09;是指通過信息傳感設備&#xff0c;按約定的協議將任何物品與互聯網相連接&#xff0c;進行信息交換和通信&#xff0c;以實現智能化識別、定位、跟蹤、監控和管理的網絡。物聯網主要解決物品與物品&#xff08;T2T&#xff09;、人…

在Spring Boot中自定義JSON返回日期格式的指南

在開發Spring Boot應用時&#xff0c;很多時候需要在返回的JSON數據中以特定格式顯示日期和時間。例如&#xff0c;使用LocalDateTime、Date等類型的字段時&#xff0c;默認的序列化格式可能不是你期望的路徑。本文將介紹如何在Spring Boot中實現控制返回JSON數據的日期格式&am…