19-1 MATLAB �v���榡

MATLAB ³Ì±`³B²zªº¼v¹³®æ¦¡¬°¯Á¤Þ¼v¹³¡]Indexed Images¡^¡A±ýÅã¥Ü¦¹Ãþ¼v¹³®É¡A¨Ï¥Î»yªk¦p¤U¡G

image(X); colormap(map);

¨ä¤¤ X ¥Nªí¼v¹³ªº¸ê®Æ¯x°}¡Amap «h¬OÅã¥Ü¦¹¼v¹³©Ò¥²»Ý¥Î¨ìªº¡u¦â½L¯x°}¡v¡]Colormap Matrix¡^©Î¬O¡uÃC¦â¹ï·Óªí¡v ¡C¤@¯ë¦Ó¨¥¡A±ýÅã¥Ü K ºØ¤£¦PÃC¦â¡A¦â½L¯x°}¥²»Ý¬O¤@­Ó K¡Ñ3 ªº¯x°}¡A¨ä¤¤¨C¤@¾î¦C¥Nªí¤@ºØÃC¦â¡A¨C¤@ÃC¦â¥Ñ¤T­Ó¤¸¯À²Õ¦¨¡A¤¸¯À­È¥Ñ 0 ¦Ü 1¡A¤À§O¥Nªí R¡]Red¡A¬õ¦â¡^¡AG¡]Green¡Aºñ¦â¡^¡AB¡]Blue¡AÂŦâ¡^ªº¥÷¶q¡CX ªº¤¸¯À­È½d³ò¬° 1 ¦Ü K¡A¥Nªí¨C¤@­Ó¹³¯À¡]Pixel¡^ªºÃC¦â¡C´«¥y¸Ü»¡¡A­Y X (i, j) ªº­È¬° p¡A«h X (i, j) ¦¹ÂI¹³¯ÀªºÃC¥Ü§Y¥Ñ map (p, :) ©Ò¨M©w¡A¨ä¤¤ map (p, 1)¡Amap (p, 2) ¤Î map (p, 3) ¤À§O¥Nªí¬õ¦â¡Bºñ¦â¤ÎÂŦ⪺¥÷¶q¡C

Hint
MATLAB ¦³²{¦¨ªº¦â½L¯x°}¡]©ÎÃC¦â¹ï·Óªí¡^¡A½Ð°Ñ¦Ò¥»®Ñ²Ä¥|³¹¡u¤Tºû¥ßÅéø¹Ï¡vªº²Ä¤T¸`¡u¦±­±ÃC¦âªº±±¨î¡v¡C

Á|¨Ò¨Ó»¡¡AMATLAB ¦³¤@­Ó¤º«Øªº¤p¤¡¼v¹³¡A¥iÅã¥Ü¦p¤U¡G

Example 1: 19-¼v¹³Åã¥Ü»PŪ¼g/image01.mload clown.mat % ¸ü¤J¤p¤¡¼v¹³¸ê®Æ¡A§tÅÜ¼Æ X ©M map image(X); % Åã¥Ü¼v¹³ colormap(map) % ¨ú¥Î¦â½L¯x°}

¥Ñ©ó X ¬O¯Á¤Þ¼v¹³¡A¦]¦¹¨ä³Ì¤p­È¬O 1, ³Ì¤j­È·|µ¥©ó map ªº¦C¼Æ¡]§Y¡u¥iÅã¥Ü¤§ÃC¦â¼Æ¥Ø¡v¡^¡A¥iÅçµý¦p¤U¡G

Example 2: 19-¼v¹³Åã¥Ü»PŪ¼g/image02.mload clown.mat % ¸ü¤J¤p¤¡¼v¹³¸ê®Æ¡A§tÅÜ¼Æ X ©M map fprintf('min(min(X)) = %d\n', min(min(X))); fprintf('max(max(X)) = %d\n', max(max(X))); fprintf('size(map, 1) = %d\n', size(map, 1));min(min(X)) = 1 max(max(X)) = 81 size(map, 1) = 81

¥Ñ¤W­z½d¨Ò¥iª¾¡A¦¹¤p¤¡¼v¹³¦@§t¦³ 81 ºØ¤£¦PªºÃC¦â¡C

±ý¥¿½T¦aÅã¥Ü¯Á¤Þ¼v¹³¡A»Ý¦³¥¿½Tªº¦â½L¯x°}¡A§_«hÅã¥Ü¥X¨ÓªºÅã¹³·|Ãø¥H¿ë»{¡A¥H¤W­z¤p¤¡¼v¹³¬°¨Ò¡A¦pªG¨ú¥Î¥H¶Ã¼Æ²£¥Íªº¦â½L¯x°}¡A«h²£¥Í¤U¦C®ÄªG¡G

Example 3: 19-¼v¹³Åã¥Ü»PŪ¼g/image03.mload clown newmap = rand(size(map)); image(X); colormap(newmap); colorbar;

¦pªG§Ú­Ìªº¦â½L¯x°}¥u¦³ K ­Ó¾î¦C¡A¦ý¬O X ªº¬Y¨Ç¤¸¯À­È¤p©ó 1 ©Î¤j©ó K¡A¨º»ò¦p¦óÅã¥Ü³o­Ó¯x°}©O¡H³Ì²³æªº¿ìªk¡A¬O±N X ªº³Ì¤p­ÈÂà´«¦¨ 1¡A³Ì¤j­ÈÂন K¡A¨ä¥L¤¤¶¡­È«h¨Ì½u©ÊÃö«YÂà´«¦¨¤¶©ó 1 »P K ªº­È¡A¦A¨Ì¦â½L¯x°}¨ÓÅã¥Ü¦¹¯x°}¡C¦¹¶µÂà´«¤u§@¥i¥Ñ imagesc «ü¥Oª½±µ¹F¦¨¡AÁ|¨Ò¦p¤U¡G

Example 4: 19-¼v¹³Åã¥Ü»PŪ¼g/imagesc01.mtemp=colormap(gray); newMap=temp(1:6:end, :); X = peaks; colormap(newMap); imagesc(X); colorbar; min(min(X)) % Åã¥Ü X ªº³Ì¤p­È max(max(X)) % Åã¥Ü X ªº³Ì¤j­È ans = -6.5466 ans = 8.0752

¦b¤W¨Ò¤¤¡AÁöµM X ªº³Ì¤j­È¬° 8.0752¡A³Ì¤p­È¬° -6.5466¡A¦ý imagesc ¥i¸g¥Ñ«e­zªº½u©ÊÂà´«¹Lµ{¨ÓÅã¥Ü¼v¹³¡C¨ã¦³¤W­z¯S©Êªº¼v¹³¸ê®ÆºÙ¬°±j«×¼v¹³¡]Intensity Images¡^¡A¤@¯ë¸g¥Ñ¼Æ­È¹Bºâ²£¥Íªº¯x°}§¡Äݦ¹Ãþ¡A¦]¦¹§¡¥i¥Ñ imagesc ¨ÓÅã¥Ü¡C

Hint
peaks «ü¥O¥i¥H²£¥Í¤@­Ó¥W¥Y¦³½oªº¦±­±¡A¸Ô¨£¥»®Ñ²Ä¥|³¹¡u¤Tºû¥ßÅéø¹Ï¡vªº»¡©ú¡C

°£¤F¯Á¤Þ¼v¹³¤Î±j«×¼v¹³¥~¡Aimage «ü¥O¥ç±µ¨ü¥þ±m¼v¹³¡]Truecolor Images¡^¡C¥þ±m¼v¹³¥i¥Hªí¥Ü¦¨¤@­Ó m¡Ñn¡Ñ3 ªº¯x°} X¡A¨ä¤¤ X (:, :, 1) ¥Nªí¬õ¦âªº±j«×¡CX (:, :, 2) ¥Nªíºñ¦âªº±j«×¡AX (:, :, 3) «h¥NªíÂŦ⪺±j«×¡CX ªº¤¸¯À­È¥i¥H¬O¤¶©ó 0 ©M 1 ¤¤¶¡ªº¯BÂI¼Æ¡A©Î¬O¤¶©ó 0 ©M 255 ¤¤¶¡ªº 8 ¦ì¤¸¡B¤£±a²Å¸¹ªº¾ã¼Æ¡]uint8¡A¸Ô±¡½Ð°Ñ¾\¥»³¹²Ä¤T¸`¡^¡CÁ|¨Ò¨Ó»¡¡G

Example 5: 19-¼v¹³Åã¥Ü»PŪ¼g/image04.m%X = imread('ngc6543a.jpg'); X = imread('annie19980405.jpg'); image(X) size(X) ans = 480 640 3

¥H¤W§Y¬°¤@±i¥þ±mªº¹Ï¤ù¡A§¹¥þ¤£»Ý­n¥Î¨ì¦â½L¯x°}¡C¡]¦b¤W¦Cµ{¦¡½X¤¤¡Aimread ¬O¥Î¨ÓŪ¤J¼v¹³Àɪº«ü¥O¡A¸Ô¨£¥»³¹³Ì«á¤@¸`¡C¡^

Hint
¤W¹Ï¬Oµ§ªÌ¤k¨à¥|·³¥bªº·Ó¤ù¡A¹ê¦b«Ü¥i·R¡A§Ô¤£¦í©ñ¤W¨Ó¡A½Ð¦U¦ìŪªÌ¤£­n¨£©Ç¡K


MATLABµ{¦¡³]­p¡G¤Jªù½g