編程影像平滑
1. 我想使用matlab7.0處理從攝像機獲取的圖像,怎樣編程能使圖像變得更清晰
嚴格來說你對從攝像機獲取的圖像再處理的話就相當於改變了圖像的內容,即是會影響相機的ccd等特性在圖像上的反映。
使圖像變得更清晰的方法很多,基本來說就是平滑,銳化等基本操作組成的,平滑即相當於去噪,把一些不需要的小的干擾去除,然後加上適當的銳化,即是加強希望要的圖像細節等。
2. 基於IWS的土地利用動態變化的影像發布系統構建
朱有法 謝德體 駱雲中
(西南大學資源環境學院,重慶,400716)
摘要:為及時、准確地掌握土地資源利用狀況,使土地利用動態監測可視化,基於Windows網路環境的B/S體系結構,整合IIS (Internet Information Server)和IWS (Image Web Server),建立影像發布系統。系統採用影像網路伺服器、ECWP插件等技術,成功地解決了基於瀏覽器的遙感影像放大、縮小、漫遊,以及圖幅范圍、目標位置信息顯示等問題,實現了海量遙感影像數據的有效管理和快速傳輸。
關鍵詞:Image Web Server;土地利用;影像發布
土地利用動態管理是要求土地部門能夠及時、准確地掌握土地利用的狀況,為政府決策、各級土地管理部門制定管理政策和落實各項管理措施提供科學依據[1]。土地利用動態變化影像數據具有實時、可視化等特點。傳統WebGIS應用,由於系統模塊之間一般為緊耦合、造成系統可移植性較差,互操作能力有限,已經不能滿足企業級的應用需求[2]。建立網路土地利用動態變化的影像信息發布系統,對土地資源信息進行網路化管理,使用戶在客戶端實現土地數據的操作,如漫遊、查詢、分析等操作,從而使整個土地部門對土地資源信息進行分布式管理,使系統資源達到共享、開放,實現土地利用的動態、實時、可視化管理。
1 系統目標
系統採用影像網路伺服器IWS (Image Web Server)實現遙感影像的管理和發布。這是通過Internet/Intranet發送影像數據的專業高性能應用系統,它提供ECWP高性能影像數據流處理(High Performance Streaming Imagery)協議。這個協議為用戶遠程瀏覽海量影像提供了一條新的高效率的途徑,它允許用戶最快的訪問任何大小的影像文件,甚至TB級影像[3]。它不同於使用伺服器端圖像子集選取和解壓方式的其他影像數據分布式服務技術,而是直接將壓縮的圖像傳輸到客戶端的瀏覽器,由客戶端瀏覽器在本地解壓和可視化。
傳統的圖像媒體格式有 BMP、TIFF、GIF、JPEG 等,這些格式的圖像要麼體積大,要麼有失真,而且在網上傳輸佔有較大帶寬[4]。由於土地資源利用變化影像信息傳輸量大,在保證圖像質量的前提下,盡量減少所佔用的網路資源,提高數據傳輸速度。目前採用小波變換和位平面熵編碼器生成的ECW和JPEG2000 格式的圖像文件具有良好的壓縮性能。
1.1 更高的壓縮率和壓縮方式
在離散小波變換演算法中,圖像可以轉換為一系列更加有效存儲像素模塊的「子波」,在相同圖像質量下比JPEG有更高的壓縮比,而且壓縮後的圖像顯得更細膩平滑,特別適合在互聯網和遙感圖像傳輸領域應用;壓縮一次,有多種解壓方式,可以不需要解壓整個文件而抽取各種解析度、質量、分量或空間區域的圖像。
1.2 實現漸進傳輸
不像傳統的 JPEG 那樣由上到下、從左到右一塊一塊地慢慢傳輸、顯示,而 IWS (Image Web Server)是首先傳輸圖像的輪廓,然後逐步傳輸圖像質量高的數據,接收端就可以根據不同像素精度(位深度)和圖像空間解析度來重構圖像,讓圖像由朦朧到清晰顯示。
1.3 碼流的隨機訪問和處理
允許用戶在圖像中隨機地定義感興趣區域,使得這一區域的圖像質量高於其他圖像區域;碼流的隨機處理允許用戶進行旋轉、移動、濾波和特徵提取等操作。
1.4 支持多源影像數據和海量數據快速壓縮
系統實現對多種數據的管理,包括衛星遙感影像、航空遙感影像等的柵格數據,土地利用現狀圖、土地利用詳查圖、地籍圖等矢量數據,各種統計表格、文本說明以及聲音、圖片等屬性數據。高解析度的遙感影像的獲取,可以迅速得到幾周前甚至幾天前的最新更新數據,使用戶可以及時更新資料庫中的數據。通過數據的融合和挖掘,得到用戶感興趣的支持地理投影的土地信息,數據量可達GB、TB級。
2 系統設計
2.1 系統的體系結構
系統關鍵技術是以IWS為基礎,快速將多源數據復合、通過網路集成多種技術成果和數據,進行准確、連續、動態的管理土地資源利用狀況,使之具有較高的信息服務水平和信息共享能力。
對於海量衛星遙感影像數據,為了能在瀏覽器端直接、順暢、平滑地顯示目標影像及其地理信息,考慮現實網路帶寬的限制,系統採用ECW、JPEG2000圖像壓縮技術,基於影像網路伺服器IWS (Image Web Server),應用ActiveX插件技術原理,通過在客戶端瀏覽器上安裝ECWP插件,以High-performance streaming imagery協議建立起與影像網路伺服器IWS (Image Web Server)的聯系,然後把取得的數據信息在本地客戶端進行解壓縮還原處理,實現影像的發布。這種結構既減緩了伺服器的運行負擔,又提高了數據傳輸的效率,系統總體結構如圖1所示。
系統採用 Browser/Server 結構,其優勢在於系統簡單、功能強大、擴展能力良好等[5]。B/S模式通過Internet進行通信,可以不受地域的限制。B/S開發模式實際上是分布式的C/S結構在Inernet/Intranet上的擴展,即把一個應用對象從功能結構上劃分為三部分:數據處理邏輯、業務處理邏輯和顯示邏輯。其中Web伺服器是顯示邏輯的核心,它將信息組織成超文本,通過超文本標記語言(HTML)和超文本傳輸協議(HTTP)實現與Browser端的交互;Client端的程序配合相關的應用伺服器實現業務處理邏輯;數據處理邏輯由資料庫伺服器的資料庫管理系統來完成,負責管理對資料庫的讀寫操作。各功能之間通過通用的編程介面(如開放數據互連ODBC等)進行連接。
將土地利用動態變化影像信息系統納入B/S結構的框架後,首先要解決的問題是通過網頁訪問後台資料庫信息。Browser端的應用程序都被分割為頁面的形式,用戶的交互操作是以提交表單等方式來實現的。ASP (Active Serve Page)是一個Web伺服器端的開發環境,屬於ActiveX技術中的Server端技術,在伺服器端解釋執行,執行結果產生動態生成的Web頁面並送到瀏覽器。ASP腳本集成於HTML中,容易生成,無需編譯或鏈接即可直接執行。在ASP腳本中可以方便地引用系統組件和ASP的內置組件,還能通過定製ActiveX伺服器組件來擴充功能。利用它可以產生和運行動態的、交互的、高性能的Web服務應用程序。
圖1 系統結構設計
2.2 資料庫的建立
系統設計採用技術成熟的 TCP/IP 網路通信標准,通過 Hyper Text Transfer Protocol (超文本傳輸協議)建立客戶端與伺服器通信。由於土地利用動態變化影像是大量目標資料文件不斷入庫更新的過程,採用SQL server 2000作為實現動態頁面的數據支持資料庫,這樣就可以生成豐富的、實時的、動態的網頁顯示到客戶端瀏覽器上。
對於傳統的文件格式,利用動態服務網頁(ASP)技術,再考慮到響應速度與系統狀況的平衡,採用以文件存儲與關系資料庫存儲相結合的數據存儲方法,利用 ActiveX DataObject (ADO)數據訪問組件,建立ASP頁面腳本應用程序與關系資料庫的聯系,實現輸入/輸出的快速響應,保證系統的穩定運行。
2.3 系統集成
遙感圖像與矢量數據是組成地理信息系統的兩大主要數據源,將兩者結合起來統一於WebGIS中是WebGIS發展的必然[6]。在解決主要相關技術的基礎上,以集成資料庫為核心,對土地資源管理信息系統進行了IIS和IWS無縫連接,研製分類瀏覽,建立書簽、資料評價、用戶管理、資料管理、資料上傳、資料搜索、發布通知等模塊。運用公鑰加密演算法,結合網路操作系統及SQL Server 2000資料庫的安全特性,對影像系統用戶進行許可權等級管理,確保系統的安全性,完成總體集成。
2.4 系統特點
2.4.1 影像傳輸速度快、佔用網路資源少
系統首次採用影像網路伺服器(IWS)技術,基於遠程窄帶網路實現了海量遙感影像信息的快速傳輸和實時漫遊、縮放及坐標顯示;實現IIS與IWS無縫結合,支持的文件類型和信息量不受限制,可以無限擴展;僅僅在伺服器端啟用IIS服務和IWS服務即可,充分利用客戶端系統資源,發揮分布式計算的優勢,伺服器端系統佔用資源少,一般應用無需設置專門的高檔伺服器;客戶端實現零安裝、免維護,所有操作都實現網路化,不受地域限制,易於實現相關信息共享,提高目標信息的利用效率;基於開放、成熟技術,系統安全、穩定、可靠,易於維護,易於擴展,適應性強,易於推廣。
2.4.2 對海量影像數據實現自動化增量動態歸類管理與發布
系統採用自動化增量動態歸類管理技術,解決了不斷擴展的影像信息的類別、層次邏輯關系管理問題,實現了類別的動態自動維護和目標影像的樹形結構查詢與發布。系統的資料庫採用內容動態自動分級的方法,以樹狀的形式邏輯顯示給用戶,滿足影像信息文件不斷增加的需求,並能自動無限擴充。用戶還可按照類別進行查找,逐級瀏覽。
3 系統功能實現
根據系統的目的和要求,整個土地利用動態變化影像信息系統包括數據採集、數據編輯、資料庫管理、數據處理、數據輸出5個部分,完成土地影像數據的管理、影像數據的處理、土地利用動態變化影像系統的維護以網上發布。系統功能如圖2。
圖2 系統功能模塊結構圖
ECW、JPEG2000格式的影像數據是不能直接在瀏覽器上顯示與操控的,從影像伺服器上傳過來的這類數據必須通過對它進行解壓縮、解編碼、解量化、小波反變化等一系列處理。為實現ECW、JPEG2000格式圖像文件跟瀏覽器的無縫結合,系統採用ActiveX插件技術,使用一個ECWP插件嵌入到WEB頁面中,當用戶需要訪問ECW、JPEG2000格式圖像文件時,瀏覽器就會下載該插件並自動安裝到本地計算機上,此插件支持ECWP協議,以此實現客戶端與伺服器端影像數據的漸進式傳輸,對客戶端影像的瀏覽和操縱是利用JavaScript腳本語言實現的。在本系統中,主要實現了對影像的放大、縮小、漫遊操作,以及經緯度值、圖幅范圍等地理信息顯示等。
3.1 土地利用變化影像數據的管理
土地影像數據的管理包括土地數據的採集、編輯等工作[7]。數據採集包括各種紙質土地資源圖件,如土地利用現狀圖、土地利用規劃圖等圖件的數字化輸入,遙感影像的解譯結果的輸入、野外實測數據的GPS輸入以及各種屬性數據的鍵盤輸入等。在土地數據輸入的過程中,要檢查數據的准確性和精確度,確保進入資料庫的數據的精度,同時注意空間數據和屬性數據的邏輯關系和拓撲一致性。通過對數據的編輯進行數據的添加、刪除、修改等工作,保證發布到網上Internet的土地資源數據是正確的。
3.2 土地利用變化影像數據的處理
土地資源數據的處理除了一般的放大、縮小、漫遊、查詢以外,還可根據用戶端的請求來完成特定的任務,其中包括圖像格式的轉換、圖面相關信息的增強、圖像比例尺的擬和、圖像的分層疊加、圖像的分層處理、圖元面積的量算、圖元數量的統計、土地屬性和空間屬性的更新等。圖3為實現JPEG2000格式壓縮和解壓的結構框圖:首先對源圖像數據進行離散小波變換,然後對變換後的小波系數進行量化,接著對量化後的數據熵編碼,最後形成輸出碼流。解碼器是編碼的逆過程,首先對碼流進行熵解碼,然後解量化和小波反變換,最後重建圖像數據。
圖3 JPEG2000/ECW 編碼器和解碼器結構框圖
3.3 土地利用變化影像數據的維護
土地數據維護包括土地數據代碼與字典維護,確保資料庫正常運行,隨時添加、刪除、修改、更新資料庫。用戶管理包括:可以添加、刪除、修改系統的用戶,設置用戶的許可權,合理和安全地控制數據訪問許可權。資料庫維護,包括數據的初始化、資料庫的備份、資料庫的恢復等功能。
空間數據表達趨向多比例尺、多尺度、動態多維和實時三維可視化[8]。Image Web Server作為土地資源管理信息系統的一種特殊應用領域,為土地資源信息的共享提供了開放的信息空間,為各級土地管理部門、政府機構以及全球用戶提供了豐富的土地信息。Internet用戶不需要購買軟體,就可以通過WWW瀏覽器訪問並利用應用系統的各種功能。一方面,IWS方便了各級土地管理部門的工作;另一方面,利用IWS技術可以實現跨地域大范圍的土地資源信息的獲取與管理,甚至可以建立大范圍的實時土地資源管理信息系統。
參考文獻
[1]黃福奎.論遙感技術在土地利用動態監測中的應用[J].中國土地科學,1998,12 (3):21~25
[2]陳靜,龔健雅,朱欣焰等.基於J2EE的分布式WebGIS [J].測繪通報,2004 (2):27~30
[3]李青元,張福浩,朱雪華等.Web GIS實現技術探討.中國圖形圖像學報,1998,3 (6):485~489
[4]閻君.地理信息共享與開放式地理信息系統技術研究.中國圖形圖像學報,1998,3 (2):140~145
[5]鄭人傑.軟體工程.北京:清華大學出版社[M],1995
[6]楊超偉,李琦,承繼成等.遙感影像的Web發布研究與實現[J].遙感學報,2000,4 (1):71~75
[7]成四海,吳相林.Web資料庫的設計與實現[J].華中理工大學學報,1999,27 (2):110~112
[8]李德仁.淺論21世紀遙感與GIS的發展[J].東北測繪,2002,25 (4):3~5
3. MATLAB編程:圖像垂直翻轉,水平翻轉,提取畫面的一部分,和圖像亮度調節
I=imread('5L.bmp');
figure,imshow(I)
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
R1= flipud(R); % 上下翻轉
G1=flipud(G);
B1= flipud(B);
I1(:,:,1)=R1;
I1(:,:,2)=G1;
I1(:,:,3)=B1;
figure,imshow(I1)
R2= fliplr(R); % 左右翻轉
G2= fliplr(G);
B2= fliplr(B);
I2(:,:,1)=R2;
I2(:,:,2)=G2;
I2(:,:,3)=B2;
figure,imshow(I2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I = imread('5L.bmp');
c = [222 272 300 270 221 194];
r = [21 21 75 121 121 75];
% 這里表示你選擇的多邊形的頂點坐標。本例表示的多邊形為一個六邊形,頂點坐標依次為:(222,21),(272,21),(300,75),(270,121),(221,121),(194,75)。你可以根據自的實際需要改變。
BW = roipoly(I,c,r); % 獲以一個感興趣區域
figure, imshow(I)
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
R1=immultiply(R,BW);
G1=immultiply(G,BW);
B1=immultiply(B,BW);
I1(:,:,1)=R1;
I1(:,:,2)=G1;
I1(:,:,3)=B1;
figure,imshow(I1) % 感興趣區域圖像
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
圖像增強的方法很多,常用的有immultiply(乘法函數增強圖像)、imadjust(通過直方圖變換調整對比度)、histeq(直方圖均衡化)等。
最簡單的的可以給圖像乘以一個常數。
I=imread('5L.bmp');
figure,imshow(I)
I1=uint8(I*1.5);
figure,imshow(I1)
imadjust和histeq你查下matlab的幫助。根據你的實際需要進行圖像處理。因為我不知道你的圖像是灰度還是彩色,需要什麼樣的效果。這里就不舉例了。
4. 安卓編程中 圖像的漸變顏色 加上遮罩後失真很嚴重,原本很平滑的漸變變成了一條一條的,求解決方法
你這圖是 9 patch的吧 ,.9的圖處理不好 拉伸後效果非常難看,全是條紋,不知道你想要什麼效果,如果是漸變的話 你用drawable 文件 處理,shape屬性
5. 什麼編程語言處理圖像好用
photoshop,當讓不是可視化版
當然,flash(swf)是最有用的,它顯然不僅可以製作圖片,還可以製作動畫
6. 請問哪位有VB圖像處理的代碼,謝謝……
Dim w As Long
Dim h As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim pic(2000, 2000, 2) As Byte
Private Sub waittime(delay As Single)
'延時函數
Dim starttime As Single
starttime = Timer
Do Until ((Timer - starttime) * 70) > delay
DoEvents
Loop
End Sub
Private Sub Command1_Click()
'打開文件(對)
Picture2.Cls
CDlg2.DialogTitle = "打開文件"
CDlg2.Filter = "Pictures(*.bmp)|*.bmp"
CDlg2.ShowOpen
End Sub
Private Sub Command10_Click()
'擴散(對)
n = 3
n1 = n * n
n2 = n / 2
For j = n2 To h - n2 - 1
For i = n2 To w - n2 - 1
xx = Rnd() * (n - 1) - n2
yy = Rnd() * (n - 1) - n2
r = pic(i + xx, j + yy, 0)
g = pic(i + xx, j + yy, 1)
b = pic(i + xx, j + yy, 2)
Picture1.PSet (i, j), RGB(r, g, b)
Next i
Next j
End Sub
Private Sub Command11_Click()
'上下對接(對)
Picture1.Cls
For j = 0 To h / 2
For i = 0 To w - 1
Picture1.PSet (i, j), RGB(pic(i, j, 0), pic(i, j, 1), pic(i, j, 2))
Picture1.PSet (i, h - j - 1), RGB(pic(i, h - j - 1, 0), pic(i, h - j - 1, 1), pic(i, h - j - 1, 2))
Next i
waittime (1)
Next j
Close #1
End Sub
Private Sub Command12_Click()
'左上到右下(對)
Picture1.Cls
Picture1.AutoRedraw = True
Picture1.PSet (0, 0), RGB(pic(0, 0, 0), pic(0, 0, 1), pic(0, 0, 2))
If w > h Then
n = w
Else
n = h
End If
For i = 1 To n - 1
For j = 0 To i
If j < w And i < h Then Picture1.PSet (j, i), RGB(pic(j, i, 0), pic(j, i, 1), pic(j, i, 2))
If j < h And i < w Then Picture1.PSet (i, j), RGB(pic(i, j, 0), pic(i, j, 1), pic(i, j, 2))
Next j
waittime (1)
Next i
Close #1
End Sub
Private Sub Command13_Click()
'中央到四周(對)
Picture1.Cls
xmid = Int(w / 2): ymid = Int(h / 2)
Max = Int((IIf(h < w, w, h) / 2)): Min = Int((IIf(h > w, w, h) / 2))
Picture1.PSet (xmid, ymid), RGB(pic(xmid, ymid, 0), pic(xmid, ymid, 1), pic(xmid, ymid, 2))
For k = 1 To Min
For i = xmid - k To xmid + k '顯示四周的水平像素
Picture1.PSet (i, ymid - k), RGB(pic(i, ymid - k, 0), pic(i, ymid - k, 1), pic(i, ymid - k, 2))
Picture1.PSet (i, ymid + k), RGB(pic(i, ymid + k, 0), pic(i, ymid + k, 1), pic(i, ymid + k, 2))
Next i
For j = ymid - k To ymid + k '顯示四周的垂直像素
Picture1.PSet (xmid - k, j), RGB(pic(xmid - k, j, 0), pic(xmid - k, j, 1), pic(xmid - k, j, 2))
Picture1.PSet (xmid + k, j), RGB(pic(xmid + k, j, 0), pic(xmid + k, j, 1), pic(xmid + k, j, 2))
Next j
waittime (1)
Next k
If h > w Then '顯示非正方形圖像的多餘高度的垂直像素
For k = Min To Max
For i = 0 To w - 1
Picture1.PSet (i, ymid - k), RGB(pic(i, ymid - k, 0), pic(i, ymid - k, 1), pic(i, ymid - k, 2))
Picture1.PSet (i, ymid + k), RGB(pic(i, ymid + k, 0), pic(i, ymid + k, 1), pic(i, ymid + k, 2))
Next i
waittime (1)
Next k
ElseIf h < w Then '顯示非正方形圖像的多餘寬度的垂直像素
For k = Min To Max
For j = 0 To h - 1
Picture1.PSet (xmid - k, j), RGB(pic(xmid - k, j, 0), pic(xmid - k, j, 1), pic(xmid - k, j, 2))
Picture1.PSet (xmid + k, j), RGB(pic(xmid + k, j, 0), pic(xmid + k, j, 1), pic(xmid + k, j, 2))
Next j
waittime (1)
Next k
End If
Close #1
End Sub
Private Sub Command14_Click()
'斜線式(對)
Picture1.Cls
For d = 0 To w + h
y = d
For x = 0 To d
If x < w And y < h Then
Picture1.PSet (x, y), RGB(pic(x, y, 0), pic(x, y, 1), pic(x, y, 2))
End If
y = y - 1
Next x
waittime (1)
Next d
Close #1
End Sub
Private Sub Command15_Click()
'漸顯式(對)
Picture1.Cls
For j = 0 To h - 1 Step 2
For i = 0 To w - 1 Step 2
Picture1.PSet (i, j), RGB(pic(i, j, 0), pic(i, j, 1), pic(i, j, 2))
Next i
Next j
waittime (1)
For j = 1 To h - 1 Step 2
For i = 1 To w - 1 Step 2
Picture1.PSet (i, j), RGB(pic(i, j, 0), pic(i, j, 1), pic(i, j, 2))
Next i
Next j
waittime (1)
For j = 0 To h - 1 Step 2
For i = 1 To w - 1 Step 2
Picture1.PSet (i, j), RGB(pic(i, j, 0), pic(i, j, 1), pic(i, j, 2))
Next i
Next j
waittime (1)
For j = 1 To h - 1 Step 2
For i = 0 To w - 1 Step 2
Picture1.PSet (i, j), RGB(pic(i, j, 0), pic(i, j, 1), pic(i, j, 2))
Next i
Next j
Close #1
End Sub
Private Sub Command16_Click()
'上下移動
Picture1.Cls
Picture1.AutoRedraw = False
For i = 0 To h / 2
BitBlt Picture1.hDC, 0, 0, w, i + 1, Picture2.hDC, 0, h / 2 - i, &HCC0020
BitBlt Picture1.hDC, 0, h - i, w, i, Picture2.hDC, 0, h / 2, &HCC0020
waittime (2)
Next i
End Sub
Private Sub Command17_Click()
'圖像交叉飛入
Picture1.Cls
Picture1.AutoRedraw = False
For i = 0 To w - 1
BitBlt Picture1.hDC, 0, 0, i, h / 4, Picture2.hDC, w - i - 1, 0, &HCC0020
BitBlt Picture1.hDC, w - i - 1, h / 4 - 1, i, h / 4, Picture2.hDC, 0, h / 4 - 1, &HCC0020
BitBlt Picture1.hDC, 0, h / 2 - 1, i, h / 4, Picture2.hDC, w - i - 1, h / 2 - 1, &HCC0020
BitBlt Picture1.hDC, w - i - 1, 3 * h / 4 - 1, i, h / 4, Picture2.hDC, 0, 3 * h / 4 - 1, &HCC0020
waittime (1)
Next i
End Sub
Private Sub Command18_Click()
'圖像四面八方飛入
Picture1.Cls
Picture1.AutoRedraw = False
If w > h Then
n = w / h
For i = 0 To h / 3 + 1
BitBlt Picture1.hDC, 0, 0, n * i, i, Picture2.hDC, w / 3 - n * i, h / 3 - i, &HCC0020
BitBlt Picture1.hDC, w / 3, 0, w / 3, i, Picture2.hDC, w / 3, h / 3 - i, &HCC0020
BitBlt Picture1.hDC, w - n * i, 0, n * i, i, Picture2.hDC, 2 * w / 3, h / 3 - i, &HCC0020
BitBlt Picture1.hDC, 0, h / 3, n * i, h / 3, Picture2.hDC, w / 3 - n * i, h / 3, &HCC0020
BitBlt Picture1.hDC, w - n * i, h / 3, n * i, h / 3, Picture2.hDC, 2 * w / 3, h / 3, &HCC0020
BitBlt Picture1.hDC, 0, h - i, n * i, i, Picture2.hDC, w / 3 - n * i, 2 * h / 3, &HCC0020
BitBlt Picture1.hDC, w / 3, h - i, w / 3, i, Picture2.hDC, w / 3, 2 * h / 3, &HCC0020
BitBlt Picture1.hDC, w - n * i, h - i, n * i, i, Picture2.hDC, 2 * w / 3, 2 * h / 3, &HCC0020
BitBlt Picture1.hDC, w / 2 - n * i / 2, h / 2 - i / 2, n * i, i, Picture2.hDC, w / 2 - n * i / 2, h / 2 - i / 2, &HCC0020
waittime (3)
Next i
Else
n = h / w
For i = 0 To w / 3 + 1
BitBlt Picture1.hDC, 0, 0, i, n * i, Picture2.hDC, w / 3 - i, h / 3 - n * i, &HCC0020
BitBlt Picture1.hDC, w / 3, 0, w / 3, n * i, Picture2.hDC, w / 3, h / 3 - n * i, &HCC0020
BitBlt Picture1.hDC, w - i, 0, i, n * i, Picture2.hDC, 2 * w / 3, h / 3 - n * i, &HCC0020
BitBlt Picture1.hDC, 0, h / 3, i, h / 3, Picture2.hDC, w / 3 - i, h / 3, &HCC0020
BitBlt Picture1.hDC, w - i, h / 3, i, h / 3, Picture2.hDC, 2 * w / 3, h / 3, &HCC0020
BitBlt Picture1.hDC, 0, h - n * i, i, n * i, Picture2.hDC, w / 3 - i, 2 * h / 3, &HCC0020
BitBlt Picture1.hDC, w / 3, h - n * i, w / 3, n * i, Picture2.hDC, w / 3, 2 * h / 3, &HCC0020
BitBlt Picture1.hDC, w - i, h - n * i, i, n * i, Picture2.hDC, 2 * w / 3, 2 * h / 3, &HCC0020
BitBlt Picture1.hDC, w / 2 - i / 2, h / 2 - n * i / 2, i, n * i, Picture2.hDC, w / 2 - i / 2, h / 2 - n * i / 2, &HCC0020
waittime (3)
Next i
End If
End Sub
Private Sub Command19_Click()
'圖像以門簾效果進入
Picture1.Cls
Picture1.AutoRedraw = False
For i = 0 To w / 10 + 1
For j = 0 To 10
BitBlt Picture1.hDC, j * w / 10, 0, i, h, Picture2.hDC, j * w / 10, 0, &HCC0020
Next j
waittime (5)
Next i
End Sub
Private Sub Command2_Click()
'原圖像(對)
Picture2.Cls
Open CDlg2.FileName For Binary As #1
Get #1, 19, w
Get #1, 23, h
Seek #1, 55
For j = h - 1 To 0 Step -1
For i = 0 To w - 1
For k = 2 To 0 Step -1
Get #1, , pic(i, j, k)
Next k
Next i
Next j
For j = 0 To h - 1
For i = 0 To w - 1
Picture2.PSet (i, j), RGB(pic(i, j, 0), pic(i, j, 1), pic(i, j, 2))
Next i
Next j
Close #1
End Sub
Private Sub Command20_Click()
'圖像以工字效果進入
Picture1.Cls
Picture1.AutoRedraw = False
For i = 0 To w / 3 + w / 6
BitBlt Picture1.hDC, w / 3 - i, h / 3 - i, w / 3 + 2 * i, i, Picture2.hDC, w / 3 - i, h / 3 - i, &HCC0020
BitBlt Picture1.hDC, w / 3 - i, 2 * h / 3, w / 3 + 2 * i, i, Picture2.hDC, w / 3 - i, 2 * h / 3, &HCC0020
BitBlt Picture1.hDC, w / 2 - i, h / 3, 2 * i, h / 3, Picture2.hDC, w / 2 - i, h / 3, &HCC0020
waittime (1)
Next i
End Sub
Private Sub Command3_Click()
'逆反(對)
For j = 0 To h - 1
For i = 0 To w - 1
r = 255 - pic(i, j, 0)
g = 255 - pic(i, j, 1)
b = 255 - pic(i, j, 2)
pic(i, j, 0) = r: pic(i, j, 1) = g: pic(i, j, 2) = b
Picture1.PSet (i, j), RGB(r, g, b)
Next i
Next j
End Sub
Private Sub Command4_Click()
'平滑(不能保存)
n = 3: n1 = n * n: n2 = n / 2
For j = n2 To h - n2–1
For i = n2 To w - n2 - 1
r = 0: g = 0: b = 0
For k1 = -n2 To n2
For k2 = -n2 To n2
r = r + pic(i + k1, j + k2, 0)
g = g + pic(i + k1, j + k2, 1)
b = b + pic(i + k1, j + k2, 2)
Next k2
Next k1
r = r / n1: g = g / n1: b = b / n1
Picture1.PSet (i, j), RGB(r, g, b)
Next i
Next j
End Sub
Private Sub Command5_Click()
'霓虹(對)
For j = 0 To h - 1
For i = 0 To w - 1
x = pic(i, j, 0): y = pic(i + 1, j, 0): z = pic(i, j + 1, 0)
X1 = pic(i, j, 1): Y1 = pic(i + 1, j, 1): z1 = pic(i, j + 1, 0)
X2 = pic(i, j, 2): Y2 = pic(i + 1, j, 2): z2 = pic(i, j + 1, 0)
m = (x - y) ^ 2 + (x - z) ^ 2
o = (X1 - Y1) ^ 2 + (X1 - z1) ^ 2
P = (X2 - Y2) ^ 2 + (X2 - z2) ^ 2
r = Sqr(m)
g = Sqr(o)
b = Sqr(P)
If r > 255 Then r = 255
If g > 255 Then g = 255
If b > 255 Then b = 255
pic(i, j, 0) = r: pic(i, j, 1) = g: pic(i, j, 2) = b
Picture1.PSet (i, j), RGB(r, g, b)
Next i
Next j
End Sub
Private Sub Command6_Click()
'邊緣銳化(對)
For j = 1 To h - 1
For i = 1 To w - 1
x = pic(i, j, 0): y = pic(i - 1, j - 1, 0)
X1 = pic(i, j, 1): Y1 = pic(i - 1, j - 1, 1)
X2 = pic(i, j, 2): Y2 = pic(i - 1, j - 1, 2)
r = x - Abs(x - y) / 2
g = X1 - Abs(X1 - Y1) / 2
b = X2 - Abs(X2 - Y2) / 2
If r < 0 Then r = 0
If g < 0 Then g = 0
If b < 0 Then b = 0
Picture1.PSet (i, j), RGB(r, g, b)
Next i
Next j
End Sub
Private Sub Command7_Click()
'浮雕(對)
For j = 0 To h - 1
For i = 1 To w - 1
x = pic(i, j, 0): y = pic(i - 1, j, 0)
X1 = pic(i, j, 1): Y1 = pic(i - 1, j, 1)
X2 = pic(i, j, 2): Y2 = pic(i - 1, j, 2)
r = x - y + 128
g = X1 - Y1 + 128
b = X2 - Y2 + 128
If r <= 0 Then r = 1
If g < 0 Then g = 1
If b < 0 Then b = 1
If r > 255 Then r = 250
If g > 255 Then g = 250
If b > 255 Then b = 250
Picture1.PSet (i, j), RGB(r, g, b)
Next i
Next j
End Sub
Private Sub Command8_Click()
'鑲嵌(對)
n = 10: n1 = n * n: n2 = n / 2
For j = n2 To h - n2 - 1 Step n
For i = n2 To w - n2 - 1 Step n
r = 0: g = 0: b = 0
For k1 = -n2 To n2
For k2 = -n2 To n2
r = r + pic(i + k1, j + k2, 0)
g = g + pic(i - k1, j + k2, 1)
b = b + pic(i + k1, j + k2, 2)
Next k2
Next k1
r = r / n1: g = g / n1: b = b / n1
For k1 = -n2 To n2
For k2 = -n2 To n2
Picture1.PSet (i + k1, j + k2), RGB(r, g, b)
Next k2
Next k1
Next i
Next j
End Sub
Private Sub Command9_Click()
'曝光(對)
For j = 0 To h - 1
For i = 0 To w - 1
r = pic(i, j, 0): g = pic(i, j, 1): b = pic(i, j, 2)
If r < 128 Then r = 255 - r
If g < 128 Then g = 255 - g
If b < 128 Then b = 255 - b
pic(i, j, 0) = r: pic(i, j, 1) = g: pic(i, j, 2) = b
Picture1.PSet (i, j), RGB(r, g, b)
Next i
Next j
End Sub
Private Sub Picture2_Click()
End Sub
7. 請問 衛星影像存檔數據和編程數據是指什麼意思求大神介紹
國內的衛星影像數據平台北京攬宇方圓有詳細的解釋存檔數據:是指先前衛星已經拍攝過的區域,已存檔在衛星公司的資料庫中,是現成品。該種圖像的購買價格相對較低,訂購時間較快。但是訂購前需要對既定需求區域做出確認,即確認所需區域是否有衛星影像數據存檔、衛星影像存檔數據的拍攝時間、拍攝質量(包含了雲量、拍攝傾角等因素)等。
編程數據:是指編程制定衛星對需求區域拍攝最新的影像,可以讓用戶得到需求區域最新的影像。但是編程影像的拍攝周期通常較長,訂購初期需要先向衛星公司申請拍攝區域的拍攝周期,然後由衛星公司反饋計劃拍攝周期。在這個拍攝周期中,並不能夠保證拍攝成功,這與所拍攝地的天氣情況、拍攝數據的優先順序權重以及需求數據范圍有關。
8. 怎麼用MATLAB掌握圖像平移、圖像旋轉和圖像縮放的基本原理與實現方法
%圖像平移(1)
F=imread('p2.bmp');
se = translate(strel(1), [0 20]);
%參數[0 20]可以修改,修改後平移距離對應改變
J = imdilate(F,se);
figure;
imshow(J,[]);title('右移後圖形');
%圖像平移(2)
function outImage=immove(inImage,Tx,Ty)
[m, n] = size(inImage);
Tx=fix(Tx);
Ty=fix(Ty);
%move x
if (Tx<0)
inImage=imcrop(inImage,[abs(Tx),1,m-abs(Tx),n]);
[m, n] = size(inImage);
Tx=0;
end
%move y
if (Ty<0)
inImage=imcrop(inImage,[1,abs(Ty),m,n-abs(Ty)]);
[m, n] = size(inImage);
Ty=0;
end
outImage = zeros(m+Ty, n+Tx);
outImage(1+Ty:m+Ty,1+Tx:n+Tx) = inImage;
%圖像旋轉
%X,Y為其行列數
Image=imread('02.jpg');
Image=rgb2gray(Image);
angle=30;
%角度任意的一個數 表示30度
pai=3.14;
Angle=pai*angle/180;
%轉換一下角度的表示方法。
[X,Y]=size(Image);
%原圖顯示
subplot(2,1,1);
imshow(Image);
title('原圖像');
%計算四個角點的新坐標,確定旋轉後的顯示區域
LeftTop(1,1)=-(Y-1)*sin(Angle);
LeftTop(1,2)=(Y-1)*cos(Angle);
LeftBottom(1,1)=0;
LeftBottom(1,2)=0;
RightTop(1,1)=(X-1)*cos(Angle)-(Y-1)*sin(Angle);
RightTop(1,2)=(X-1)*sin(Angle)+(Y-1)*cos(Angle);
RightBottom(1,1)=(X-1)*cos(Angle);
RightBottom(1,2)=(X-1)*sin(Angle);
%計算顯示區域的行列數
Xnew=max([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])-min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)]);
Ynew=max([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)])-min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]);
% 分配新顯示區域矩陣
ImageNew=zeros(round(Xnew),round(Ynew))+255;
%計算原圖像各像素的新坐標
for indexX=0:(X-1)
for indexY=0:(Y-1)
ImageNew(round(indexX*cos(Angle)-indexY*sin(Angle))+round(abs(min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])))+1,1+round(indexX*sin(Angle)+indexY*cos(Angle))+round(abs(min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]))))=Image(indexX+1,indexY+1);
end
end
%顯示
subplot(2,1,2);
imshow((ImageNew)/255)
promp=['旋轉角度為:' int2str(angle) '的圖像']
title(promp);
%圖像縮放
function y=resize(a,mul,type)
%****************************************************
%a:輸入圖像灰度值
%mul:縮放倍數
%type:1表示最鄰近法,2表示雙極性插值法
%畫出縮放後圖像並返回其灰度值
%****************************************************
[m,n]=size(a);
m1=m*mul;n1=n*mul;
%****************************************************
if type==1
for i=1:m1
for j=1:n1;
b(i,j)=a(round(i/mul),round(j/mul));
end
end
elseif type==2
for i=1:m1-1
for j=1:n1-1;
u0=i/mul;v0=j/mul;
u=round(u0);v=round(v0);
s=u0-u;t=v0-v;
b(i,j)=(a(u+1,v)-a(u,v))*s+(a(u,v+1)-a(u,v))*t+(a(u+1,v+1)+a(u,v)-a(u,v+1)-a(u+1,v))*s*t+a(u,v);
end
end
end
%*****************************************************
b=uint8(b);
imshow(b);
title('處理後圖像');
y=b;
9. 圖像處理要學什麼
圖像編碼技術、圖像分割等。