{"id":6756,"date":"2009-11-23T12:33:42","date_gmt":"2009-11-23T11:33:42","guid":{"rendered":"https:\/\/www.dreamsworld.it\/emanuele\/?p=6756"},"modified":"2016-05-17T15:51:05","modified_gmt":"2016-05-17T13:51:05","slug":"aree-comuni-tra-matrici-in-matlab","status":"publish","type":"post","link":"https:\/\/www.dreamsworld.it\/emanuele\/2009-11-23\/aree-comuni-tra-matrici-in-matlab\/","title":{"rendered":"Aree comuni tra matrici in MATLAB."},"content":{"rendered":"<p>Come <a title=\"Oggi ho preso venti tette! =)\" href=\"\/\/www.dreamsworld.it\/emanuele\/2009-11-20\/oggi-ho-preso-venti-tette\/\">sapete<\/a> studiare <em>Elaborazione delle immagini digitali<\/em> mi \u00e8 piaciuto <strong>parecchio<\/strong>. E&#8217; stato interessantissimo scoprire tutti i metodi usati per <strong>gestire<\/strong> le immagini da parte di un calcolatore. Qualsiasi operazione, anche la pi\u00f9 semplice, \u00e8 frutto di operazioni ben ponderate. Una su tutte? Lo <em>zooming<\/em> di una immagine.<br \/>\nSiamo abituati a <strong>cliccare<\/strong> sui tastini &#8220;+&#8221; o &#8220;-&#8221; del nostro visualizzatore d&#8217;immagini che non pensiamo mai che <strong>scelte<\/strong> debba fare un sistema operativo per soddisfare la nostra operazione.<br \/>\nUna delle pi\u00f9 basilari tecniche di <em>zooming<\/em> prevede <strong>il raddoppio delle linee e delle colonne<\/strong> della matrice di uscita e l&#8217;assegnazione ad ognuna di queste nuove celle di un nuovo valore che, presumibilmente, dovr\u00e0 rispecchiare quelli dell&#8217;intorno corrispettivo nell&#8217;immagine di partenza.<\/p>\n<p>Tutto avviene <strong>in pochi istanti<\/strong> tanto che nessuno immagina ci siano calcoli matematici da eseguire (<em>anche se per immagini di grandi dimensioni qualche rallentamento si \u00e8 abituati ad avvertirlo<\/em>).<\/p>\n<p>L&#8217;esercizio in <em>MATLAB<\/em> che mi \u00e8 stato richiesto <strong>durante l&#8217;esame<\/strong> era di una semplicit\u00e0 spiazzante. Mi ero preparato a <a title=\"Come equalizzare una immagine in MATLAB.\" href=\"\/\/www.dreamsworld.it\/emanuele\/2009-09-26\/come-equalizzare-una-immagine-in-matlab\/\">equalizzazioni<\/a> o cose molto pi\u00f9 complesse, quando mi sento domandare: <em>&#8220;Prese due immagini in bianco e nero (non scala di grigio!), sa generare una nuova immagine contenente le parti in comune?&#8221;<\/em>.<\/p>\n<p>In pratica dovevo fare <strong>l&#8217;intersezione<\/strong> tra due insiemi con area non nota.<\/p>\n<p>Ho guardato il professore <strong>un po&#8217; sorpreso<\/strong> perch\u00e9 sapevo che tradurre la richiesta in codice era <strong>una semplice riga<\/strong> ma tant&#8217;era la richiesta.<\/p>\n<p>La vera potenza di <em>MATLAB<\/em> nel gestire matrici \u00e8 che, il pi\u00f9 delle volte, <strong>non \u00e8 necessario effettuare cicli<\/strong> (<em>come faremmo in altri linguaggi di programmazione quando incontriamo <a title=\"Wikipedia - Array\" href=\"https:\/\/it.wikipedia.org\/wiki\/Array\" target=\"_blank\">array<\/a> mono o multi dimensionali<\/em>) per effettuare il confronto dei valori. L&#8217;importante \u00e8 che le due matrici abbiano <strong>dimensioni identiche<\/strong> (ma \u00e8 banale renderle tali: vedi il <em>reshaping<\/em> di una matrice).<\/p>\n<p>Comunque, il codice per trovare l&#8217;intersezione \u00e8 questo:<\/p>\n<pre lang=\"matlab\" line=\"1\">% Chiamiamo le immagini di partenza im1 e im2\r\n% (che possiamo aver letto da file o generato durante un programma)\r\n% e im_out l'immagine di uscita\r\n\r\nim_out = im1 & im2;\r\n\r\n% Ho gi\u00e0 finito, mostro l'output.\r\nimshow(im_out);<\/pre>\n<p>Ho usato <strong>un confronto booleano<a title=\"Wikipedia - Algebra di Boole\" href=\"https:\/\/it.wikipedia.org\/wiki\/Algebra_di_Boole\" target=\"_blank\">*<\/a><\/strong> tra le due matrici e assegnato il valore alla matrice <em>im_out<\/em>. Avrei potuto eseguire l&#8217;esercizio tramite un ciclo for che scansionava righe e colonne, ma come dicevo, avrebbe sminuito l&#8217;efficienza di <em>MATLAB<\/em>.<\/p>\n<p>L&#8217;esercizio era persino pi\u00f9 banale di quello dell&#8217;altra volta in cui avevo <a title=\"Come specchiare una immagine con MATLAB.\" href=\"\/\/www.dreamsworld.it\/emanuele\/2009-09-30\/come-specchiare-una-immagine-con-matlab\/\">specchiato un&#8217;immagine<\/a>! \ud83d\ude42<\/p>\n<p><strong>Emanuele<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come sapete studiare Elaborazione delle immagini digitali mi \u00e8 piaciuto parecchio. E&#8217; stato interessantissimo scoprire tutti i metodi usati per gestire le immagini da parte di un calcolatore. Qualsiasi operazione, anche la pi\u00f9 semplice, \u00e8 frutto di operazioni ben ponderate. &hellip; <a href=\"https:\/\/www.dreamsworld.it\/emanuele\/2009-11-23\/aree-comuni-tra-matrici-in-matlab\/\">Leggi ancora &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_post_was_ever_published":false},"categories":[3],"tags":[1782,1009,1629,1632,640,1628,242],"class_list":["post-6756","post","type-post","status-publish","format-standard","hentry","category-computer","tag-algebra-di-boole","tag-confronto","tag-elaborazione-delle-immagini-digitali","tag-geometria","tag-how-to","tag-matlab","tag-programmazione"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/posts\/6756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/comments?post=6756"}],"version-history":[{"count":0,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/posts\/6756\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/media?parent=6756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/categories?post=6756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dreamsworld.it\/emanuele\/wp-json\/wp\/v2\/tags?post=6756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}