第10章 Python 數字圖像處理(DIP) - 圖像分割 基礎知識 標準差分割法

This Chapter is all about image segmentation.
I still not finished whole chapter, but here try to publish some for reference.

這里寫目錄標題

    • 基礎知識

import sys
import numpy as np
import cv2
import matplotlib 
import matplotlib.pyplot as plt
import PIL
from PIL import Imageprint(f"Python version: {sys.version}")
print(f"Numpy version: {np.__version__}")
print(f"Opencv version: {cv2.__version__}")
print(f"Matplotlib version: {matplotlib.__version__}")
print(f"Pillow version: {PIL.__version__}")
def normalize(x, ymin=0, ymax=1):"""Description:- Map x into desired range[ymin, ymax], according to the math function $$y = \frac{(y_{\text{max}} - y_{\text{min}}) (x - x_{\text{min}})}{(x_{\text{max}} - x_{\text{min}})} + y_{\text{min}}$$Parameters:- x:    input array- ymin: desired min value, such as -1, or whatever you want- ymax: desired max value, such as 1, or other you need"""result = (ymax - ymin) * (x - x.min()) / (x.max()-x.min()) + ymin#################### old one ####################### result = (x - x.min()) / (x.max() - x.min())return result

基礎知識

RRR表示一幅圖像占據的整個空間區域。我們可以將圖像分割視為把RRR分為nnn個子區域R1,R2,?,RnR_1,R_2,\cdots,R_nR1?R2??Rn?的過程,滿足:

  • (a) ?i=1nRi=R\bigcup_{i=1}^{n} R_{i} = R?i=1n?Ri?=R
  • (b) Ri,i=0,1,2,?,nR_{i}, i=0, 1, 2, \cdots, nRi?,i=0,1,2,?,n 是一個連通集。
  • (c) 對所有iiijjji≠j,Ri?Rj=?i\neq j, R_{i}\bigcap R_{j} = \emptyseti?=j,Ri??Rj?=?
  • (d) Q(Ri)=TRUE,i=0,1,2,?,nQ(R_{i})=TRUE, i=0, 1, 2, \cdots, nQ(Ri?)=TRUE,i=0,1,2,?,n
  • (e) 對于任何鄰接區域RiR_{i}Ri?RjR_{j}Rj?Q(Ri?Rj)=FALSEQ(R_{i} \bigcup R_{j}) = FALSEQ(Ri??Rj?)=FALSE

其中Q(Ri)Q(R_{i})Q(Ri?)是定義在集合RkR_{k}Rk?中的點上的一個謂詞邏輯。

def std_seg(image, thred=0, stride=4):"""Description:Segment image caculating standard deviationParemeters:image: input grayscale imagethred: thredshold of the standard diviationstride: control the neighborhoodReturn:Binary segment image"""h, w = image.shape[:2]result = image.copy()# here we use stride the create non-overlap region, if we not need stride here, we still can get very good result# or we set stride smaller than 8, then we can get better resultfor i in range(0, h, stride):for j in range(0, w, stride):temp = image[i:i+stride, j:j+stride]if np.std(temp) <= thred:result[i:i+stride, j:j+stride] = 0else:result[i:i+stride, j:j+stride] = 255return result
# standard deviation segment, according the result below, it seems the img_f is not 8x8 region, is about 4-5
img_d = cv2.imread("DIP_Figures/DIP3E_Original_Images_CH10/Fig1001(d)(noisy_region).tif", -1)
img_seg = std_seg(img_d, thred=0, stride=5)fig = plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1), plt.imshow(img_d, 'gray'), plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(img_seg, 'gray'), plt.xticks([]), plt.yticks([])
plt.tight_layout()
plt.show()

在這里插入圖片描述

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

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

相關文章

OFBiz的探索進階

主要參照https://cwiki.apache.org/OFBIZ/ofbiz-tutorial-a-beginners-development-guide.html這個教程&#xff0c;實現的過程教程上很詳細&#xff0c;故這里不多說 還參考了下http://www.hotwaxmedia.com/apache-ofbiz-blog/ofbiz/ofbiz-tutorials/ofbiz-tutorial-building-…

python3語法都相同嗎_python2 與 python3 語法區別--轉

原文地址&#xff1a;http://old.sebug.net/paper/books/dive-into-python3/porting-code-to-python-3-with-2to3.html 使用2to3將代碼移植到Python 3 ? Life is pleasant. Death is peaceful. It’s the transition that’s troublesome. ? — Isaac Asimov (attributed) 概…

對GCD的一些理解和實踐

對GCD的一些理解和實踐GCD GCD&#xff0c;全程Grand Central Dispatch&#xff0c;是蘋果為了多核并行提出的解決方案。它是使用C語言實現&#xff0c;但是由于用了block來處理回調&#xff0c;所以使用起來十分方便。并且GCD會自動管理線程的生命周期&#xff0c;不需要我們去…

python scrapy爬蟲遇見301_在Pycharm中運行Scrapy爬蟲項目的基本操作

目標在Win7上建立一個Scrapy爬蟲項目&#xff0c;以及對其進行基本操作。運行環境&#xff1a;電腦上已經安裝了python(環境變量path已經設置好)&#xff0c;以及scrapy模塊&#xff0c;IDE為Pycharm 。操作如下&#xff1a;一、建立Scrapy模板。進入自己的工作目錄&#xff0c…

[Buzz Today]2012.08.08

# Dark Reign 2 源代碼現身Google Code Pandemic工作室開發的即時戰略游戲《Dark Reign 2》源代碼被泄露到了Google Code http://code.google.com/p/darkreign2/ # Warsow 1.0發布 Set in a futuristic cartoonish world, Warsow is a completely free fast-paced first-person…

PyTorch訓練中Dataset多線程加載數據,比Dataloader里設置多個workers還要快

PyTorch訓練中Dataset多線程加載數據&#xff0c;而不是在DataLoader 背景與需求 現在做深度學習的越來越多人都有用PyTorch&#xff0c;他容易上手&#xff0c;而且API相對TF友好的不要太多。今天就給大家帶來最近PyTorch訓練的一些小小的心得。 大家做機器學習、深度學習都…

Trading

http://v.youku.com/v_show/id_XMTA0OTcxMjgw.html?fromy1.2-1-87.3.8-1.1-1-1-7 轉載于:https://www.cnblogs.com/wangjianping/p/3705524.html

算法9---二叉樹的遍歷不用棧和遞歸

二叉樹的遍歷不用棧和遞歸 轉自&#xff1a;ACM之家 http://www.acmerblog.com/inorder-tree-traversal-without-recursion-and-without-stack-5988.html我們知道&#xff0c;在深度搜索遍歷的過程中&#xff0c;之所以要用遞歸或者是用非遞歸的棧方式&#xff0c;參考二叉樹非…

python調用攝像頭人臉識別代碼_利用face_recognition,dlib與OpenCV調用攝像頭進行人臉識別...

用已經搭建好 face_recognition&#xff0c;dlib 環境來進行人臉識別 未搭建好環境請參考&#xff1a; 使用opencv 調用攝像頭 import face_recognition import cv2 video_capture cv2.videocapture(0) # videocapture打開攝像頭&#xff0c;0為筆記本內置攝像頭&#xff0c;1…

python列表批量 修改_python實現多進程按序號批量修改文件名的方法示例

本文實例講述了python實現多進程按序號批量修改文件名的方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;說明文件名命名方式如圖&#xff0c;是數字序號開頭&#xff0c;但是中間有些文件刪掉了&#xff0c;序號不連續&#xff0c;這里將序號連續起來&#xff0c;…

Struts1 tag

標簽庫&#xff1a; a) struts框架下的struts標簽庫 b) sun jstl c標簽庫 作用: 1) jsp 和 java代碼分離 -- 自定義標簽 用標簽來替代Java的代碼 2) struts標簽 能夠和struts-config.xml actionForm等特有的對象進行交互 stru…

“multiprocessing\spawn.py”, line 105, in spawn_main錯誤與解決方法

記錄一個不知名的錯誤錯誤解決方法OS&#xff1a; Windows 10 錯誤非常的長&#xff0c;以至于&#xff0c;我也沒有什么耐心去看&#xff0c;看了前面幾行&#xff0c;應該是多線程引起的。下面太長&#xff0c;可以選擇不看。 錯誤 Traceback (most recent call last): Trac…

hpunix下11gRac的安裝

一.檢查環境 1.操作系統版本# uname -a 2.補丁包三大補丁包#swlist -l bundle|grep QPKAPPS#swlist -l bundle|grep QPKBASE#swlist -l bundle|grep HWEnable11i #swlist -l patch -a supersedes|grep PHKL_XXXXX檢查是否已有或是已被替代For HP-UX 11i V3 (11.31): PHCO_40381…

【轉】徹底搞清計算結構體大小和數據對齊原則

數據對齊: 許多計算機系統對基本數據類型合法地址做出了一些限制&#xff0c;要求某種類型對象的地址必須是某個值K(通常是2&#xff0c;4或8)的倍數。這種對齊限制簡化了形成處理器和存儲器系統之間的接口的硬件設計。例如&#xff0c;假設一個處理器總是從存儲器中取出8個字節…

python里pip是什么意思_python使用pip的方法是什么

python使用pip的方法是什么 發布時間&#xff1a;2020-08-25 11:51:08 來源&#xff1a;億速云 閱讀&#xff1a;104 作者&#xff1a;小新 小編給大家分享一下python使用pip的方法是什么&#xff0c;相信大部分人都還不怎么了解&#xff0c;因此分享這篇文章給大家參考一下&am…

Pytorch 學習率衰減 之 余弦退火與余弦warmup 自定義學習率衰減scheduler

學習率衰減&#xff0c;通常我們英文也叫做scheduler。本文學習率衰減自定義&#xff0c;通過2種方法實現自定義&#xff0c;一是利用lambda&#xff0c;另外一個是繼承pytorch的lr_scheduler import math import matplotlib.pyplot as plt import numpy as np import torch i…

c++ 字符串賦給另一個_7.2 C++字符串處理函數

點擊上方“C語言入門到精通”&#xff0c;選擇置頂第一時間關注程序猿身邊的故事作者閆小林白天搬磚&#xff0c;晚上做夢。我有故事&#xff0c;你有酒么&#xff1f;C字符串處理函數C語言和C提供了一些字符串函數&#xff0c;使得用戶能很方便地對字符串進行處理。這些是放在…

如何檢測遠程主機上的某個端口是否開啟

有時候我們要測試遠程主機上的某個端口是否開啟&#xff0c;無需使用太復雜的工作&#xff0c;windows下就自帶了工具&#xff0c;那就是telnet。怎么檢測呢&#xff0c;按下面的步驟&#xff1a; 1、安裝telnet。我的win7下就沒有telnet&#xff0c;在cmd下輸入telnet提示沒有…

Windows10 + WSL (Ubuntu) + Anaconda + vscode 手把手配置python運行環境(含虛擬環境)

配置WSL windows桌面下&#xff0c;按下面順序可以找到 "啟動或關閉windows功能” &#xff0c; 開始 -> 設置 -> 應用 -> 應用和功能 -> 可選功能 -> 相關設置下 更多Windows功能&#xff08;滾動鼠標到底部&#xff09;點擊后&#xff0c;會彈出 啟動或…

Inline函數使用注意事項

Inline函數使用注意事項 1.在一個文件中定義的inline函數不能再另一個文件中使用 2.inline函數應簡潔&#xff0c;只有少數幾個語句。 3.在inline函數中不能有循環&#xff0c;if&#xff0c;switch語句。 4.inline函數要在調用和聲明前定義&#xff01;&#xff01;&#xff0…