"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)

ъюЄюЁ√х ттюф Єё  ё ъыртшрЄєЁ√ т ъюьрэфэюь юъэх, шыш т√яюыэшЄ№ ъюьрэфє ьхэ■ Edit I CopyFigure. ┬ фюъєьхэЄ ЁхфръЄюЁр Microsoft Word шчюсЁрцхэшх тёЄрты -
78 ├ыртр 2. ┬шчєрышчрЎш  Ёхчєы№ЄрЄют т√ўшёыхэшщ
хЄё  ъюьрэфющ хую уыртэюую ьхэ■ Edit | Paste. ─рыхх тьхёЄх ёю тёхь фюъєьхэЄюь ¤Єю шчюсЁрцхэшх ьюцэю сєфхЄ ЁрёяхўрЄрЄ№ эр яЁшэЄхЁх.
╬ўхэ№ трцэюх чрьхўрэшх: яхЁхф ёюїЁрэхэшхь шчюсЁрцхэш  т Їрщых шыш т сєЇхЁх юсьхэр Windows юёє∙хёЄтшЄх т Ёрьърї яръхЄр MATLAB эхюсїюфшьюх ьрё°ЄрсшЁютрэшх, Єю хёЄ№ фюсхщЄхё№ эхюсїюфшьюую Їшчшўхёъюую ЁрчьхЁр ърЁЄшэъш. ╧юёых ёюїЁрэхэш  шчюсЁрцхэш  т ЇюЁьрЄрї ЁрёЄЁютющ уЁрЇшъш фры№эхщ°хх ьрё°ЄрсшЁютрэшх юёє∙хёЄты хЄё  ё эхяЁшхьыхь√ьш шёърцхэш ьш.
╚Єръ, ь√ єцх эрєўшышё№ ёюїЁрэ Є№ ЁрёЄЁют√х шчюсЁрцхэш , ёююЄтхЄёЄтє■∙шх уЁрЇшўхёъшь юъэрь ёшёЄхь√ MATLAB, т сєЇхЁх юсьхэр Windows ш т Їрщырї эхъюЄюЁ√ї уЁрЇшўхёъшї ЇюЁьрЄют. ╤є∙хёЄтєхЄ х∙х ЄЁхЄшщ ёяюёюс лчряхўрЄыхЄ№ эр ярь Є№╗ ърЁЄшэъє шч уЁрЇшўхёъюую юъэр. ─ы  ¤Єюую фюёЄрЄюўэю т√чтрЄ№ ЇєэъЎш■ capture, ъюЄюЁр  яючтюышЄ ёюїЁрэшЄ№ шэЇюЁьрЎш■ ю ЁрёЄЁютющ ърЁЄшэъх шч уЁрЇшўхёъюую юъэр ёшёЄхь√ MATLAB т фтєї ўшёыют√ї ьрёёштрї:
[ X, ЄрЁ ] = capture( 1 );
┬їюфэ√ь ярЁрьхЄЁюь фы  ЇєэъЎшш capture  ты хЄё  эюьхЁ уЁрЇшўхёъюую юъэр. ┬√їюфэ√ьш чэрўхэш ьш фы  ЇєэъЎшш capture  ты ■Єё  ьрЄЁшЎр X, ёююЄтхЄёЄтє■∙р  ьрЄЁшЎх яшъёхыют шчюсЁрцхэш  (т эхщ ёЄюы№ъю цх Ё фют, ёъюы№ъю яшъёхыют√ї ёЄЁюъ т шчюсЁрцхэшш, ш ёЄюы№ъю цх ёЄюысЎют, - ёъюы№ъю Ёхры№э√ї яшъёхыют√ї ёЄюысЎют), ш ьрЄЁшЎр ЎтхЄют ЄрЁ (ЄЁш ёЄюысЎр т ЇюЁьрЄх RGB), шёяюы№чютрээр  фы  яюёЄЁюхэш  шчюсЁрцхэш . ╧Ёш ¤Єюь ърцф√щ ¤ыхьхэЄ ьрЄЁшЎ√ X Ёртхэ эюьхЁє юфэющ шч ёЄЁюъ ьрЄЁшЎ√ ЄрЁ. ╩рцф√щ ¤ыхьхэЄ ьрЄЁшЎ√ ЎтхЄют ЄрЁ яЁхфёЄрты хЄ ёюсющ яюыюцшЄхы№эюх ўшёыю юЄ 0 фю 1 - юэю їрЁръЄхЁшчєхЄ шэЄхэёштэюёЄ№ ёююЄтхЄёЄтє■∙хщ ёюёЄрты ■∙хщ ЎтхЄр (ъЁрёэющ, чхыхэющ шыш ёшэхщ). ╚Єръ, ¤Єшї фтєї ьрЄЁшЎ фюёЄрЄюўэю фы  чряюьшэрэш  шэЇюЁьрЎшш ю ЎтхЄрї тёхї яшъёхыют т ЁрёЄЁютюь шчюсЁрцхэшш.
╧Ёхцфх ўхь яЁюфюыцшЄ№ фхЄры№эюх шчєўхэшх ¤Єшї ьрЄЁшЎ, ъЁрЄъю яхЁхўшёышь юёэютэ√х трЁшрэЄ√ шї яЁръЄшўхёъюую шёяюы№чютрэш . ┬ю-яхЁт√ї, Ёрёяюырур  ¤Єшьш ьрЄЁшЎрьш, ьюцэю чряшёрЄ№ шчюсЁрцхэшх т JPEG-Їрщы√, єфюсэ√х фы  шёяюы№чютрэш  т ёЁхфх Internet. ▌Єю фхырхЄё  т√чютюь ЇєэъЎшш imwrite:
imwrite( X, map, 'MyOwnName.jpg' );
╟фхё№ ёючфрхЄё  ёцрЄ√щ уЁрЇшўхёъшщ Їрщы MyOwnName.jpg, ъюЄюЁ√щ єфюсхэ фы  яхЁхфрўш яю ёхЄш Internet ш яЁхфэрчэрўхэ фы  яЁюёьюЄЁр т ёЁхфх сЁрєчхЁют Єшяр Microsoft Internet Explorer.
┬ю-тЄюЁ√ї, Ёрёяюырур  ьрЄЁшЎрьш X ш ЄрЁ, ьюцэю ышсю ёЁрчє цх тюёёЄрэютшЄ№ шёїюфэюх шчюсЁрцхэшх т Ёрьърї уЁрЇшўхёъюую юъэр ёшёЄхь√ MATLAB, яЁшьхэшт ёыхфє■∙шщ ъюф:
colormap( map ); image( X );
ышсю, яЁхфтрЁшЄхы№эю юсЁрсюЄрт шёїюфэюх шчюсЁрцхэшх (яЁюшчтхф  т√ўшёыхэш  эрф ¤ыхьхэЄрьш яюыєўхээ√ї ЇєэъЎшхщ capture ьрЄЁшЎ), т√тхёЄш т уЁрЇшўхёъюх юъэю ёшёЄхь√ MATLAB єцх эютюх шчюсЁрцхэшх.
MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх 79
╬ўхэ№ трцэю яюэшьрЄ№, ўЄю ЇєэъЎш  image эх тюёёючфрхЄ тё■ шёїюфэє■ шэЇюЁьрЎш■, їрЁръЄхЁэє■ фы  тхъЄюЁэющ уЁрЇшъш. ╬эр ыш°№ ЇюЁьшЁєхЄ ьрёёшт яшъёхыют ё яЁртшы№э√ьш ЎтхЄрьш, ш сюы№°х эшўхую. ╬эр ёючфрхЄ юс·хъЄ ЁрёЄЁютющ уЁрЇшъш яю шьхэш image. ▌ЄюЄ юс·хъЄ ьюцэю ьрё°ЄрсшЁютрЄ№, шчьхэ   юс√ўэ√ь юсЁрчюь ЁрчьхЁ√ уЁрЇшўхёъюую юъэр, эю ърЁЄшэър яЁш ¤Єюь сєфхЄ шёърцрЄ№ё . ▌Єю юЄышўшЄхы№эр  ўхЁЄр ЁрёЄЁютющ уЁрЇшъш, ш ё ¤Єшь эшўхую эхы№ч  яюфхырЄ№. ╥ръютр яЁшЁюфр тх∙хщ.
╥хяхЁ№ яЁюфюыцшь яюфЁюсэюх шчєўхэшх ёЄЁюхэш  ьрЄЁшЎ, тючтЁр∙рхь√ї ЇєэъЎшхщ capture ш  ты ■∙шїё  юёэютющ ЁрёЄЁютющ уЁрЇшъш ёшёЄхь√ MATLAB.
┼∙х Ёрч эряюьэшь, ўЄю яЁюшчтюы№эюх шчюсЁрцхэшх эр ¤ъЁрэх ъюья№■ЄхЁр яЁхфёЄрты хЄ ёюсющ ьрёёшт яшъёхыют, ърцф√щ шч ъюЄюЁ√ї їрЁръЄхЁшчєхЄё  ётюшь ЎтхЄюь. ╓тхЄ яшъёхыр юяЁхфхы хЄё  ЄЁхь  ёюёЄрты ■∙шьш: ъЁрёэ√ь, чхыхэ√ь ш ёшэшь (Red, Green, Blue - RGB). ╩рцфр  ёюёЄрты ■∙р  ЎтхЄр, ъръ ь√ єцх уютюЁшыш т√°х, ъюфшЁєхЄё  тх∙хёЄтхээ√ь ўшёыюь юЄ 0 фю 1. ┬ Ёхчєы№ЄрЄх эр ърцф√щ яшъёхы ЁрёїюфєхЄё  яю 8 ї 3 = 24 срщЄр ярь Єш ъюья№■ЄхЁр. ▌Єю юўхэ№ ЁрёЄюўшЄхы№э√щ яю юЄэю°хэш■ ъ ярь Єш ъюья№■ЄхЁр ёяюёюс їЁрэхэш  шэЇюЁьрЎшш ю ЁрёЄЁют√ї шчюсЁрцхэш ї. └ эх¤ъюэюьэ√щ Ёрёїюф ярь Єш, т ётю■ юўхЁхф№, ёшы№эю яюэшцрхЄ яЁюшчтюфшЄхы№эюёЄ№ (с√ёЄЁюфхщёЄтшх).
┬ Єю цх тЁхь  фы  чрфрэш  тхышўшэ√ юфэющ ёюёЄрты ■∙хщ ЎтхЄр яшъёхыр фюёЄрЄюўэю 1 срщЄр ярь Єш (8 сшЄ), уфх ьюцэю чряшёрЄ№ Ўхы√х ўшёыр юЄ 0 фю 255 (тёхую 256 чэрўхэшщ). ╩рцфюьє яшъёхыє ¤ъЁрэр т Єръюь ёыєўрх сєфєЄ ёююЄтхЄёЄтютрЄ№ ЄЁш Ўхы√ї ўшёыр т фшрярчюэх юЄ 0 фю 255, ъюЄюЁ√х чрщьєЄ т ярь Єш ъюья№■ЄхЁр тёхую ыш°№ 3 срщЄр ярь Єш. ▌Єю юўхэ№ чэрўшЄхы№эр  ¤ъюэюьш  ярь Єш ъюья№■ЄхЁр, яю¤Єюьє т ёшёЄхьх MATLAB фы  Єръшї Ўхы√ї ўшёхы ёяхЎшры№эю ёючфрэ ёююЄтхЄёЄтє■∙шщ Єшя фрээ√ї, юсючэрўрхь√щ ъръ uint8. ╧юф Єръющ Єшя фрээ√ї юЄтюфшЄё  т ярь Єш тёхую 1 срщЄ тьхёЄю 8 срщЄ фы  юс√ўэ√ї тх∙хёЄтхээ√ї (фЁюсэ√ї) ўшёхы Єшяр double.
╧ю єьюыўрэш■ ы■сющ яхЁхьхээющ т ёшёЄхьх MATLAB ёЄртшЄё  т ёююЄтхЄёЄтшх Єшя double эхчртшёшью юЄ ўшёыют√ї чэрўхэшщ, ъюЄюЁ√х т√ яЁшётрштрхЄх яхЁхьхээ√ь. ═ряЁшьхЁ, т Ёхчєы№ЄрЄх ёЄЁюъш ъюфр
iVarl = 128;
ёючфрхЄё  яхЁхьхээр  ё шьхэхь iVarl ш Єшяюь double, ъюЄюЁющ яЁшётрштрхЄё  чэрўхэшх 128. ─ы  їЁрэхэш  Єръюую чэрўхэш  фюёЄрЄюўэю 1 срщЄр ярь Єш, юфэръю фы  яхЁхьхээющ iVarl Єшяр double юЄтюфшЄё  8 срщЄ ярь Єш (хёЄхёЄтхээю, ь√ чфхё№ уютюЁшь Єюы№ъю ю ёюсёЄтхээю фрээ√ї, Єръ ъръ яюьшью фрээ√ї фы  ы■сющ яхЁхьхээющ MATLAB юЄтюфшЄ х∙х ш ярь Є№ яюф тёяюьюурЄхы№эє■ шэЇюЁьрЎш■, эхюсїюфшьє■ фы  єяЁртыхэшхь ёЄЁєъЄєЁющ ьрёёштют, р ы■сющ юс·хъЄ т ёшёЄхьх MATLAB т ётюхь тэєЄЁхээхь яЁхфёЄртыхэшш  ты хЄё  ьрёёштюь). ═рышЎю  тэ√щ яхЁхЁрёїюф ярь Єш ъюья№■ЄхЁр.
80
├ыртр 2. ┬шчєрышчрЎш  Ёхчєы№ЄрЄют т√ўшёыхэшщ
╫Єюс√ шчсхцрЄ№ Єръюую яхЁхЁрёїюфр ярь Єш, яхЁхьхээє■ эєцэю  тэю юс· ты Є№ ъръ Ўхыє■, шёяюы№чє  ьюфшЇшърЄюЁ uint8:
iVar2 = uint8( 128 );
╥ръ ёючфрээр  яхЁхьхээр  iVar2 ёўшЄрхЄё  Ўхыющ яхЁхьхээющ (р эх тх∙хёЄтхээющ), ш яюф эхх юЄтюфшЄё  1 срщЄ ярь Єш. ╥ръшх яхЁхьхээ√х т ёшёЄхьх MATLAB ёяхЎшры№эю яЁхфэрчэрўхэ√ фы  їЁрэхэш  Ўхы√ї чэрўхэшщ юЄ 0 фю 255 (ё Ўхы№■ ¤ъюэюьшш ярь Єш) ш эх яЁхфэрчэрўхэ√ фы  т√ўшёыхэшщ^. ╧ю-ъЁрщэхщ ьхЁх т тхЁёшш MATLAB 5.2 ¤Єю х∙х Єръ. ┬ Ёхчєы№ЄрЄх фы  ЇЁруьхэЄр
iVar2 = iVar2 + 1;
яюыєўрхь ёююс∙хэшх юс ю°шсъх
??? Function '+' not defined for variables of class 'uint8'.
фюёыютэю ючэрўр■∙хх, ўЄю юяхЁрЎш  лёыюцхэшх╗ фы  яхЁхьхээ√ї Єшяр uint8 эх юяЁхфхыхэр.
╫Єюс√ єчэрЄ№, ъръющ Єшя шьххЄ Єр шыш шэр  яхЁхьхээр  шч Ёрсюўхую яЁюёЄЁрэёЄтр ёшёЄхь√ MATLAB, эєцэю ттхёЄш ш т√яюыэшЄ№ ъюьрэфє whos, т Ёхчєы№ЄрЄх ўхую т ъюьрэфэюь юъэх яю тшЄё  ёююс∙хэшх, шч ъюЄюЁюую тшфэю, ўЄю iVarl  ты хЄё  ьрёёштюь ЁрчьхЁр 1x1 (Єю хёЄ№ ЇръЄшўхёъш ёъры Ёюь) Єшяр double ш чрэшьрхЄ т ярь Єш 8 срщЄ, a iVar2 шьххЄ Єшя uint8 ш чрэшьрхЄ т ярь Єш Єюы№ъю 1 срщЄ (т 8 Ёрч ьхэ№°х). ╧Ёш ¤Єюь юсх яхЁхьхээ√х шьх■Є юфшэръют√х чэрўхэш  (ёь. Ёшё. 2.28).
─1▀ ├└ d W sgtBff!ft!f!T!T! ITAffl ff^Ч1M^ЧЧ File ?dit Window Help I-IDIXI
D & 1 * ╫р ╪ ! " ;   t-g i ?
╗ whos
Name Size Bytes Class
iVarl lxl 8 double array J
iVai-2 lxl 1 tiintS array
Grand total is 2 elements using 9 byte's
л1 1 in ╨шёєэюъ 2.28
┬юёяюы№чєхьё , эръюэхЎ, Єшяюь фрээ√ї uint8 фы  ¤ъюэюьшш ярь Єш ъюья№■ЄхЁр т чрфрўх їЁрэхэш  ЁрёЄЁютюую шчюсЁрцхэш . ╠√ єцх чэрхь, ўЄю ёыхфє■∙шщ т√чют ЇєэъЎшш capture:
[X,map] = capture (1)
ёючфрхЄ ьрЄЁшЎє X ЁрчьхЁюь ■їя, уфх m - ўшёыю Ё фют яшъёхыют т шчюсЁрцхэшш, an- ўшёыю ёЄюысЎют яшъёхыют т эхь. ╬с√ўэю ¤Єю юўхэ№ сюы№°шх ўшёыр, Єръ ўЄю
MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх 81
ъюышўхёЄтю ¤ыхьхэЄют ьрЄЁшЎ√ X юс√ўэю Ёртэю эхёъюы№ъшь фхё Єърь Є√ё ў ш сюыхх. ╚ьхээю ¤Єє ьрЄЁшЎє ёшёЄхьр MATLAB яючтюы хЄ ъюэтхЁЄшЁютрЄ№ т Єшя
uint8:
X = uint8 ( X - 1 );
╥хяхЁ№ ърцф√щ ¤ыхьхэЄ ьрЄЁшЎ√ X чрэшьрхЄ Єюы№ъю 1 срщЄ ярь Єш, ўЄю яЁштюфшЄ ъ тюё№ьшъЁрЄэющ ¤ъюэюьшш ярь Єш ъюья№■ЄхЁр. ═хсюы№°ющ яырЄющ чр Єръє■ ¤ъюэюьш■  ты хЄё  ёыхфє■∙р  яєЄр■∙р  яюы№чютрЄхы  фхЄры№: ¤ыхьхэЄ√ ьрЄЁшЎ√ X яю-яЁхцэхьє шьх■Є Ўхыюўшёыхээ√х чэрўхэш , эю ърцфюх чэрўхэшх ЄхяхЁ№ эр хфшэшЎє ьхэ№°х ётюхую яЁхцэхую чэрўхэш  (ъюЄюЁюх с√ыю яЁш Єшях double ьрЄЁшЎ√ X). ╥ръшь юсЁрчюь, хёыш т ёыєўрх Єшяр double є ьрЄЁшЎ√ X ърцф√щ хх ¤ыхьхэЄ Ёртхэ эюьхЁє эхъюЄюЁющ ёЄЁюъш ьрЄЁшЎ√ ЎтхЄют ЄрЁ, Єю т ёыєўрх Єшяр uint8 ¤ыхьхэЄ√ ьрЄЁшЎ√ X  ты ■Єё  ёьх∙хэш ьш ¤Єшї цх ёЄЁюъ юЄ эрўрыр ьрЄЁшЎ√ ЎтхЄют ЄрЁ ш Єхь ёрь√ь юэш фюыцэ√ с√Є№ эр хфшэшЎє ьхэ№°х ётюшї яЁхф√фє∙шї чэрўхэшщ. ─хщёЄтшЄхы№эю, фы  яхЁтющ ёЄЁюъш ьрЄЁшЎ√ ЄрЁ хх ёьх∙хэшх юЄ эрўрыр Ёртэю эєы■, тЄюЁр  ёЄЁюър шьххЄ ёьх∙хэшх 1 ш Є. ф.
┼∙х Ёрч эряюьэшь, ўЄю Єшя фрээ√ї uint8 яЁхфэрчэрўхэ фы  їЁрэхэш  шэЇюЁьрЎшш, р эх фы  т√ўшёыхэшщ. ┼ёыш ЄЁхсєхЄё  яЁюшчтхёЄш эрф шчюсЁрцхэшхь ъръшх-Єю ўшёыхээ√х яЁхюсЁрчютрэш , Єю яхЁхф ¤Єшь ьрЄЁшЎє X Єшяр unit8 эрфю ъюэтхЁЄшЁютрЄ№ т ьрЄЁшЎє Єшяр double
X = doublet X ) + 1;
яЁюшчтхёЄш т√ўшёыхэш , р чрЄхь ёэютр ьюцэю фы  ¤ъюэюьшш ярь Єш яЁхтЁрЄшЄ№ Ёхчєы№ЄрЄ т Єшя uint8. ╩юэтхЁЄрЎш  яЁюшчтюфшЄё  т юсх ёЄюЁюэ√ ё єўхЄюь ёююЄтхЄёЄтє■∙хую єьхэ№°хэш  шыш єтхышўхэш  ¤ыхьхэЄют ьрЄЁшЎ√ X эр хфшэшЎє. ╘єэъЎш  image яЁшэшьрхЄ т ърўхёЄтх рЁуєьхэЄр юср ¤Єшї Єшяр фрээ√ї ш ЁрсюЄрхЄ ё эшьш рфхътрЄэю.