用matlab提取圖像的骨架
參看邊緣檢測技術(shù)、閉合邊界技術(shù)和輪廓提取方面的資料
用canny算子檢測得到的邊界圖見附圖,還需要進(jìn)行邊界的修補(bǔ)然后提取輪廓
根據(jù)你的要求再自己加些東西進(jìn)去吧
clear;
cla
I=imread('骨架.jpg');
I=rgb2gray(I);
J=edge(I,'canny',graythresh(I));
subplot(121),imshow(I),title('原圖')
subplot(122),imshow(J),title('邊界圖')
Matlab中如何讀出寫入圖像文件以及對圖像的簡單處理
MATLAB圖像處理工具箱支持四種基本圖像類型:索引圖像、灰度圖像、二進(jìn)制圖像和RGB圖像。MATLAB直接從圖像文件中讀取的圖像為RGB圖像。它存儲在三維數(shù)組中。這個(gè)三維數(shù)組有三個(gè)面,依次對應(yīng)于紅(Red)、綠(Green)、藍(lán)(Blue)三種顏色,而面中的數(shù)據(jù)則分別是這三種顏色的強(qiáng)度值,面中的元素對應(yīng)于圖像中的像素點(diǎn)。設(shè)所得矩陣為X三維矩陣(256,256,3),X(:,:,1)代表紅顏色的2維矩陣 X(:,:,2)代表綠顏色的2維矩陣, X(:,:,3)代表蘭顏色的2維矩陣。[X,map]=imread('34.bmp');r=double(X(:,:,1)); %r是256 x256的紅色信息矩陣g=double(X(:,:,2)); %g是256 x256的綠色信息矩陣b=double(X(:,:,3)); %b是256 x 256的蘭色信息矩陣
索引圖像數(shù)據(jù)包括圖像矩陣X與顏色圖數(shù)組map,其中顏色圖map是按圖像中顏色值進(jìn)行排序后的數(shù)組。對于每個(gè)像素,圖像矩陣X包含一個(gè)值,這個(gè)值就是顏色圖數(shù)組map中的索引。顏色圖map為m×3雙精度矩陣,各行分別指定紅、綠、藍(lán)(R、G、B)單色值,map=[RGB],R、G、B為值域?yàn)閇0,1]的實(shí)數(shù)值,m為索引圖像包含的像素個(gè)數(shù)。
對于相同的數(shù)據(jù),采用uint8格式比雙精度格式節(jié)省內(nèi)存空間,從而更經(jīng)濟(jì)。在MATLAB中
如果索引圖像的顏色圖小于256行,則它的圖像矩陣以uint8格式存儲,否則以雙精度格式存儲。
一:imread:從圖像文件夾中讀取圖像。
A = imread(FILENAME,FMT)讀取圖像到A,如果文件是包含一灰度圖像,A是一二維矩陣,如果文件是包含一真彩色圖像(RGB),A是一三維矩陣(M-by-N-by-3)。FILENAME:圖像文件名;FMT:圖像文件格式;
文件必須在當(dāng)前目錄下,或在Matlab的一路徑上。如果imread不能夠找到一名稱為FILENAME的文件,那么它將找一名為FILENAME.FMT的文件
[X,MAP] = imread(FILENAME,FMT)把圖像FILENAME讀入與它相關(guān)的圖像色彩信息寫入MAP,圖像色彩信息值在范圍[0,1]中自動地重新調(diào)整.
[...] = imread(FILENAME)這種方式是試圖得到文件的格式從文件所包含的信息。
[...] =imread(URL,...)從一Internet URL上讀圖像 URL必須包含協(xié)議(即: "http://").
1.2數(shù)據(jù)類型:
TIFF的特殊語法:
[...] =imread(...,IDX) 從很多圖像TIFF文件中讀一個(gè)圖像;IDX是一個(gè)整數(shù)值,它顯示了所讀圖像在文件中的順序,例如:如果IDX是 3, imread將讀文件中的第三個(gè)圖像。 如果省略了這個(gè)變量, imread將讀文件中的第一個(gè)圖像.
IMREAD支持的圖像文件格式:JPEGTIFF GIF BMP PNG HDFPCXXWDICOCURRAS PBMPGMPPM
相關(guān)信息也可在Matlab中查看: imfinfo, imwrite, imformats, fread,
二:imwrite輸出圖像
imwrite(A,FILENAME,FMT) 把圖像 A 寫入圖像文件 FILENAME.
imwrite(X,MAP,FILENAME,FMT) 把 X和它的相關(guān)色彩信息MAP寫入FILENAME.
imwrite(...,FILENAME)把圖像寫入圖像文件FILENAME,并推測可能的格式用來做filename的擴(kuò)展名。擴(kuò)展名必須是FMT中一合法名.
imwrite(...,PARAM1,VAL1,PARAM2,VAL2,...)不同的參數(shù)控制輸出文件的各種不同特征。參數(shù)要是當(dāng)前所支持的HDF,JPEG, TIFF, PNG, PBM, PGM, 和PPM文件
三:image 顯示圖像.image(C) 把矩陣 C 轉(zhuǎn)成一圖像. C 可以是一MxN 或MxNx3維的矩陣,且可以是包含 double, uint8,或 uint16數(shù)據(jù).image是用來顯示附標(biāo)圖像,即顯示的圖像上有x,y坐標(biāo)軸的顯示,可以看到圖像的像素大小。但可以加上axisoff命令即可把坐標(biāo)去掉。
imshow只是顯示圖像。用colormap來定義圖像顯示用的顏色查找表,比如用colormap(pink),可以把黑白圖像顯示成帶粉紅色的圖像。
圖像像素矩陣的數(shù)據(jù)類型:(1)顯示真彩色圖像像素三維矩陣X,如果是uint8類型,要求矩陣的數(shù)據(jù)范圍為0-255,(2)如果是double型,則其數(shù)據(jù)范圍為0-1,要不就會出錯(cuò)或者出現(xiàn)空白頁。
類型轉(zhuǎn)換:(1)如果你原來的數(shù)值是uint8,在運(yùn)算中轉(zhuǎn)換為double后,實(shí)際要顯示的數(shù)值沒有改變的話,只要用uint8(X)就可轉(zhuǎn)換為uint8型,如果不想轉(zhuǎn)換頻繁,也可在顯示時(shí)用X/255來轉(zhuǎn)換為符合0-1double類型范圍要求的數(shù)值顯示。(2)如果顯示索引圖像(二維矩陣),如果索引圖像像素?cái)?shù)值是double型,則它的取值范圍為1-length(colormap),數(shù)值起點(diǎn)為1,則矩陣中數(shù)值為1的對應(yīng)colormap中第一行數(shù)據(jù),如果索引圖像像素?cái)?shù)值是uint8,則取值范圍為0-255,數(shù)值起點(diǎn)為0,則矩陣中數(shù)值為0的對應(yīng)colormap中第一行數(shù)據(jù),所以索引圖像這兩個(gè)數(shù)據(jù)類型之間的轉(zhuǎn)換,要考慮到+1或-1。直接用uint8或double轉(zhuǎn)換則會查找移位,產(chǎn)生失真情況。uint16數(shù)據(jù)類型與uint8類似,取值范圍為0-65536。
四:其它常用圖像操作:
圖像顯示于屏幕有imshow( ), image( )函數(shù);
圖像進(jìn)行裁剪imcrop( );
圖像的插值縮放imresize( )函數(shù)實(shí)現(xiàn);
旋轉(zhuǎn)用 imrotate( )實(shí)現(xiàn)。
五:具體的操作
下面通過運(yùn)用圖像處理工具箱中的有關(guān)函數(shù)對下圖(nice.bmp)進(jìn)行一些變換。見后面的transfer.m內(nèi)容!
變換前圖片:(nice.bmp)
變換后所得圖片:newpic.bmp
例,在電腦Fpicture下有一彩色圖像文件nice.bmp,則可由下述語句讀取:
下面是對圖像 nice.bmp以y軸為對稱軸所做的一個(gè)對稱變換。
% Transfer1.m
clear all
figure
[x,map]=imread('F:picturenice.bmp');% 所得x為一375x420x3的矩陣
[w1,w2,w3]=size(x); % 375 X 420
w22=floor(w2/2);
image(x); %顯示出圖像
title('HELLO! @This is the first pose of me')%則顯示出圖像nice.bmp
axis off;%去掉圖像中的坐標(biāo)
colormap(map);%colormap(),圖像查找表函數(shù)。函數(shù)結(jié)構(gòu)為colormap(map),設(shè)置當(dāng)前的圖像查找表到map。
imwrite(x,map,'nice.bmp')
for i=1:w1
for j=1:w22%圖像關(guān)于y軸對折
t=x(i,j);
x(i,j)=x(i,w2-j+1);
x(i,w2-j+1)=t;
end
end
figure
image(x);
axis off
title('HELLO!!@@ Can you find any difference of my two picture! ')colormap(map);
imwrite(x,map,'newpic.bmp') %把x寫到nepic2.bmpz中去
% Transfer1.m文件中包含了最基本也是最常用的對讀像處理的命令。
在對圖像處理的整個(gè)過程中,實(shí)質(zhì)上是對[x,map]=imread(‘figure')函數(shù)中所得x矩陣的各種變換!
互補(bǔ)色簡單計(jì)算法
作者:趙鵬 時(shí)間:2003-08-30 文檔類型:原創(chuàng) 來自: |
這個(gè)是色相色譜 要計(jì)算某種顏色的互補(bǔ)色 比如純黃色:r255 g255 b0 注: Photoshop默認(rèn)使用8位通道模式 因此更高的通道級別就肉眼看來沒有區(qū)別 |
例如:
I=imread('D:MATLABR2006btoolboximagesimdemoscameraman.tif');%文件的路徑在每個(gè)電腦上不同哦
x1=256;y1=256;k=y1/x1;
[m,n]=size(I);
J=double(I);
for i =1:m
for j=1:n
x=J(i,j);
y(i,j)=0;
if(x>=0)&(x<=x1)
y(i,j)=y1-k*x;
else
y(i,j)=0;
end
end
end
subplot(1,2,1),imshow(I);title('原始圖像');
subplot(1,2,2),imshow(mat2gray(y));title('求反后圖像');
MATLAB圖像處理工具箱支持四種基本圖像類型:索引圖像、灰度圖像、二進(jìn)制圖像和RGB圖像。MATLAB直接從圖像文件中讀取的圖像為RGB圖像。它存儲在三維數(shù)組中。這個(gè)三維數(shù)組有三個(gè)面,依次對應(yīng)于紅(Red)、綠(Green)、藍(lán)(Blue)三種顏色,而面中的數(shù)據(jù)則分別是這三種顏色的強(qiáng)度值,面中的元素對應(yīng)于圖像中的像素點(diǎn)。設(shè)所得矩陣為X三維矩陣(256,256,3),X(:,:,1)代表紅顏色的2維矩陣 X(:,:,2)代表綠顏色的2維矩陣, X(:,:,3)代表蘭顏色的2維矩陣。[X,map]=imread('34.bmp');r=double(X(:,:,1)); %r是256 x256的紅色信息矩陣g=double(X(:,:,2)); %g是256 x256的綠色信息矩陣b=double(X(:,:,3)); %b是256 x 256的蘭色信息矩陣 |
作者:趙鵬 時(shí)間: 2003-08-30 文檔類型:原創(chuàng) 來自: |
這個(gè)是色相色譜 要計(jì)算某種顏色的互補(bǔ)色 比如純黃色:r255 g255 b0 注: Photoshop默認(rèn)使用8位通道模式 因此更高的通道級別就肉眼看來沒有區(qū)別 |
例如:
I=imread('D:MATLABR2006btoolboximagesimdemoscameraman.tif');%文件的路徑在每個(gè)電腦上不同哦
x1=256;y1=256;k=y1/x1;
[m,n]=size(I);
J=double(I);
for i =1:m
for j=1:n
x=J(i,j);
y(i,j)=0;
if(x>=0)&(x<=x1)
y(i,j)=y1-k*x;
else
y(i,j)=0;
end
end
end
subplot(1,2,1),imshow(I);title('原始圖像');
subplot(1,2,2),imshow(mat2gray(y));title('求反后圖像');
愛華網(wǎng)![matlab圖像處理的幾個(gè)例子[轉(zhuǎn)載] ode45 matlab 例子](http://img.aihuau.com/images/02111102/02044041t01981e1956b864aad3.png)



