第三章(續)

目錄

  • 第二章 灰度變換與空間濾波(續)
    • 直方圖處理與函數繪圖
      • 生成直方圖
      • 直方圖均衡
      • 直方圖匹配
    • 空間濾波
      • 線性空間濾波
      • 非線性空間濾波
    • 圖像處理工具箱的標準濾波器
      • 線性空間濾波器
      • 非線性空間濾波器

第二章 灰度變換與空間濾波(續)

直方圖處理與函數繪圖

生成直方圖

應用函數 imhist
語法如下

h = imhist(f,b)

h為生成的直方圖,f為輸入圖像,b為"容器"的數目。
以下面這幅圖像的灰度級分布直方圖為例
image
運行如下代碼生成直方圖

>> bar(h,0)
>> f = imread('2-3-1.jpg');
>> imhist(f)

image
為了便于觀察,將灰度級分為十個級別,使用bar函數繪制條形圖

>> f = imread('2-3-1.jpg');
>> h = imhist(f,10);
>> bar(h,1);

image

直方圖均衡

觀察上面兩個直方圖的分布,灰度級主要集中在較暗區域。現在通過直方圖均衡來改變圖像的對比度。
運行代碼

>> f = imread('2-3-1.jpg');
>> g = histeq(f,256);
>> imshow(g)
>> imhist(g)

獲得均衡后的圖像
image
其灰度分布直方圖為
image
可以看到,灰度值的動態范圍增加了。

直方圖匹配

直方圖匹配應用histeq函數,可以用規定的函數映射圖像的灰度值。格式如下

g = histeq(f, hspec)

f為輸入圖像,hspec為一個規定的行向量。
同時還可以應用adapthisteq處理圖像,這個函數可以通過直方圖匹配方法逐個處理圖像的一部分,最后用雙線性內插的方法將其組合起來,從而消除人工引入的邊界。

>> f=imread('2-3-3.jpg');
>> imshow(f);
>> g3=adapthisteq(f,'NumTiles',[25 25],'ClipLimit',0.05);
>> figure,imshow(g3)

image
原始圖像
image
處理后的圖像
可以看到,圖像的細節變多了。

空間濾波

線性空間濾波

線性空間濾波的操作是將鄰域中的每個像素乘以相應的系數,然后求和,從而得到點(x,y)處的響應。
處理方式包括相關和卷積,其中卷積需要將模板旋轉180°,其余操作完全相同。關于像素的邊界處,有不同的填充方法,同時得到不同的結果。
在MATLAB中,處理線性空間卷積的函數是imfilter,格式如下

g = imfilter(f,w,filtering_mode,boundary_options,size_options)

其中后三個屬性設置了濾波模式,邊界選項和大小選項。

分別運行一下代碼

f = ones(512);
for i = 1:256for j = 1:256f(i,j)=0;end
end
for i = 257:512for j = 257:512f(i,j)=0;end
end>> gd=imfilter(f,w);
>> gr=imfilter(f,w,'replicate');
>> gs=imfilter(f,w,'symmetric');
>> gc = imfilter(f,w,'circular');
>> g8r = imfilter(im2uint8(f),w,'replicate');

生成一幅512×512的圖像,并進行線性操作,可得以下圖像。
image

非線性空間濾波

非線性空間濾波與線性空間濾波機理相同。而線性濾波基于計算乘積和,非線性空間濾波則進行非線性操作,例如,讓響應為最大像素值。
非線性操作的語法為

g = colfilt(f,[m n], 'sliding', fun)

其中f是輸入圖像,m和n是濾波器維數,sliding表明處理過程,fun是函數句柄。
填充邊界的問題可以用padarray函數來解決。

fp = padarray(f, [r c], method, direction) 

其中,f為輸入圖像,fp為填充后的圖像,[r c]表示用于填充f的行和列數,method和direction代表了填充的方法和方向。

對以下圖像進行操作
image

>> f = imread('2-4-2.jpg');
>>  g = colfilt(f,[5 5],'sliding',@mean);
>>  g = uint8(g);
>>  imshow(g);

處理結果如下
image

圖像處理工具箱的標準濾波器

線性空間濾波器

>> f= imread('2-4-3.jpg');
>> w4 = fspecial('laplacian',0);
>> w8 = [1 1 1;1 -8 1;1 1 1];
>> f = tofloat(f);
>> g4 = f - imfilter(f,w4,'replicate');
>> g8 = f - imfilter(f,w8,'replicate');
>> imshow(f);
>> figure,imshow(g4);
>> figure,imshow(g8);

原始圖像
image
g4
image
g8
image

非線性空間濾波器

>> f=imread('2-4-4.jpg');
>> fn = imnoise(f,'salt & pepper',0.2);
>> gm = medfilt2(fn);
>> gms = medfilt2(fn,'symmetric');
>> subplot(221),imshow(f)
>> subplot(222),imshow(fn)
>> subplot(223),imshow(gm)
>> subplot(224),imshow(gms)

image

轉載于:https://www.cnblogs.com/magicalzh/p/9273323.html

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

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

相關文章

Linux Mysql 安裝方法

1、檢查是否有安裝 [rootJDDB mysql]# yum list installed | grep mysql mysql-community-client.x86_64 5.6.39-2.el7 mysql56-community mysql-community-common.x86_64 5.6.39-2.el7 mysql56-community mysql-community…

oracle 經緯度算距離,根據經緯度訣別用java和Oracle存儲過程計算兩點距離

根據經緯度分別用java和Oracle存儲過程計算兩點距離create or replace procedure SP_GET_DISTANCE(cx in number,cy in number,sx in number, sy in number,distance out varchar2)isd number;x number;y number;r number;pi number;begin--開始計算r:6371229;--地球半徑pi:3.1…

Kafka集群安裝--測試--關閉

一、前提 1、kafka安裝包下載:http://kafka.apache.org/downloads 2、jdk已安裝 3、scala已安裝 4、zookeeper集群已安裝并運行二、步驟 1、對kafka_2.9.2-0.8.1.tgz進行解壓縮:tar -zxvf kafka_2.9.2-0.8.1.tgz。2、對kafka目錄進行改名:mv …

Java中的工廠模式

設計模式遵循原則 開閉原則:對擴展開放,對修改關閉里氏代換原則:只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被覆用。而衍生類也能夠在基類的基礎上增加新的行為依賴倒轉原則:開閉…

python的底層實現_Python底層封裝實現方法詳解

這篇文章主要介紹了Python底層封裝實現方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下事實上,python封裝特性的實現純屬“投機取巧”,之所以類對象無法直接調用私有方法和屬性&a…

php 附近的距離,PHP查詢附近的人及其距離的實現方法_PHP

本文實例講述了PHP查詢附近的人及其距離的實現方法。分享給大家供大家參考,具體如下:array(lat>$lat $dlat,lng>$lng-$dlng),right-top>array(lat>$lat $dlat, lng>$lng $dlng),left-bottom>array(lat>$lat - $dlat, lng>$ln…

統計指定目錄下的視頻時長

package time;import java.io.File;import org.apache.log4j.Logger;import it.sauronsoftware.jave.Encoder; import it.sauronsoftware.jave.EncoderException; import it.sauronsoftware.jave.MultimediaInfo;public class Test2 {/* 支持的后綴 */private static final Str…

怎么在cmd中運行python腳本_cmd中運行python腳本智能使用流程

(此時的ScaleMode自動變Vbuser)更有趣的是用來計算字串高、寬的TextHeight/TextWidth也變成以座標0-100的方式來表現了On Error Resume NextSet outstreemWscript.stdoutIf (LCase(Right(Wscript.fullname,11))"Wscript.exe") ThenSet objShellWscript.CreateObject(…

世界時鐘 軟件_Clocker for Mac(世界時鐘軟件)

Clocker for Mac是一款Mac平臺上免費的世界時鐘工具,方便我們查看世界各地的時間,它是開源免費的,完全沒有廣告。包括數百個時區,支持24小時制或AM / PM,macz提供Clocker mac免費版,歡迎前來下載&#xff0…

Mac 設置 NDK

2019獨角獸企業重金招聘Python工程師標準>>> 1、首先查看我自己的android studio ,找到以下路徑 如上圖,打開一個 AS 項目,file - project structure 這是我的3 個路徑 Ndk /Users/dhbm/Library/Android/sdk/ndk-bundle Sdk /User…

Workbench has not been created yet

原因是:加載的插件變更后需要清理 在啟動參數最后加入 -clean

oracle必須聲明標識符函數,引用變量時需要必須聲明標識符

SQL> declare2 pname emp.ename%type;3 psal emp.sal%type;4 begin5 select enmae,sal into pname,psal from emp where empno7782;6 dbms_output.put_line(pname||xsis||psal);7 end;8 /pname emp.ename%type;*第 2 行出現錯誤:ORA-06550: 第 2 行, 第 7 列:PLS-002…

四參數擬合曲線_每周放送|曲線擬合

曲線擬合No.1什么是曲線擬合所謂的曲線擬合,就是使用某一個模型(或者稱為方程式),將一系列的數據擬成平滑的曲線,以便觀察兩組數據之間的內在聯系,了解數據之間的變化趨勢。No.2曲線擬合的應用在數據分析時,我們有時需…

Spark集群運行jar包程序里的print日志哪里去了?

默認情況下,是輸出到stdout里的。 方法一: 進入work所在機器的spark安裝目錄下的work目錄,里面有日志輸出。 方法二: 進入spark web ui 里 點擊stdout就可以查看,如果沒有可能在其他work上。

hibernate oracle clob 注解,Hibernate3.X實現基于CLOB字段類型的注解方式:

一:Hibernate3.X實現基于CLOB字段類型的注解方式的例子:下面直接上代碼:二:UserInfo.javapackage cn.gov.csrc.cms.model;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;impo…

Flutter下拉刷新,上拉加載更多數據

下拉刷新 很簡單,直接使用 RefreshIndicator 組件, onRefresh 為重新獲取數據的方法 Widget build(BuildContext context) {return Scaffold(body: Container(padding: EdgeInsets.all(2.0),child: RefreshIndicator(onRefresh: _refresh,backgroundColo…

qt 批量裁剪圖片_照片變素描,不用下載App,好用的在線圖片處理及圖庫

我們要處理圖片時,無論是在電腦還是手機上,往往都需要下載軟件,但如果你只是臨時用一下的話,下載軟件難免顯得工程有點浩大。下面就推薦幾個圖片處理網站,打開網頁就能用。1、圖片處理 funny。pho。to這個網站提供了很…

Intellij IDEA15:建立Scala的Maven項目

原文鏈接:http://blog.csdn.net/silentwolfyh/article/details/51172369 ------------------------------------------------------------------------------------ 在創建Scala的Maven之前要安裝JavaJDK 、 Scala 的JDK 、 Maven配置,請參考下面 Int…

linux臨時啟動進程命令,Linux常用命令(一)服務控制及優化啟動過程

Linux常用命令(一)服務控制及優化啟動過程一、Red hat系統開機引導過程1、linux操作系統的引導過程一般包括以下幾個階段:開機自檢、MBR引導、GRUB菜單、加載Linux內核、init進程初始化。2、Linux系統中的進程使用數字進行標記,每個進程的身份標記號稱為…

linux 解決端口占用

2019獨角獸企業重金招聘Python工程師標準>>> 1. netstat -apn|grep 9876 2.kill -9 端口號 --------- java 在linux后臺運行的命令 ------------- nohup java -jar demo-shiro-0.0.1-SNAPSHOT.jar >temp.txt & 轉載于:https://my.oschina.net/likaixuan0/…