數字圖像處理:實驗六

? ? ? ?uu們!大家好,2025年的新年就要到來,咸魚哥在這里祝大家在2025年每天開心快樂,天天掙大錢,自由自在,健健康康,萬事如意!(要是咸魚哥嘴笨的話,還望大家多多包涵!因為咸魚哥不太機靈。。。沒辦法(單純就是不太會表達自己的意思,所以過年不太討喜emmm...))在本章,咸魚哥主要是針對于銳化空間濾波的概念和方法來進行實驗的操作和代碼的講解,uu們!我們開始本章實驗吧!

一、基礎知識

?1.拉普拉斯變換(算子):

? ?在數字圖像處理中:

? ? (實際上這個算式很好理解,在3*3的蒙板中,我們的中心為(x,y),而算式中的前四個就是和(x,y)四鄰接的四個方塊的值,實際上就是十字上的處中心的值相加,然后再減去中心(x,y)的4倍值就可以計算出來了。

? ?注:這個蒙板只是一個例子,并不是規定中心一定為負數,還有以下的形式,包括中心點為正,還有和不為零等情況。

增強方法:

2、sobel變換(算子):

二、具體要求

? ? ? ?1、依據拉普拉斯算子,選用模板1~8對自選圖(不能選圖例1)進行銳化處理;依據Sobel算子選用模板9~10對自選圖(不能選圖例2)進行邊緣檢測。

? ? ? ? 2、應用拉普拉斯算子時,每種模板的對應輸出圖包 含“原圖”、“依據模板X(X代表模板數)濾波后”、“拉普拉斯銳化后”3個子圖,因此對于拉普拉斯銳化有8 個輸出圖,一共24個子圖,每個子圖都要有上述對 應的3個子圖名。 應用Soble算子時,為1張輸出圖,包含3個子圖:“原圖”、“行檢測”、“列檢測”。

三、應用編程

? ? ? ? 輸入透射CT(全身或局部)圖像,設計一個算法流程, 進行層次化的圖像增強,得到增強效果更好的結果圖像。

要求如下:

? ? ? 1. 使用高斯濾波進行預處理,減少noise;

? ? ? 2. 使用拉普拉斯濾波進行細節增強;

? ? ? 3. 使用Sobel 邊緣檢測增強邊緣;

? ? ? 4. 對比度受限的低對比度區域使用自適應直方圖 均衡化提升對比度;

? ? ? 5. 用中值濾波去除噪聲點;

? ? ? 6. 分析比較不同階段的圖像效果;

? ? ? 7. 將上述所有濾波方法進行優化組合獲得增強圖。

四、編程

img = imread('1.png'); % 替換為你的圖像路徑 % 從指定路徑讀取圖像文件
img_gray = rgb2gray(img); % 轉換為灰度圖像 % 將讀取的彩色圖像轉換為灰度圖像A=-8; % 定義一個變量A,用于后續模板中的計算% 拉普拉斯模板(示例,你可以根據需要定義其他模板)
laplacian_templates = { % 定義一個cell數組,存儲不同的拉普拉斯模板[0  1  0; 1  -4  1; 0  1  0], % 模板1[1  1  1; 1  -8  1; 1  1  1], % 模板2[0 -1  0; -1  4 -1; 0  -1  0], % 模板3[-1 -1 -1;  -1  8  -1; -1  -1 -1], % 模板4% 增強模板5(負中心,增強邊緣檢測效果)[0  1  0;  1 (A-4)  1;  0  1  0], % 模板5,中心系數為A-4% 增強模板6(負中心,同樣增強邊緣檢測效果)[1  1  1;  1 (A-8)  1;  1  1  1], % 模板6,中心系數為A-8% 增強模板7(正中心,用于強調中心像素)[0 -1  0; -1  (A+4) -1; 0 -1  0], % 模板7,中心系數為A+4% 增強模板8(正中心,增強中心像素的影響)[-1 -1 -1; -1  (A+8) -1; -1 -1 -1] % 模板8,中心系數為A+8
};% 拉普拉斯算子處理并顯示結果,每個模板一個窗口
for i = 1:length(laplacian_templates)figure; % 創建新窗口 % 為每個模板的處理結果創建一個新的顯示窗口% 原圖subplot(1, 3, 1); % 在1行3列的子圖中占據第1個位置imshow(img_gray); % 顯示灰度圖像title(['原圖 - 模板' num2str(i)]); % 設置標題,顯示當前處理的模板編號% 依據模板濾波后filtered_img = imfilter(double(img_gray), laplacian_templates{i}, 'same', 'replicate'); % 使用拉普拉斯模板進行濾波subplot(1, 3, 2); % 在1行3列的子圖中占據第2個位置imshow(filtered_img, []); % 顯示濾波后的圖像,使用空矩陣[]自動調整顯示范圍title(['依據模板' num2str(i) '濾波后']); % 設置標題% 拉普拉斯銳化后sharpened_img = double(img_gray) - filtered_img; % 通過原圖減去濾波后的圖像進行銳化sharpened_img = uint8(sharpened_img); % 將結果轉換為uint8類型subplot(1, 3, 3); % 在1行3列的子圖中占據第3個位置imshow(sharpened_img); % 顯示銳化后的圖像title(['拉普拉斯銳化后 - 模板' num2str(i)]); % 設置標題
end

結果:

? ? ? ? 應用代碼:

% Sobel算子
sobel_x = [-1 0 1; -2 0 2; -1 0 1]; % Sobel算子的x方向模板
sobel_y = [-1 -2 -1; 0 0 0; 1 2 1]; % Sobel算子的y方向模板% 行檢測(注釋說明了不推薦手動執行卷積操作的原因)
edge_x = imfilter(double(img_gray), sobel_x, 'same', 'replicate'); % 使用Sobel x方向模板進行濾波
edge_x = uint8(255 * mat2gray(edge_x)); % 將濾波結果歸一化到0-255范圍并轉換為uint8類型% 列檢測(同理,使用Sobel y方向模板進行濾波)
edge_y = imfilter(double(img_gray), sobel_y, 'same', 'replicate'); % 使用Sobel y方向模板進行濾波
edge_y = uint8(255 * mat2gray(edge_y)); % 將濾波結果歸一化到0-255范圍并轉換為uint8類型% 顯示結果
figure; % 創建一個新的顯示窗口
% 原圖
subplot(1, 3, 1); % 在1行3列的子圖中占據第1個位置
imshow(img_gray); % 顯示灰度圖像
title('原圖'); % 設置標題% 行檢測
subplot(1, 3, 2); % 在1行3列的子圖中占據第2個位置
imshow(edge_x); % 顯示行檢測的結果
title('行檢測'); % 設置標題% 列檢測
subplot(1, 3, 3); % 在1行3列的子圖中占據第3個位置
imshow(edge_y); % 顯示列檢測的結果
title('列檢測'); % 設置標題

? ? ? ?結果:

代碼:

% 讀取CT圖像
ct_img = imread('1.png'); % 替換為你的CT圖像路徑
ct_img_gray = rgb2gray(ct_img); % 轉換為灰度圖像% 1. 使用高斯濾波進行預處理,減少噪聲
filtered_img = imgaussfilt(ct_img_gray, 2); % 對灰度圖像進行高斯濾波% 2. 使用拉普拉斯濾波進行細節增強
laplacian_kernel = [0 -1  0; -1  4 -1; 0 -1  0]; % 拉普拉斯算子
detail_enhanced = imfilter(double(filtered_img), laplacian_kernel, 'same', 'replicate'); % 對濾波后的圖像進行拉普拉斯濾波
detail_enhanced = double(filtered_img) - detail_enhanced; % 使用原圖減去拉普拉斯濾波結果進行細節增強
detail_enhanced = uint8(detail_enhanced); % 轉換為uint8類型% 定義Sobel算子
sobel_x = [-1 0 1; -2 0 2; -1 0 1]; % Sobel算子的x方向分量
sobel_y = [-1 -2 -1; 0 0 0; 1 2 1]; % Sobel算子的y方向分量% 3. 使用Sobel 邊緣檢測增強邊緣
edge_x = imfilter(double(detail_enhanced), sobel_x, 'same', 'replicate'); % 對細節增強后的圖像進行x方向Sobel濾波
edge_y = imfilter(double(detail_enhanced), sobel_y, 'same', 'replicate'); % 對細節增強后的圖像進行y方向Sobel濾波
edge_magnitude = sqrt(edge_x.^2 + edge_y.^2); % 計算邊緣強度
edge_magnitude = uint8(255 * (edge_magnitude - min(edge_magnitude(:))) / (max(edge_magnitude(:)) - min(edge_magnitude(:)))); % 歸一化到0-255范圍% 4. 對比度受限的低對比度區域使用自適應直方圖均衡化提升對比度
adapthisteq_img = adapthisteq(detail_enhanced); % 對細節增強后的圖像進行自適應直方圖均衡化% 5. 用中值濾波去除噪聲點
final_img = medfilt2(adapthisteq_img, [3 3]); % 對自適應直方圖均衡化后的圖像進行中值濾波% 6. 分析比較不同階段的圖像效果
figure;
subplot(2, 3, 1);
imshow(ct_img_gray);
title('原圖');subplot(2, 3, 2);
imshow(filtered_img);
title('高斯濾波后');subplot(2, 3, 3);
imshow(detail_enhanced);
title('拉普拉斯細節增強后');subplot(2, 3, 4);
imshow(edge_magnitude);
title('Sobel邊緣檢測后');subplot(2, 3, 5);
imshow(adapthisteq_img);
title('自適應直方圖均衡化后');subplot(2, 3, 6);
imshow(final_img);
title('最終增強圖');
% 7. 將上述所有濾波方法進行優化組合獲得增強圖(已在上一步完成)

結果:

五、結語

? ? ? ?uu們!本章實驗的實驗結果到此就結束了,臨近春節,給自己放個假才讓我們更好的去面對嶄新的2025,uu們,下一章我們見!

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

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

相關文章

Langchain+文心一言調用

import osfrom langchain_community.llms import QianfanLLMEndpointos.environ["QIANFAN_AK"] "" os.environ["QIANFAN_SK"] ""llm_wenxin QianfanLLMEndpoint()res llm_wenxin.invoke("中國國慶日是哪一天?") print(…

上海亞商投顧:滬指沖高回落 大金融板塊全天強勢 上海亞商投

上海亞商投顧前言:無懼大盤漲跌,解密龍虎榜資金,跟蹤一線游資和機構資金動向,識別短期熱點和強勢個股。 一.市場情緒 市場全天沖高回落,深成指、創業板指午后翻綠。大金融板塊全天強勢,天茂集團…

農產品價格報告爬蟲使用說明

農產品價格報告爬蟲使用說明 # ************************************************************************** # * * # * 農產品價格報告爬蟲 …

3.4 Go函數作用域(標識符)

作用域標識符 簡單來說,作用域指的是標識符可以起作用的范圍,即其可見范圍。將標識符的可見性限制在一定范圍內,這個范圍就是作用域。 把標識符約束在一定的可見范圍內,這個范圍就是作用域。 1. 宇宙塊 特點:預定義…

kaggle比賽入門 - House Prices - Advanced Regression Techniques(第二部分)

本文承接上一篇 1. 分析住宅類型(BldgType)的分布以及它們與銷售價格(SalePrice)的關系 # 1. distribution of dwelling types and their relation to sale prices # BldgType: Type of dwellingdwelling_types df[BldgType].v…

使用shell命令安裝virtualbox的虛擬機并導出到vagrant的Box

0. 安裝virtualbox and vagrant [rootolx79vagrant ~]# cat /etc/resolv.conf #search 114.114.114.114 nameserver 180.76.76.76-- install VirtualBox yum install oraclelinux-developer-release-* wget https://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-g…

【數據結構】空間復雜度

目錄 一、引入空間復雜度的原因 二、空間復雜度的分析 ? 2.1 程序運行時內存大小 ~ 程序本身大小 ? 2.2 程序運行時內存大小 ~ 算法運行時內存大小 ? 2.3 算法運行時內存大小 ? 2.4 不考慮算法全部運行空間的原因 三、空間復雜度 ? 3.1空間復雜度的定義 ? 3.2 空…

MySQL--》深度解析InnoDB引擎的存儲與事務機制

目錄 InnoDB架構 事務原理 MVCC InnoDB架構 從MySQL5.5版本開始默認使用InnoDB存儲引擎,它擅長進行事務處理,具有崩潰恢復的特性,在日常開發中使用非常廣泛,其邏輯存儲結構圖如下所示, 下面是InnoDB架構圖&#xf…

Redis高階5-布隆過濾器

Redis布隆過濾器 ? 由一個初始值都為零的bit數組和多個哈希函數構成,用來快速判斷集合中是否存在某個元素 目的減少內存占用方式不保存數據信息,只是在內存中做一個是否存在的標記flag 布隆過濾器(英語:Bloom Filter&#xff0…

DeepSeek學術題目選擇效果怎么樣?

論文選題 一篇出色的論文背后,必定有一個“智慧的選題”在撐腰。選題足夠好文章就能順利登上高水平期刊;選題不行再精彩的寫作也只能“當花瓶”。然而許多寶子們常常忽視這個環節,把大量時間花在寫作上,選題時卻像抓鬮一樣隨便挑一…

第五節 MATLAB命令

本節的內容將提供常用的一些MATLAB命令。 在之前的篇章中我們已經知道了MATLAB數值計算和數據可視化是一個交互式程序,在它的命令窗口中您可以在MATLAB提示符“>>”下鍵入命令。 MATLAB管理會話的命令 MATLAB提供管理會話的各種命令。如下表所示:…

Docker核心命令與Yocto項目的高效應用

隨著軟件開發逐漸向分布式和容器化方向演進,Docker 已成為主流的容器化技術之一。它通過標準化的環境配置、資源隔離和高效的部署流程,大幅提高了開發和構建效率。Yocto 項目作為嵌入式 Linux 系統構建工具,與 Docker 的結合進一步增強了開發…

Qt 5.14.2 學習記錄 —— ?? QFile和多線程

文章目錄 1、QFile1、打開2、讀寫3、關閉4、程序5、其它功能 2、多線程1、演示2、鎖 3、條件變量和信號量 1、QFile Qt有自己的一套文件體系,不過Qt也可以使用C,C,Linux的文件操作。使用Qt的文件體系和Qt自己的一些類型更好配合。 管理寫入讀…

【全棧】SprintBoot+vue3迷你商城-擴展:vue3項目創建及目錄介紹

【全棧】SprintBootvue3迷你商城-擴展:vue3項目創建及目錄介紹 往期的文章都在這里啦,大家有興趣可以看一下 【全棧】SprintBootvue3迷你商城(1) 【全棧】SprintBootvue3迷你商城(2) 【全棧】SprintBootvu…

使用Aardio庫在Python中創建桌面應用:簡單指南

引言 隨著軟件開發需求的不斷增長,開發者們需要更加靈活和高效的工具來快速構建應用程序。Python以其簡潔易讀的語法和強大的社區支持而聞名,但在創建圖形用戶界面(GUI)時,可能會遇到一些挑戰。Aardio作為一種輕量級的…

多版本并發控制:MVCC的作用和基本原理

多版本并發控制:MVCC的作用和基本原理 1、MVCC簡介1.1 快照讀與當前讀的區別1.1.1 快照讀1.1.2 當前讀 1.2 數據庫的讀寫問題1.3 MVCC的作用 2、MVCC實現原理之ReadView2.1 什么是ReadView2.2 ReadView的設計思路2.3 MVCC整體操作流程 1、MVCC簡介 1.1 快照讀與當前…

神經網絡|(二)sigmoid神經元函數

【1】引言 在前序學習進程中,我們已經了解了基本的二元分類器和神經元的構成,文章學習鏈接為: 神經網絡|(一)加權平均法,感知機和神經元-CSDN博客 在此基礎上,我們認識到神經元本身在做二元分類,是一種非…

Qt中QVariant的使用

1.使用QVariant實現不同類型數據的相加 方法:通過type函數返回數值的類型,然后通過setValue來構造一個QVariant類型的返回值。 函數: QVariant mainPage::dataPlus(QVariant a, QVariant b) {QVariant ret;if ((a.type() QVariant::Int) &a…

BAHD酰基轉移酶對紫草素的手性催化-文獻精讀105

Two BAHD Acyltransferases Catalyze the Last Step in the Shikonin/Alkannin Biosynthetic Pathway 兩個BAHD酰基轉移酶催化了紫草素/左旋紫草素生物合成途徑中的最后一步 一個BAHD酰基轉移酶專門催化紫草素的酰基化,而另一個BAHD酰基轉移酶則僅催化紫草素的對映…

Avalonia+ReactiveUI跨平臺路由:打造絲滑UI交互的奇幻冒險

一、引言 在當今數字化時代,跨平臺應用開發已成為大勢所趨。開發者們迫切需要一種高效、靈活的方式,能夠讓應用程序在不同操作系統上無縫運行,為用戶提供一致的體驗。Avalonia 和 ReactiveUI 的組合,宛如一對天作之合的舞者&…