<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Uygulamalı  Elektronik-Yazılım-Havacılık  Atölyeniz</title>
	<atom:link href="http://e-atolye.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://e-atolye.net</link>
	<description>Uygulamalı  Elektronik-Yazılım-Havacılık  Atölyeniz</description>
	<lastBuildDate>Wed, 11 Apr 2012 19:44:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Image Processing- Average Filtering Yöntemi</title>
		<link>http://e-atolye.net/2012/04/09/image-processing-average-filtering-yontemi/</link>
		<comments>http://e-atolye.net/2012/04/09/image-processing-average-filtering-yontemi/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 19:01:35 +0000</pubDate>
		<dc:creator>eozturk</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Elif ÖZTÜRK]]></category>
		<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[average filtering]]></category>
		<category><![CDATA[average filtering yöntemi]]></category>
		<category><![CDATA[filtering]]></category>
		<category><![CDATA[filtreleme yöntemleri]]></category>
		<category><![CDATA[görüntü işleme]]></category>
		<category><![CDATA[görüntü işleme zero pading]]></category>
		<category><![CDATA[imade processing zero pading]]></category>
		<category><![CDATA[image porcessing average filtering]]></category>
		<category><![CDATA[image processing]]></category>
		<category><![CDATA[image smoothing]]></category>
		<category><![CDATA[median filtering]]></category>
		<category><![CDATA[resmi filtreleme yöntemleri]]></category>
		<category><![CDATA[resmi pürüzsüzleştirme]]></category>
		<category><![CDATA[smooting image processing]]></category>
		<category><![CDATA[spatial filtering]]></category>
		<category><![CDATA[zero pading]]></category>

		<guid isPermaLink="false">http://e-atolye.net/?p=774</guid>
		<description><![CDATA[Merhaba arkadaşlar, bu yazımda sizlere görüntü işlemede resmi pürüzsüzleştirme (smoothing) yöntemlerinden biri olan average filtering konusunu anlatacağım. Average filtering yöntemi;  smoothing filtering yönteminin linear bölümünü oluşturmaktadır. Nonlinear kısmı ise Median – max- min filtering olmak üzere üçe ayrılıyor. Average filtering , tek*tek (3*3,5*5,7*11&#8230;) ‘lik bir maske kullanarak tüm resmin satır ve sütunlarında gezinerek resmin var [...]]]></description>
			<content:encoded><![CDATA[<p>Merhaba arkadaşlar, bu yazımda sizlere görüntü işlemede resmi pürüzsüzleştirme (smoothing) yöntemlerinden biri olan average filtering konusunu anlatacağım.</p>
<p><span id="more-774"></span></p>
<p>Average filtering yöntemi;  smoothing filtering yönteminin linear bölümünü oluşturmaktadır. Nonlinear kısmı ise Median – max- min filtering olmak üzere üçe ayrılıyor. Average filtering , tek*tek (3*3,5*5,7*11&#8230;) ‘lik bir maske kullanarak tüm resmin satır ve sütunlarında gezinerek resmin var olan histogram dağılımını daha düzgün ve pürüzsüz hale getirmek için kullanılan bir yöntemdir. Bu yöntemi uygularken eğer sonuç resmin boyutu sizin için önemli değilse kenarları eleyerek, orjinal resminizden daha küçük boyutlu bir resim elde edersiniz. Fakat eğer resmin boyutu değişmesin isterseniz o zaman zero padding uygulamanız gerekmektedir. Bu yazımızda ortaya çıkacak olan resmin boyutu orjinal resmimizle aynı olacak şekilde kodumuzu yazacağız. Ayrıca en sonda MATLAB’ın bize sunduğu filter2 fonksiyonunu da yazarak resmi karşılaştırıyoruz.</p>
<p style="text-align: left;">Orjinal Resmimiz:</p>
<div id="attachment_778" class="wp-caption aligncenter" style="width: 310px"><a href="http://e-atolye.net/2012/04/09/image-processing-average-filtering-yontemi/hw2_problem2-308-x-242/" rel="attachment wp-att-778"><img class="size-medium wp-image-778" title="Orjinal Resim" src="http://e-atolye.net/wp-content/uploads/2012/04/hw2_problem2-308-x-242-300x235.jpg" alt="" width="300" height="235" /></a><p class="wp-caption-text">---Orjinal Resim--</p></div>
<p>Şimdide kod kısmına geçelim:  Kodumuzda kullanacağımız maskemiz 3*3lük olacak.</p>
<p>** filename: bu kısımda kullanacağınız grey-scale bir resim olmalıdır.</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">function image_filter( filename )
&nbsp;
I = imread(filename);  %%resmi okuyoruz
&nbsp;
%%Orjinal Resim
subplot(3,1,1)
imshow(I)
title('Orjinal Resim');
&nbsp;
%%Bu kısımda Average filtering yapmaya başlıyoruz
satir = size( I,1);   %%satır ve sutun değerlerini hesaplıyoruz
sutun = size( I,2);
&nbsp;
newI = I;   %orjinal resmimizi kaybetmemek için başka bir matrise kopyalıyoruz.</pre></div></div>   Gelelim zero pading kısmını yapmaya: Burada yeni bir metris oluşturuyoruz ve bu matrisin boyutunu orjinal matrisimizin boyutunun satır ve sutununun 2 fazlası olarak ayarlıyoruz. +2 yapmamızın nedeni image matrisimizi yeni oluşturacağımız ve image matrisimizden 2şer fazla boyutu olan içi 0 dolu matrisimize kopyalamak ve resmimizin boyutunu kaybetmeden filtering yapmak. <div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="matlab" style="font-family:monospace;">M = <a href="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/zeros.html"><span class="kw2">zeros</span></a> <span class="br0">&#40;</span>satir+2,sutun+2<span class="br0">&#41;</span>;</pre></div></div></p>
<p>Bu kısımda ise oluşturduğumuz içi sıfır dolu olan matrise orjinal matrisimizi kopyalamak. Aşağıda daha iyi anlamanız açısından 3*3 orjinal matris(daha büyükde olabilir) ve 5*5 zero matris gösterilmiştir. Yanlız burada 3*3 matrisi maskemizle karıştırmayın!!!</p>
<p><span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: 11px; line-height: normal;"><a href="http://e-atolye.net/2012/04/09/image-processing-average-filtering-yontemi/matris/" rel="attachment wp-att-779"><img class="aligncenter size-full wp-image-779" title="matris" src="http://e-atolye.net/wp-content/uploads/2012/04/matris.png" alt="" width="300" height="120" /></a></span></span></p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">for i = 2: satir+1
    for j=2 : sutun+1
        M(i,j) = newI (i-1,j-1);
    end
end
&nbsp;
%%3*3luk matris içine degerleri kopyalıyoruz ve ortalamasını alıyoruz
for ı=1: (satir-2)
    for j=1: (sutun-2)
        A(1,1) = M( i , j );
        A(1,2) = M( i , j+1 );
        A(1,3) = M( i , j+2 );
        A(2,1) = M( i+1 , j );
        A(2,2) = M( i+1 , j+1 );
        A(2,3) = M( i+1 , j+2 );
        A(3,1) = M( i+2 , j );
        A(3,2) = M( i+2 , j+1 );
        A(3,3) = M( i+2 , j+2 );
        B = mean2(A(:));
        newI(i,j) = B;
    end
&nbsp;
subplot(3,1,2)
imshow(uint8(newI))
title('Kendi Algoritmamız ile Filtering');
&nbsp;
%%filter2 Fonksiyonu ile
subplot(3,1,3)
K=filter2(fspecial('average',3),I,'same')/255;
imshow(K)
title('Filter2 fonksiyonu kullanılarak yapılmış Filtering');
&nbsp;
end</pre></div></div>
<p>Evet arkadaşlar bugün sizlere, filtering yöntemini kendi yazdığımız fonksiyonla açıklamaya çalıştı. Sizlerde daha etkin veya süresi daha kısa tutabilecek kodlar yazabilirsiniz. Görüşmek üzere <img src='http://e-atolye.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<h2  class="related_post_title">Benzer Başlıklar</h2><ul class="related_post"><li>20 Mart 2012 -- <a href="http://e-atolye.net/2012/03/20/image-processing-resmi-boyutlandirma-sag-sol-yatay-dikey-dondurme/" title="Image Processing- Resmi Boyutlandırma, Sağ-Sol-Yatay-Dikey Döndürme">Image Processing- Resmi Boyutlandırma, Sağ-Sol-Yatay-Dikey Döndürme</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://e-atolye.net/2012/04/09/image-processing-average-filtering-yontemi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenCV- Camera Calibration-2</title>
		<link>http://e-atolye.net/2012/04/06/opencv-camera-calibration-2/</link>
		<comments>http://e-atolye.net/2012/04/06/opencv-camera-calibration-2/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 14:49:30 +0000</pubDate>
		<dc:creator>İbrahim Atlı</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[C & C++]]></category>
		<category><![CDATA[İbrahim ATLI]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[Calibration]]></category>
		<category><![CDATA[Camera Calibration]]></category>
		<category><![CDATA[Kamerayla hareket Algılama]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[OpenCV Camera Calib]]></category>
		<category><![CDATA[OpenCV motion detection]]></category>
		<category><![CDATA[OpenCV Motion Finder]]></category>
		<category><![CDATA[OpenCv öğren]]></category>
		<category><![CDATA[OpenCV örnek]]></category>
		<category><![CDATA[OpenCV resim açma]]></category>
		<category><![CDATA[OpenCV resim Boyutlandırma]]></category>
		<category><![CDATA[OpenCV resim küçültme]]></category>
		<category><![CDATA[Single Camera Calibration]]></category>
		<category><![CDATA[yeniden boyutlandırma]]></category>

		<guid isPermaLink="false">http://e-atolye.net/?p=768</guid>
		<description><![CDATA[Merhaba Arkadaşlar, Bu yazımda sizlere buradaki yazıda anlattığım kamera kalibrasyonunun kodunu paylaşıp kodu açıklamaya çalışacağım. Kodu anlatmaya  başlamadan önce kullandığım chessboard&#8217;u buraya yükleyeceğim. Benim kullandığım chessboard 9&#215;6. Siz başka boyutlarda bir chessbaord kullanabilirsiniz. Ama benden size tavsiye kare yapıda olan bir chessboard ile kalibrasyon yapmak yerin dikdörtgen boyutlardakileri tercih edin. Kullandığım chessbaord : Kalibrasyon yaparken diğer [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Merhaba Arkadaşlar,</p>
<p style="text-align: justify;">Bu yazımda sizlere <a title="Camera Calib 1" href="http://e-atolye.net/2012/04/01/opencv-camera-calibration-1/">buradaki</a> yazıda anlattığım kamera kalibrasyonunun kodunu paylaşıp kodu açıklamaya çalışacağım. Kodu anlatmaya  başlamadan önce kullandığım chessboard&#8217;u buraya yükleyeceğim. Benim kullandığım chessboard 9&#215;6. Siz başka boyutlarda bir chessbaord kullanabilirsiniz. Ama benden size tavsiye kare yapıda olan bir chessboard ile kalibrasyon yapmak yerin dikdörtgen boyutlardakileri tercih edin.<span id="more-768"></span></p>
<p style="text-align: justify;">Kullandığım chessbaord :</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/04/06/opencv-camera-calibration-2/checkerboard/" rel="attachment wp-att-771"><img class="aligncenter size-medium wp-image-771" title="checkerboard" src="http://e-atolye.net/wp-content/uploads/2012/04/checkerboard-300x212.png" alt="" width="300" height="212" /></a></p>
<p style="text-align: justify;">Kalibrasyon yaparken diğer dikkat edilmesi gereken konu da  chessboard&#8217;u hep düz tutarak kalibrasyon yapmaktan uzak durun. En iyi kalibrasyon işlemi için farklı açılarda fotoğraflar yakalamanız gerekmektedir. Bunun nedenlerinden bir tanesi farklı açılardan düz olan çizgilerin yamukmuş gibi görünmesi. Günlük hayatta mutlaka bir yerlerde görmüşsünüzdür, aslında düz olan çizgiler(birbirine paralel olan çizgiler) size düz değilmiş gibi gelir. Nedenlerini daha çok merak eden arkadaşlar teorik açıklamalarını google&#8217;dan araştırıp öğrenebilir. Çekilmesi gereken fotoğraflar şu şekilde olmalıdır :</p>
<p style="text-align: justify;">
<div class="mceTemp mceIEcenter" style="text-align: justify;">
<dl id="attachment_772" class="wp-caption aligncenter" style="width: 526px;">
<dt class="wp-caption-dt"><a href="http://e-atolye.net/2012/04/06/opencv-camera-calibration-2/chessboard_pos/" rel="attachment wp-att-772"><img class=" wp-image-772 " title="chessboard_pos" src="http://e-atolye.net/wp-content/uploads/2012/04/chessboard_pos.jpg" alt="" width="516" height="413" /></a></dt>
<dd class="wp-caption-dd">Chessboard Pozisyonları</dd>
</dl>
</div>
<p style="text-align: justify;">
<p style="text-align: justify;">Bu şekilde resimler çekerek en az 10 tane örnek almanız gerekmektedir. Şimdi de yazılan kaynak kodunu paylaşıp, açıklayalım:</p>
<p style="text-align: justify;">Kamera kalibrasyon Kaynak Kodu :</p>
<p style="text-align: justify;"><div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="cpp" style="font-family:monospace;"><span class="co2">#include &lt;cv.h&gt;</span>
<span class="co2">#include &lt;highgui.h&gt;</span>
<span class="co2">#include &lt;stdio.h&gt;</span>
<span class="co2">#include &lt;stdlib.h&gt;</span>
&nbsp;
<span class="kw4">int</span> n_boards <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>		<span class="co1">//Kac tane örnek alınacak</span>
<span class="kw4">int</span> frame_step<span class="sy4">;</span>			<span class="co1">//boş geçilecek frame sayısı</span>
<span class="kw4">int</span> board_w<span class="sy4">;</span>			<span class="co1">//genişlik olarak kare sayısı</span>
<span class="kw4">int</span> board_h<span class="sy4">;</span>			<span class="co1">//yükseliklil olarak kare sayısı</span>
<span class="kw4">int</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
	CvCapture<span class="sy2">*</span> capture<span class="sy4">;</span>
&nbsp;
	<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;Kac tane foto cekilsin = &quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
	<span class="kw3">scanf</span><span class="br0">&#40;</span><span class="st0">&quot;%d&quot;</span>,<span class="sy3">&amp;</span>n_boards<span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es1">\r</span>Kac tane foto gecilsin = &quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
	<span class="kw3">scanf</span><span class="br0">&#40;</span><span class="st0">&quot;%d&quot;</span>,<span class="sy3">&amp;</span>frame_step<span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	board_w  <span class="sy1">=</span> <span class="nu0">9</span><span class="sy4">;</span> <span class="co1">//genelde 9x6 kullanılır. Kare olmamasına özen gösterilir.</span>
	board_h  <span class="sy1">=</span> <span class="nu0">6</span><span class="sy4">;</span>
<span class="co1">//yer ayırmak icin</span>
	<span class="kw4">int</span> board_total  <span class="sy1">=</span> board_w <span class="sy2">*</span> board_h<span class="sy4">;</span>						<span class="co1">//Total enclosed corners on the board</span>
	CvSize board_sz <span class="sy1">=</span> cvSize<span class="br0">&#40;</span> board_w, board_h <span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	capture <span class="sy1">=</span> cvCreateCameraCapture<span class="br0">&#40;</span> 0 <span class="br0">&#41;</span><span class="sy4">;</span>
	<span class="kw1">if</span><span class="br0">&#40;</span><span class="sy3">!</span>capture<span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es1">\n</span>Kamera Acilamiyor<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
		<span class="kw1">return</span> <span class="sy2">-</span><span class="nu0">1</span><span class="sy4">;</span>
	<span class="br0">&#125;</span>
&nbsp;
	cvNamedWindow<span class="br0">&#40;</span> <span class="st0">&quot;Snapshot&quot;</span> <span class="br0">&#41;</span><span class="sy4">;</span>
	cvNamedWindow<span class="br0">&#40;</span> <span class="st0">&quot;Raw Video&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">//Allocate storage for the parameters according to total number of corners and number of snapshots</span>
	CvMat<span class="sy2">*</span> image_points      <span class="sy1">=</span> cvCreateMat<span class="br0">&#40;</span>n_boards<span class="sy2">*</span>board_total,2,CV_32FC1<span class="br0">&#41;</span><span class="sy4">;</span>
	CvMat<span class="sy2">*</span> object_points     <span class="sy1">=</span> cvCreateMat<span class="br0">&#40;</span>n_boards<span class="sy2">*</span>board_total,3,CV_32FC1<span class="br0">&#41;</span><span class="sy4">;</span>
	CvMat<span class="sy2">*</span> point_counts      <span class="sy1">=</span> cvCreateMat<span class="br0">&#40;</span>n_boards,1,CV_32SC1<span class="br0">&#41;</span><span class="sy4">;</span>
	CvMat<span class="sy2">*</span> intrinsic_matrix  <span class="sy1">=</span> cvCreateMat<span class="br0">&#40;</span>3,3,CV_32FC1<span class="br0">&#41;</span><span class="sy4">;</span>
	CvMat<span class="sy2">*</span> distortion_coeffs <span class="sy1">=</span> cvCreateMat<span class="br0">&#40;</span>4,1,CV_32FC1<span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">//Note:</span>
	<span class="co1">//Intrinsic Matrix - 3x3			   Lens Distorstion Matrix - 4x1</span>
	<span class="co1">//	[fx 0 cx]							[k1 k2 p1 p2   k3(optional)]</span>
	<span class="co1">//	[0 fy cy]</span>
	<span class="co1">//	[0  0  1]</span>
&nbsp;
	CvPoint2D32f<span class="sy2">*</span> corners <span class="sy1">=</span> <span class="kw3">new</span> CvPoint2D32f<span class="br0">&#91;</span> board_total <span class="br0">&#93;</span><span class="sy4">;</span>
	<span class="kw4">int</span> corner_count<span class="sy4">;</span>
	<span class="kw4">int</span> successes <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
	<span class="kw4">int</span> step, frame <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
&nbsp;
	IplImage <span class="sy2">*</span>image <span class="sy1">=</span> cvQueryFrame<span class="br0">&#40;</span> capture <span class="br0">&#41;</span><span class="sy4">;</span>
	IplImage <span class="sy2">*</span>gray_image <span class="sy1">=</span> cvCreateImage<span class="br0">&#40;</span>cvGetSize<span class="br0">&#40;</span>image<span class="br0">&#41;</span>,8,1<span class="br0">&#41;</span><span class="sy4">;</span>			<span class="co1">//subpixel</span>
&nbsp;
	<span class="co1">//Loop girdiginiz foto sayısı kadar başarılı örnek alırsa bitecek</span>
	<span class="co1">//Esc ile de cikabilirsiniz</span>
&nbsp;
	<span class="kw1">while</span><span class="br0">&#40;</span>successes <span class="sy1">&lt;</span> n_boards<span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span class="kw1">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span>frame<span class="sy2">++</span> <span class="sy2">%</span> frame_step<span class="br0">&#41;</span> <span class="sy1">==</span> <span class="nu0">0</span><span class="br0">&#41;</span>									<span class="co1">//frame gec</span>
		<span class="br0">&#123;</span>
			<span class="co1">//chessboard korner bul:</span>
			<span class="kw4">int</span> found <span class="sy1">=</span> cvFindChessboardCorners<span class="br0">&#40;</span>image, board_sz, corners, <span class="sy3">&amp;</span>corner_count,CV_CALIB_CB_ADAPTIVE_THRESH <span class="sy3">|</span> CV_CALIB_CB_FILTER_QUADS <span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
			cvCvtColor<span class="br0">&#40;</span>image, gray_image, CV_BGR2GRAY<span class="br0">&#41;</span><span class="sy4">;</span>										<span class="co1">//Get Subpixel accuracy on those corners</span>
			cvFindCornerSubPix<span class="br0">&#40;</span>gray_image, corners, corner_count, cvSize<span class="br0">&#40;</span>11,11<span class="br0">&#41;</span>,cvSize<span class="br0">&#40;</span><span class="sy2">-</span>1,<span class="sy2">-</span>1<span class="br0">&#41;</span>, cvTermCriteria<span class="br0">&#40;</span>CV_TERMCRIT_EPS<span class="sy2">+</span>CV_TERMCRIT_ITER, 30, 0.1 <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
			cvDrawChessboardCorners<span class="br0">&#40;</span>image, board_sz, corners, corner_count, found<span class="br0">&#41;</span><span class="sy4">;</span>			<span class="co1">//Draw it</span>
&nbsp;
			<span class="co1">// bulunduysa data olarak ekle</span>
			<span class="kw1">if</span><span class="br0">&#40;</span> corner_count <span class="sy1">==</span> board_total <span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				cvShowImage<span class="br0">&#40;</span> <span class="st0">&quot;Snapshot&quot;</span>, image <span class="br0">&#41;</span><span class="sy4">;</span>										<span class="co1">//bulunduysa fotoyu goster</span>
				step <span class="sy1">=</span> successes<span class="sy2">*</span>board_total<span class="sy4">;</span>
				<span class="kw1">for</span><span class="br0">&#40;</span> <span class="kw4">int</span> i<span class="sy1">=</span>step, j<span class="sy1">=</span><span class="nu0">0</span><span class="sy4">;</span> j<span class="sy1">&lt;</span>board_total<span class="sy4">;</span> <span class="sy2">++</span>i,<span class="sy2">++</span>j <span class="br0">&#41;</span> <span class="br0">&#123;</span>
				CV_MAT_ELEM<span class="br0">&#40;</span><span class="sy2">*</span>image_points, <span class="kw4">float</span>,i,0<span class="br0">&#41;</span> <span class="sy1">=</span> corners<span class="br0">&#91;</span>j<span class="br0">&#93;</span>.<span class="me1">x</span><span class="sy4">;</span>
				CV_MAT_ELEM<span class="br0">&#40;</span><span class="sy2">*</span>image_points, <span class="kw4">float</span>,i,1<span class="br0">&#41;</span> <span class="sy1">=</span> corners<span class="br0">&#91;</span>j<span class="br0">&#93;</span>.<span class="me1">y</span><span class="sy4">;</span>
				CV_MAT_ELEM<span class="br0">&#40;</span><span class="sy2">*</span>object_points,<span class="kw4">float</span>,i,0<span class="br0">&#41;</span> <span class="sy1">=</span> <span class="br0">&#40;</span><span class="kw4">float</span><span class="br0">&#41;</span> j<span class="sy2">/</span>board_w<span class="sy4">;</span>
				CV_MAT_ELEM<span class="br0">&#40;</span><span class="sy2">*</span>object_points,<span class="kw4">float</span>,i,1<span class="br0">&#41;</span> <span class="sy1">=</span> <span class="br0">&#40;</span><span class="kw4">float</span><span class="br0">&#41;</span> <span class="br0">&#40;</span>j<span class="sy2">%</span>board_w<span class="br0">&#41;</span><span class="sy4">;</span>
				CV_MAT_ELEM<span class="br0">&#40;</span><span class="sy2">*</span>object_points,<span class="kw4">float</span>,i,2<span class="br0">&#41;</span> <span class="sy1">=</span> <span class="nu17">0.0f</span><span class="sy4">;</span>
			<span class="br0">&#125;</span>
			CV_MAT_ELEM<span class="br0">&#40;</span><span class="sy2">*</span>point_counts, <span class="kw4">int</span>,successes,0<span class="br0">&#41;</span> <span class="sy1">=</span> board_total<span class="sy4">;</span>
			successes<span class="sy2">++</span><span class="sy4">;</span>
			<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es1">\r</span>%d foto basarili ,cekilmesi gereken = %d .&quot;</span>,successes,n_boards<span class="br0">&#41;</span><span class="sy4">;</span>
			<span class="br0">&#125;</span>
			<span class="kw1">else</span>
			cvShowImage<span class="br0">&#40;</span> <span class="st0">&quot;Snapshot&quot;</span>, gray_image <span class="br0">&#41;</span><span class="sy4">;</span>										<span class="co1">//gri fotoyu goster bulunmadıysa</span>
		<span class="br0">&#125;</span> 
&nbsp;
		<span class="co1">//durdurmak icin 'p', cikmak icin esc kullan</span>
		<span class="kw4">int</span> c <span class="sy1">=</span> cvWaitKey<span class="br0">&#40;</span>15<span class="br0">&#41;</span><span class="sy4">;</span>
		<span class="kw1">if</span><span class="br0">&#40;</span>c <span class="sy1">==</span> <span class="st0">'p'</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			c <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
			<span class="kw1">while</span><span class="br0">&#40;</span>c <span class="sy3">!</span><span class="sy1">=</span> <span class="st0">'p'</span> <span class="sy3">&amp;&amp;</span> c <span class="sy3">!</span><span class="sy1">=</span> 27<span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				c <span class="sy1">=</span> cvWaitKey<span class="br0">&#40;</span>250<span class="br0">&#41;</span><span class="sy4">;</span>
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
		<span class="kw1">if</span><span class="br0">&#40;</span>c <span class="sy1">==</span> 27<span class="br0">&#41;</span>
			<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
&nbsp;
		image <span class="sy1">=</span> cvQueryFrame<span class="br0">&#40;</span> capture <span class="br0">&#41;</span><span class="sy4">;</span>								<span class="co1">//Sonraki resim</span>
		cvShowImage<span class="br0">&#40;</span><span class="st0">&quot;Raw Video&quot;</span>, image<span class="br0">&#41;</span><span class="sy4">;</span>
	<span class="br0">&#125;</span> 
&nbsp;
	<span class="co1">//Butun veriler basarılı bir sekilde toplandı Kalibrasyon yapılabilir.</span>
&nbsp;
	cvDestroyWindow<span class="br0">&#40;</span><span class="st0">&quot;Snapshot&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es1">\n</span><span class="es1">\n</span> *** Kamera kalibrasyon islemi basliyor...<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">//Yer ayır</span>
	CvMat<span class="sy2">*</span> object_points2  <span class="sy1">=</span> cvCreateMat<span class="br0">&#40;</span>successes<span class="sy2">*</span>board_total,3,CV_32FC1<span class="br0">&#41;</span><span class="sy4">;</span>
	CvMat<span class="sy2">*</span> image_points2   <span class="sy1">=</span> cvCreateMat<span class="br0">&#40;</span>successes<span class="sy2">*</span>board_total,2,CV_32FC1<span class="br0">&#41;</span><span class="sy4">;</span>
	CvMat<span class="sy2">*</span> point_counts2   <span class="sy1">=</span> cvCreateMat<span class="br0">&#40;</span>successes,1,CV_32SC1<span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">//Point'leri matrislere tasi</span>
	<span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> i<span class="sy1">&lt;</span>successes<span class="sy2">*</span>board_total<span class="sy4">;</span> <span class="sy2">++</span>i<span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
      CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>image_points2, <span class="kw4">float</span>, i, 0<span class="br0">&#41;</span>  <span class="sy1">=</span>	CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>image_points, <span class="kw4">float</span>, i, 0<span class="br0">&#41;</span><span class="sy4">;</span>
      CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>image_points2, <span class="kw4">float</span>,i,1<span class="br0">&#41;</span>    <span class="sy1">=</span>	CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>image_points, <span class="kw4">float</span>, i, 1<span class="br0">&#41;</span><span class="sy4">;</span>
      CV_MAT_ELEM<span class="br0">&#40;</span><span class="sy2">*</span>object_points2, <span class="kw4">float</span>, i, 0<span class="br0">&#41;</span>  <span class="sy1">=</span>  CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>object_points, <span class="kw4">float</span>, i, 0<span class="br0">&#41;</span> <span class="sy4">;</span>
      CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>object_points2, <span class="kw4">float</span>, i, 1<span class="br0">&#41;</span> <span class="sy1">=</span>  CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>object_points, <span class="kw4">float</span>, i, 1<span class="br0">&#41;</span> <span class="sy4">;</span>
      CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>object_points2, <span class="kw4">float</span>, i, 2<span class="br0">&#41;</span> <span class="sy1">=</span>  CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>object_points, <span class="kw4">float</span>, i, 2<span class="br0">&#41;</span> <span class="sy4">;</span>
	<span class="br0">&#125;</span> 
&nbsp;
	<span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy1">=</span><span class="nu0">0</span><span class="sy4">;</span> i<span class="sy1">&lt;</span>successes<span class="sy4">;</span> <span class="sy2">++</span>i<span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>point_counts2, <span class="kw4">int</span>, i, 0<span class="br0">&#41;</span> <span class="sy1">=</span>  CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>point_counts, <span class="kw4">int</span>, i, 0<span class="br0">&#41;</span><span class="sy4">;</span>
	<span class="br0">&#125;</span>
	cvReleaseMat<span class="br0">&#40;</span><span class="sy3">&amp;</span>object_points<span class="br0">&#41;</span><span class="sy4">;</span>
	cvReleaseMat<span class="br0">&#40;</span><span class="sy3">&amp;</span>image_points<span class="br0">&#41;</span><span class="sy4">;</span>
	cvReleaseMat<span class="br0">&#40;</span><span class="sy3">&amp;</span>point_counts<span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">// Initialize the intrinsic matrix with both the two focal lengths in a ratio of 1.0</span>
&nbsp;
	CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>intrinsic_matrix, <span class="kw4">float</span>, 0, 0 <span class="br0">&#41;</span> <span class="sy1">=</span> <span class="nu17">1.0f</span><span class="sy4">;</span>
	CV_MAT_ELEM<span class="br0">&#40;</span> <span class="sy2">*</span>intrinsic_matrix, <span class="kw4">float</span>, 1, 1 <span class="br0">&#41;</span> <span class="sy1">=</span> <span class="nu17">1.0f</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">//kamera kalibrasyon fonk.</span>
	<span class="co1">//_____________________________________________________________________________________</span>
&nbsp;
	cvCalibrateCamera2<span class="br0">&#40;</span>object_points2, image_points2, point_counts2,  cvGetSize<span class="br0">&#40;</span> image <span class="br0">&#41;</span>, intrinsic_matrix, distortion_coeffs, <span class="kw2">NULL</span>, <span class="kw2">NULL</span>,0 <span class="br0">&#41;</span><span class="sy4">;</span>
																																		<span class="co1">//CV_CALIB_FIX_ASPECT_RATIO</span>
&nbsp;
	<span class="co1">//_____________________________________________________________________________________</span>
&nbsp;
	<span class="co1">//Kalibrasyon dosyalarını kaydet</span>
	<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot; *** Kalibrasyon islemi bitti!<span class="es1">\n</span><span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
	<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;Storing Intrinsics.xml and Distortions.xml files...<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
	cvSave<span class="br0">&#40;</span><span class="st0">&quot;Intrinsics.xml&quot;</span>,intrinsic_matrix<span class="br0">&#41;</span><span class="sy4">;</span>
	cvSave<span class="br0">&#40;</span><span class="st0">&quot;Distortion.xml&quot;</span>,distortion_coeffs<span class="br0">&#41;</span><span class="sy4">;</span>
	<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;Dosyalar kaydedildi.<span class="es1">\n</span><span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">//Yazdığımız dosyaları okuyalım</span>
	CvMat <span class="sy2">*</span>intrinsic <span class="sy1">=</span> <span class="br0">&#40;</span>CvMat<span class="sy2">*</span><span class="br0">&#41;</span>cvLoad<span class="br0">&#40;</span><span class="st0">&quot;Intrinsics.xml&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
	CvMat <span class="sy2">*</span>distortion <span class="sy1">=</span> <span class="br0">&#40;</span>CvMat<span class="sy2">*</span><span class="br0">&#41;</span>cvLoad<span class="br0">&#40;</span><span class="st0">&quot;Distortion.xml&quot;</span><span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">// Undistortion </span>
&nbsp;
	IplImage<span class="sy2">*</span> mapx <span class="sy1">=</span> cvCreateImage<span class="br0">&#40;</span> cvGetSize<span class="br0">&#40;</span>image<span class="br0">&#41;</span>, IPL_DEPTH_32F, 1 <span class="br0">&#41;</span><span class="sy4">;</span>
	IplImage<span class="sy2">*</span> mapy <span class="sy1">=</span> cvCreateImage<span class="br0">&#40;</span> cvGetSize<span class="br0">&#40;</span>image<span class="br0">&#41;</span>, IPL_DEPTH_32F, 1 <span class="br0">&#41;</span><span class="sy4">;</span>
	cvInitUndistortMap<span class="br0">&#40;</span>intrinsic,distortion,mapx,mapy<span class="br0">&#41;</span><span class="sy4">;</span>
&nbsp;
	<span class="co1">// Kamerayı dogrultulmus olarak kullanalım</span>
       <span class="co1">//Esc kullanarak cikabilirsiniz</span>
&nbsp;
	cvNamedWindow<span class="br0">&#40;</span> <span class="st0">&quot;Undistort&quot;</span> <span class="br0">&#41;</span><span class="sy4">;</span>
	<span class="kw1">while</span><span class="br0">&#40;</span>image<span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		IplImage <span class="sy2">*</span>t <span class="sy1">=</span> cvCloneImage<span class="br0">&#40;</span>image<span class="br0">&#41;</span><span class="sy4">;</span>
		cvShowImage<span class="br0">&#40;</span> <span class="st0">&quot;Raw Video&quot;</span>, image <span class="br0">&#41;</span><span class="sy4">;</span>			<span class="co1">// Show raw image</span>
		cvRemap<span class="br0">&#40;</span> t, image, mapx, mapy <span class="br0">&#41;</span><span class="sy4">;</span>			<span class="co1">// Undistort image</span>
		cvReleaseImage<span class="br0">&#40;</span><span class="sy3">&amp;</span>t<span class="br0">&#41;</span><span class="sy4">;</span>
		cvShowImage<span class="br0">&#40;</span><span class="st0">&quot;Undistort&quot;</span>, image<span class="br0">&#41;</span><span class="sy4">;</span>			<span class="co1">// Show corrected image</span>
&nbsp;
		<span class="co1">//Handle pause/unpause and ESC</span>
		<span class="kw4">int</span> c <span class="sy1">=</span> cvWaitKey<span class="br0">&#40;</span>15<span class="br0">&#41;</span><span class="sy4">;</span>
		<span class="kw1">if</span><span class="br0">&#40;</span>c <span class="sy1">==</span> <span class="st0">'p'</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			c <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
			<span class="kw1">while</span><span class="br0">&#40;</span>c <span class="sy3">!</span><span class="sy1">=</span> <span class="st0">'p'</span> <span class="sy3">&amp;&amp;</span> c <span class="sy3">!</span><span class="sy1">=</span> 27<span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				c <span class="sy1">=</span> cvWaitKey<span class="br0">&#40;</span>250<span class="br0">&#41;</span><span class="sy4">;</span>
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
		<span class="kw1">if</span><span class="br0">&#40;</span>c <span class="sy1">==</span> 27<span class="br0">&#41;</span>
			<span class="kw1">break</span><span class="sy4">;</span>
&nbsp;
		image <span class="sy1">=</span> cvQueryFrame<span class="br0">&#40;</span> capture <span class="br0">&#41;</span><span class="sy4">;</span>
	<span class="br0">&#125;</span> 
&nbsp;
	<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<p style="text-align: justify;">Kodda ilk olarak kaç tane örnek alacağınızı belirten kısım var. Buradan sonraki bölümde chessboard için verileri girmeniz gerkecek. Eğer benim paylaştığım chessboardu kullanıyorsanız kodda hiç bir değişiklik yapmanıza gerek yok. Başka bir chessboard kullanacaksanız buradaki board_w ve board_h değerlerini elinizdeki board&#8217;a göre değer atayın. Bu aşamayı geçtiyseniz kod chessboard köşelerini bularak örnekler almaya başlayacak. 54 köşe bulamazsa(9&#215;6 için) tekrar resim çekecek. Eğer köşeleri doğru bir şekilde bulursa bu resmin datalarını kaydedecek ileride kalibrasyon için kullanacak. İstenilen sayı kadar veri alındığında, OpenCV de bulunan cvCalibrate(&#8230;) fonksiyonu kullanılarak kalibrasyon yapılacak ve inrtinsic,distortion coefficient dosyalarını kaydedilecek.</p>
<p style="text-align: justify;">Buradan sonraki aşama kaydettiğimiz dosyaları okuyup hatasız görüntüyü (undistorted, calibrated) gösteren kamera kodunu çalıştıracak ve istediğiniz zaman &#8220;esc&#8221; tuşuna basarak çıkabileceksiniz.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Referans : Learning OpenCV Computer Vision with the OpenCV Library, OREILLY</p>
<h2  class="related_post_title">Benzer Başlıklar</h2><ul class="related_post"><li>01 Nisan 2012 -- <a href="http://e-atolye.net/2012/04/01/opencv-camera-calibration-1/" title="OpenCV- Camera Calibration-1">OpenCV- Camera Calibration-1</a> (1)</li><li>19 Mart 2012 -- <a href="http://e-atolye.net/2012/03/19/opencv-window7-visual-studio-kurulumu/" title="OpenCV- Window7 Visual Studio Kurulumu">OpenCV- Window7 Visual Studio Kurulumu</a> (0)</li><li>23 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/23/opencv-resmin-boyutlari-ile-oynama/" title="OpenCV- Resmin Boyutları İle Oynama">OpenCV- Resmin Boyutları İle Oynama</a> (0)</li><li>26 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/26/opencv-motion-finderkameradan-hareket-algilama/" title="OpenCV-Motion Finder,Kameradan Hareket Algılama">OpenCV-Motion Finder,Kameradan Hareket Algılama</a> (2)</li><li>11 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/11/opencv-resim-acma/" title="OpenCV &#8211; Resim Açma">OpenCV &#8211; Resim Açma</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://e-atolye.net/2012/04/06/opencv-camera-calibration-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenCV- Camera Calibration-1</title>
		<link>http://e-atolye.net/2012/04/01/opencv-camera-calibration-1/</link>
		<comments>http://e-atolye.net/2012/04/01/opencv-camera-calibration-1/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 12:47:01 +0000</pubDate>
		<dc:creator>İbrahim Atlı</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[C & C++]]></category>
		<category><![CDATA[İbrahim ATLI]]></category>
		<category><![CDATA[Camera Calibration]]></category>
		<category><![CDATA[Kamerayla hareket Algılama]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[OpenCV Camera Calib]]></category>
		<category><![CDATA[OpenCV motion detection]]></category>
		<category><![CDATA[OpenCV Motion Finder]]></category>
		<category><![CDATA[OpenCv öğren]]></category>
		<category><![CDATA[OpenCV örnek]]></category>
		<category><![CDATA[OpenCV resim açma]]></category>
		<category><![CDATA[OpenCV resim Boyutlandırma]]></category>
		<category><![CDATA[OpenCV resim küçültme]]></category>
		<category><![CDATA[Single Camera Calibration]]></category>
		<category><![CDATA[yeniden boyutlandırma]]></category>

		<guid isPermaLink="false">http://e-atolye.net/?p=760</guid>
		<description><![CDATA[Merhaba Arkadaşlar, Sizlere bu yazımda kamera kalibrasyonu hakkında bilgi verip, bunu OpenCV kullanarak nasıl gerçekleştirebileceğimizi göstereceğim. Öncelikle şunu söylemekte fayda var : Kameraların kullanım alanına göre bir çok çeşidi bulunmaktadır. Örneğin daha çok alanı görmek için tasarlanmış(180 derece açı ile görebilen kameralar) kameralar, fish eye dediğimiz görüntüyü kabartılmış gibi gösteren kameralar, düz kameralar(web-cam), odağı ayarlanabilen [...]]]></description>
			<content:encoded><![CDATA[<p>Merhaba Arkadaşlar,</p>
<p>Sizlere bu yazımda kamera kalibrasyonu hakkında bilgi verip, bunu OpenCV kullanarak nasıl gerçekleştirebileceğimizi göstereceğim. Öncelikle şunu söylemekte fayda var : Kameraların kullanım alanına göre bir çok çeşidi bulunmaktadır. Örneğin daha çok alanı görmek için tasarlanmış(180 derece açı ile görebilen kameralar) kameralar, fish eye dediğimiz görüntüyü kabartılmış gibi gösteren kameralar, düz kameralar(web-cam), odağı ayarlanabilen kameralar vs. Kamera kalibrasyonla ne olacak?</p>
<p><span id="more-760"></span></p>
<p>Her kameranın kendine has intrinsic parametreleri vardır. Bunlar kullanılan maddenin fiziksel özellikleri ile değişen parametrelerdir. Kullanılan mercek dahi bu parametreleri etkilemektedir. Daha sonra kameraların içindeki görüntü sensorleri(CCD sensor) lenslerin özellikleri her bir kamera için değişmektedir(lens distortions). Kameralar hakkında daha detaylı bilgi için <a title="Kamera Lens Özellikler" href="http://en.wikipedia.org/wiki/Camera_lens">buradaki linki</a> tıklayıp öğrenebilirsiniz. Burada hem lensler hem de görüntünün nasıl oluştuğu hakkında bilgi edinebilirsiniz.</p>
<p>OpenCV&#8217;de kalibrasyon yapacak olursanız, instinsic parametreleri ve distortion vector&#8217;ü kolayca bulabilirsiniz. Bunun için kolay bir yöntem olan chessboard kullanılır. Chessboard kullanmanın avantajı çoktur. Örneğin OpenCV&#8217;de cvFindChessboardCorners(&#8230;) fonksiyonu vardır. Tabi siz kalibrasyonu farklı bir şekilde yapmak isterseniz bunun için ayrı bir c dosyası yazmanız gerekir. Çünkü kalibrasyonu yapacağınız object&#8217;i tanımlamanız gerekecektir. Diğer bir avantaj ise radial distortions&#8217;ları bulmak daha kolay olmakta. Radial distortion dediğimiz olay gerçek hayatta gördüğümüz düz kenarlı bir cismi resimde yuvarlakmış gibi gözükmesidir. Resme bakarak daha iyi anlayacağınızı umuyorum.</p>
<div id="attachment_761" class="wp-caption aligncenter" style="width: 310px"><a href="http://e-atolye.net/2012/04/01/opencv-camera-calibration-1/radialdist/" rel="attachment wp-att-761"><img class="size-medium wp-image-761" title="radialDist" src="http://e-atolye.net/wp-content/uploads/2012/04/radialDist-300x126.jpg" alt="radial distortion efekti" width="300" height="126" /></a><p class="wp-caption-text">Radial Distortions</p></div>
<p>İşte bu parametrelerle, resmin doğrultulmuş şeklini elde edeceğiz. Şimdi Camera&#8217;nın parametreleri tutacak olan M ve D matrislerinin neler olduklarına bir göz atalım. M matrisi :</p>
<div id="attachment_762" class="wp-caption aligncenter" style="width: 144px"><a href="http://e-atolye.net/2012/04/01/opencv-camera-calibration-1/m_matrix/" rel="attachment wp-att-762"><img class="size-full wp-image-762" title="M_matrix" src="http://e-atolye.net/wp-content/uploads/2012/04/M_matrix.jpg" alt="" width="134" height="99" /></a><p class="wp-caption-text">M Matrisi</p></div>
<p>M matrisi yukarıda görüldüğü gibi bir matrisdir. Burada fx, fy olarak adlandırılan parametreler focal length olarak literatürde geçer. cx,cy ise kameranın merkezinin koordinatları için verilmiştir. Teorik olarak kameranın merkezi, resmin merkezinin olduğu yerdir fakat bu pratikte üretim aşamasında merkez tam olarak ayarlanamıyor. Bu gibi nedenlerden dolayı kamera hakkındaki bu bilgileri yazılımsal olarak elde etmek mümkün.</p>
<p>Yukarıda verdiğim linki okuduysanız, fx ve fy&#8217;nin neler olduğunu anlayabilirsiniz. Burada bir cümleyle ne olduğunu açıklamaya çalışacağım ve bunu resimle desteklemeye çalışacağım. Gerçekte resim X boyutunda ve kameradan uzaklığı Z olsun. Bunun resmin üstündeki boyu x ve lense olan uzaklığından kaynaklanan ise f.  Benzer üçgenlerden -x= f(X/Z) şeklinde bir formul yazabiliriz.</p>
<p><a href="http://e-atolye.net/2012/04/01/opencv-camera-calibration-1/focallenght/" rel="attachment wp-att-763"><img class="aligncenter size-medium wp-image-763" title="focalLenght" src="http://e-atolye.net/wp-content/uploads/2012/04/focalLenght-300x123.jpg" alt="" width="300" height="123" /></a></p>
<p>Daha detaylı bilgi için yukarıda verdiğim linkteki yazıyı okuyabilirsiniz. Ben buradaki bilgilere &#8220;Learning OpenCV Computer Vision with the OpenCV Library&#8221; kitaptan öğrendim. Size de önerebileceğim güzel bir kitaptır.</p>
<p><span style="text-decoration: underline; color: #0000ff;">Bir sonraki yazımda Camera Calibration source kodu&#8217;nu yazıp, çalıştırıp paylaşacağım. Bir sonraki yazıda görüşmek üzere&#8230;</span></p>
<h2  class="related_post_title">Benzer Başlıklar</h2><ul class="related_post"><li>06 Nisan 2012 -- <a href="http://e-atolye.net/2012/04/06/opencv-camera-calibration-2/" title="OpenCV- Camera Calibration-2">OpenCV- Camera Calibration-2</a> (1)</li><li>19 Mart 2012 -- <a href="http://e-atolye.net/2012/03/19/opencv-window7-visual-studio-kurulumu/" title="OpenCV- Window7 Visual Studio Kurulumu">OpenCV- Window7 Visual Studio Kurulumu</a> (0)</li><li>23 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/23/opencv-resmin-boyutlari-ile-oynama/" title="OpenCV- Resmin Boyutları İle Oynama">OpenCV- Resmin Boyutları İle Oynama</a> (0)</li><li>26 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/26/opencv-motion-finderkameradan-hareket-algilama/" title="OpenCV-Motion Finder,Kameradan Hareket Algılama">OpenCV-Motion Finder,Kameradan Hareket Algılama</a> (2)</li><li>11 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/11/opencv-resim-acma/" title="OpenCV &#8211; Resim Açma">OpenCV &#8211; Resim Açma</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://e-atolye.net/2012/04/01/opencv-camera-calibration-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VHDL Dili ve FPGA Uygulamaları Eğitimi</title>
		<link>http://e-atolye.net/2012/03/26/vhdl-dili-ve-fpga-uygulamalari-egitimi/</link>
		<comments>http://e-atolye.net/2012/03/26/vhdl-dili-ve-fpga-uygulamalari-egitimi/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 10:18:46 +0000</pubDate>
		<dc:creator>cacarbay</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Caner ACARBAY]]></category>
		<category><![CDATA[Emrah ABTİOĞLU]]></category>
		<category><![CDATA[VHDL]]></category>
		<category><![CDATA[VHDL Dili ve FPGA Uygulamaları Eğitimi]]></category>
		<category><![CDATA[VHDL Eğitimi]]></category>
		<category><![CDATA[VHDL Kursu]]></category>
		<category><![CDATA[VHDL öğren]]></category>
		<category><![CDATA[VHDL'in Yapısı]]></category>

		<guid isPermaLink="false">http://e-atolye.net/?p=755</guid>
		<description><![CDATA[Arkadaşlar Merhaba; Bu yazıda Emrah Abtioğlu ve benim tarıfımdan 19-21 Nisan 2012 tarihleri arasında İstanbul&#8217;da verilecek VHDL eğitimi hakkında detaylı bilgiyi bulacaksınız. Eğitimi Çizgi-tagem adına İstanbul&#8217;da vereceğiz. Eğitim hakkında detaylı bilgiyi ve  içeriği konunun devamında bulabilirsiniz. Eğitim İçeriği : Quartus Programının Kulanımı Şematik tasarım ve uygulama VHDL&#8217;e Giriş Kütüphaneler Syntax Entity Architecture Önceki günle ilgili(VHDL [...]]]></description>
			<content:encoded><![CDATA[<p>Arkadaşlar Merhaba;</p>
<p>Bu yazıda Emrah Abtioğlu ve benim tarıfımdan 19-21 Nisan 2012 tarihleri arasında İstanbul&#8217;da verilecek VHDL eğitimi hakkında detaylı bilgiyi bulacaksınız. Eğitimi Çizgi-tagem adına İstanbul&#8217;da vereceğiz. Eğitim hakkında detaylı bilgiyi ve  içeriği konunun devamında bulabilirsiniz.</p>
<p style="text-align: center;"><a href="http://e-atolye.net/2012/03/26/vhdl-dili-ve-fpga-uygulamalari-egitimi/egitim_caner/" rel="attachment wp-att-756"><img class="aligncenter  wp-image-756" title="Eğitim_Caner" src="http://e-atolye.net/wp-content/uploads/2012/03/Eğitim_Caner.jpg" alt="" width="548" height="174" /></a></p>
<p style="text-align: center;"><span id="more-755"></span></p>
<p>Eğitim İçeriği :</p>
<ul>
<li>Quartus Programının Kulanımı</li>
<li>Şematik tasarım ve uygulama</li>
<li>VHDL&#8217;e Giriş
<ul>
<li>Kütüphaneler</li>
<li>Syntax</li>
<li>Entity</li>
<li>Architecture</li>
</ul>
</li>
</ul>
<ul>
<li>Önceki günle ilgili(VHDL ile ilgili)  uygulamalar</li>
<li>VHDL&#8217;de Process ve Component Kullanımı</li>
<li>VHDL uygulamarı</li>
<li>Testbench Yazılımı ve Model-Sim Kullanımı</li>
<li>Megawizard ile IP Kullanımı</li>
<li>Sistem tasarım örneği(ALU, Çarpma Ünitesi vb.)</li>
</ul>
<div>Eğitimler Tübider&#8217;in sınıflarında gerçekleştirilecektir. Kroki için <a href="http://www.voctest.org/page.aspx?f=contact" target="_blank">tıklayınız.</a></div>
<p><strong>Emrah Abtioğlu</strong></p>
<p>Sayısal sistemlerin tasarımıyla üç yıldır uğraşan Emrah ABTİOĞLU, VHDL Dili&#8217;ni öğrenmeye ve FPGA ile ilgili çalışmalarına iki yıl önce başladı. Bu süreç içerisinde mantık devreleri tasarımı, Xilinx tarafından sunulan soft işlemci PicoBlaze ile sistem tasarımı, ve 32-bit single-cycle ve multi-cycle MIPS işlemcisinin(sınırlı sayıda komut destekleyen) FPGA üzerinde tasarımını gerçekleştirmiştir. Caner ACARBAY ile birlikte çalıştıkları bitirme tezinde, MicroBlaze ve PowerPC işlemcilerini kullanarak, FPGA üzerinde C dili ile uygulama geliştirme, donanım hızlandırma teknikleri vb. konular üzerinde çalışmaktadırlar.</p>
<p><strong>Caner Acarbay </strong></p>
<p>Elektrik Elektronik Mühendisliği son sınıf öğrencisi olan Caner Acarbay, VHDL dilini kullanarak donanım tanımlamaya iki yıl önce başlamıştır. Bu süre zarfında çeşitli sayısal sistemlerin alt bileşenlerini tasarlamıştır. Xilinx ve Altera firmasının çeşitli kartlarını kullanarak klavye ve fare kontrol devresinin tasarımını gerçekleştirmiştir.Lisans bitirme çalışmasında Emrah ABTİOĞLU ile birlikte FPGA dilini kullanarak Gömülü Sistem Tasarımı gerçekleştirmektedir.  Çalışmalarında De2, Virtex ve Spartan 3 kitlerini kullanarak mikroişlemci tasarımı, mantık devrelerinin gerçekleştirilmesi gibi uygulamalara ek olarak FPGA üzerinde sayısal sistem tasarımı üzerinde çalışmaktadır.</p>
<p>Detaylı bilgiye <a href="http://www.cizgi-tagem.org/education/detail.aspx?id=27" target="_blank">buradan</a> erişebilirsiniz.</p>
<h2  class="related_post_title">Benzer Başlıklar</h2><ul class="related_post"><li>02 Ocak 2012 -- <a href="http://e-atolye.net/2012/01/02/fpga-ile-alu-tasarimi/" title="FPGA ile ALU Tasarımı">FPGA ile ALU Tasarımı</a> (0)</li><li>20 Aralık 2011 -- <a href="http://e-atolye.net/2011/12/20/vhdlin-yapisi/" title="VHDL&#8217;in Yapısı">VHDL&#8217;in Yapısı</a> (0)</li><li>04 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/04/single-cycle-mips-islemci-adim6/" title="Single Cycle MIPS İşlemci &#8211; Adım6">Single Cycle MIPS İşlemci &#8211; Adım6</a> (0)</li><li>03 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/03/single-cycle-mips-islemci-adim5/" title="Single Cycle MIPS İşlemci &#8211; Adım5">Single Cycle MIPS İşlemci &#8211; Adım5</a> (0)</li><li>02 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/02/single-cycle-mips-islemci-adim4/" title="Single Cycle MIPS İşlemci &#8211; Adım4">Single Cycle MIPS İşlemci &#8211; Adım4</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://e-atolye.net/2012/03/26/vhdl-dili-ve-fpga-uygulamalari-egitimi/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Image Processing- Resmi Boyutlandırma, Sağ-Sol-Yatay-Dikey Döndürme</title>
		<link>http://e-atolye.net/2012/03/20/image-processing-resmi-boyutlandirma-sag-sol-yatay-dikey-dondurme/</link>
		<comments>http://e-atolye.net/2012/03/20/image-processing-resmi-boyutlandirma-sag-sol-yatay-dikey-dondurme/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 17:16:35 +0000</pubDate>
		<dc:creator>eozturk</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Elif ÖZTÜRK]]></category>
		<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[image left rotate]]></category>
		<category><![CDATA[image processing]]></category>
		<category><![CDATA[image processing resize]]></category>
		<category><![CDATA[image processing rotate]]></category>
		<category><![CDATA[image resize]]></category>
		<category><![CDATA[image right rotate]]></category>
		<category><![CDATA[image rotate]]></category>
		<category><![CDATA[matlab code without imrotate]]></category>
		<category><![CDATA[matlab fonksiyon]]></category>
		<category><![CDATA[matlab fonksiyon yazma]]></category>
		<category><![CDATA[matlab görüntü]]></category>
		<category><![CDATA[matlab image flip horizontal]]></category>
		<category><![CDATA[matlab image flip veritcal]]></category>
		<category><![CDATA[matlab image left rotate]]></category>
		<category><![CDATA[matlab image resize]]></category>
		<category><![CDATA[matlab image right rotae]]></category>
		<category><![CDATA[matlab image rotate]]></category>
		<category><![CDATA[matlab imresize]]></category>
		<category><![CDATA[matlab imrotate]]></category>
		<category><![CDATA[matlab resize]]></category>
		<category><![CDATA[matlab rotate]]></category>
		<category><![CDATA[resize in matlab]]></category>
		<category><![CDATA[rotate left right]]></category>

		<guid isPermaLink="false">http://e-atolye.net/?p=746</guid>
		<description><![CDATA[Merhaba arkadaşlar, bugün sizlerle Image Processing  de uygulamaları ve hazır fonksiyonları bulunan resmi vertical, horizontal, sola döndürme, sağa döndürme ve image resize(yeniden boyutlandırma) konularını göreceğiz. Fakat bu yazımızda Matlab’ın bu konulardaki hazır fonksiyonlarını (imrotate,imresize vb) kullanmayacağız, kendimiz bu fonksiyonları yazacağız. 1)İlk olarak resmi vertical olarak çevireceğiz. Aşağıda örnek bir resmimiz var. Resmimiz 403*500*3 truecolor bir [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Merhaba arkadaşlar, bugün sizlerle Image Processing  de uygulamaları ve hazır fonksiyonları bulunan resmi vertical, horizontal, sola döndürme, sağa döndürme ve image resize(yeniden boyutlandırma) konularını göreceğiz. Fakat bu yazımızda Matlab’ın bu konulardaki hazır fonksiyonlarını (imrotate,imresize vb) kullanmayacağız, kendimiz bu fonksiyonları yazacağız.</p>
<p style="text-align: justify;">1)İlk olarak resmi vertical olarak çevireceğiz. Aşağıda örnek bir resmimiz var. Resmimiz 403*500*3 truecolor bir image.</p>
<p style="text-align: justify;">
<div class="mceTemp mceIEcenter" style="text-align: justify;">
<dl id="attachment_747" class="wp-caption aligncenter" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://e-atolye.net/2012/03/20/image-processing-resmi-boyutlandirma-sag-sol-yatay-dikey-dondurme/sample_img/" rel="attachment wp-att-747"><img class="size-medium wp-image-747" title="sample_img" src="http://e-atolye.net/wp-content/uploads/2012/03/sample_img-300x241.jpg" alt="" width="300" height="241" /><span id="more-746"></span></a></dt>
<dd class="wp-caption-dd">&#8212;Orjinal Resim&#8212;</dd>
</dl>
</div>
<p style="text-align: justify;">Vertical olarak çevirmek için ; imagemizin en sol üst köşesi en sağ alt köşesine , en sağ üst köşeside en sol alt köşesine denk gelecek şekilde orjinal imagemizdeki matris değerlerini yeni oluşturduğumuz matris değerinin en altından başlayarak yerleştiriyoruz.Ve Matlab kodumuz aşağıdaki gibi oluyor:</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;"><div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">function image_flipvertical = flipvertical(picture_jpg)
&nbsp;
output_flipvertical=  imread(picture_jpg,'jpg'); %image oku
&nbsp;
size_matrix(1,:) =size(output_flipvertical);  %size bul
&nbsp;
Y= size_matrix(1,1); %row
&nbsp;
X= size_matrix(1,2);  %col
&nbsp;
for i=1:Y
&nbsp;
    for k=1:X
&nbsp;
     image_flipvertical(Y,k,:)= output_flipvertical(i,k,:);   %orjinal resimin en ust satirdaki degerini yeni resmin en alt degeri yap
&nbsp;
     image_flipvertical(i,k,:)= output_flipvertical(Y,k,:);   %orjinal resimin en alt satirdaki degerini yeni resmin en ust degeri yap
&nbsp;
     end
&nbsp;
    Y=Y-1;  %gercek satir degerini azalt, satiri isledigimiz icin
&nbsp;
end
&nbsp;
figure  
&nbsp;
image(image_flipvertical)  %yeni image goster
&nbsp;
title('Vertical Flip')</pre></div></div></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Ve çıktımız:</p>
<div class="mceTemp mceIEcenter" style="text-align: justify;">
<dl id="attachment_748" class="wp-caption aligncenter" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://e-atolye.net/2012/03/20/image-processing-resmi-boyutlandirma-sag-sol-yatay-dikey-dondurme/verticalflip/" rel="attachment wp-att-748"><img class="size-medium wp-image-748" title="verticalflip" src="http://e-atolye.net/wp-content/uploads/2012/03/verticalflip-300x255.png" alt="" width="300" height="255" /></a></dt>
<dd class="wp-caption-dd">&#8212;Vertical Flip&#8212;</dd>
</dl>
</div>
<p style="text-align: justify;">2) Resmi horizontal olarak çevirme:</p>
<p style="text-align: justify;">Burada da resmin en sol üst köşesi  yeni imagemizin en sağ köşesinin değerlerini oluşturuyor. Tek tek en üst satırdan itibaren son satıra kadar tüm sütunları yeni imagemize aktarıyoruz. Matlab kodumuzda şu şekilde oluyor:</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;"><div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">function image_fliphorizontal = fliphorizontal(picture_jpg)
&nbsp;
output_fliphorizontal=  imread(picture_jpg,'jpg'); %image oku
&nbsp;
size_matrix(1,:) =size(output_fliphorizontal);  %size bul
&nbsp;
Y= size_matrix(1,1); %row
&nbsp;
X= size_matrix(1,2);  %col
&nbsp;
t=1;
&nbsp;
for k=1:X  %col
&nbsp;
    for i=1:Y  %row
&nbsp;
     image_fliphorizontal(i,t,:)= output_fliphorizontal(i,X,:);                      
&nbsp;
     image_fliphorizontal(i,X,:)= output_fliphorizontal(i,t,:);
&nbsp;
     i=i+1;
&nbsp;
    end
&nbsp;
    t=t+1;  %satir degerini arttir
&nbsp;
    X = X -1;
&nbsp;
end
&nbsp;
figure  
&nbsp;
image(image_fliphorizontal)  %yeni image goster
&nbsp;
title('Horizontal Flip')</pre></div></div></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Ve çıktımız:</p>
<div class="mceTemp mceIEcenter" style="text-align: justify;">
<dl id="attachment_749" class="wp-caption aligncenter" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://e-atolye.net/2012/03/20/image-processing-resmi-boyutlandirma-sag-sol-yatay-dikey-dondurme/horizontalflip/" rel="attachment wp-att-749"><img class="size-medium wp-image-749" title="horizontalflip" src="http://e-atolye.net/wp-content/uploads/2012/03/horizontalflip-300x264.png" alt="" width="300" height="264" /></a></dt>
<dd class="wp-caption-dd">&#8212;Horizontal Flip&#8212;</dd>
</dl>
</div>
<p style="text-align: justify;">3)Resmimizi sola döndürme:  Burada da orjinal imagemizin tüm satır değerlerini alıyoruz yeni imagemizin tüm ilk sütunundan başlayarak tek tek satır değerlerini işliyoruz.Matlab kodumuz şu şekilde oluyor:</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;"><div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">function image_rotateleft = rotateleft(picture_jpg)
&nbsp;
output_rotateleft=  imread(picture_jpg,'jpg'); %image oku
&nbsp;
size_matrix(1,:) =size(output_rotateleft);  %size bul
&nbsp;
Y= size_matrix(1,1); %row
&nbsp;
X= size_matrix(1,2);  %col
&nbsp;
for i=1:Y
&nbsp;
    t=1;   % yeni image satır sayısı
&nbsp;
    N=X;   % her defasında eski imageden okuyacagimiz sutun sayısını sabit tutuyoruz
&nbsp;
    for k=1:N
&nbsp;
        image_rotateleft(t,i,:) = output_rotateleft(i,N,:);   %eski image'in satırını komple yeni image'in sutunu yapıyoruz
&nbsp;
        t=t+1;
&nbsp;
        N=N-1;
&nbsp;
    end
&nbsp;
end
&nbsp;
figure  
&nbsp;
image(image_rotateleft)  %yeni image goster
&nbsp;
title('Rotate Left')</pre></div></div></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Ve çıktımız:</p>
<div class="mceTemp mceIEcenter" style="text-align: justify;">
<dl id="attachment_750" class="wp-caption aligncenter" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://e-atolye.net/2012/03/20/image-processing-resmi-boyutlandirma-sag-sol-yatay-dikey-dondurme/rotateleft/" rel="attachment wp-att-750"><img class="size-medium wp-image-750" title="rotateleft" src="http://e-atolye.net/wp-content/uploads/2012/03/rotateleft-300x262.png" alt="" width="300" height="262" /></a></dt>
<dd class="wp-caption-dd">&#8212;Rotate Left&#8212;</dd>
</dl>
</div>
<p style="text-align: justify;">4)Resmimizi sağa döndürme: Burada da orjinal image yine ilk satırından başlayarak tüm değerlerini alıyoruz yeni imagemizin son sutunundan geriye doğru satır değerlerini yazıyoruz. Yani orjinal resimdeki ilk satır yeni resimdeki N. sutun, orjinal 2. satır yeni N-1. sutun &#8230;. şeklinde devam ediyor. Matlab Kodu:</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;"><div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">function image_rotateright = rotateright(picture_jpg)
&nbsp;
output_rotateright=  imread(picture_jpg,'jpg'); %image oku
&nbsp;
size_matrix(1,:) =size(output_rotateright);  %size bul
&nbsp;
Y= size_matrix(1,1); %row
&nbsp;
X= size_matrix(1,2);  %col
&nbsp;
N=X;   % her defasında eski imageden okuayacagimiz sutun sayısını sabit tutuyoruz
&nbsp;
for i=1:X 
&nbsp;
    M=Y;
&nbsp;
    for k=1:Y
&nbsp;
        image_rotateright(N,k,:) = output_rotateright(M,N,:); 
&nbsp;
        M=M-1;
&nbsp;
    end
&nbsp;
    N=N-1;
&nbsp;
end
&nbsp;
figure  
&nbsp;
image(image_rotateright)  %yeni image goster
&nbsp;
title('Rotate Right')</pre></div></div></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Ve çıktımız:</p>
<p style="text-align: justify;">
<div class="mceTemp mceIEcenter" style="text-align: justify;">
<dl id="attachment_751" class="wp-caption aligncenter" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://e-atolye.net/2012/03/20/image-processing-resmi-boyutlandirma-sag-sol-yatay-dikey-dondurme/rotateright/" rel="attachment wp-att-751"><img class="size-medium wp-image-751" title="rotateright" src="http://e-atolye.net/wp-content/uploads/2012/03/rotateright-300x261.png" alt="" width="300" height="261" /></a></dt>
<dd class="wp-caption-dd">&#8212;Rotate Right&#8212;</dd>
</dl>
</div>
<p style="text-align: justify;">5) Resmi Yarı yarıya boyutlandırma:  İsterseniz tek sütun değerlerini veya çift sütun değerlerini resimden çıkartarak boyutlandırma işlemini yapabilirsiniz. Aşağıdaki kodda ilk ve son sütun değerlerini işleme sokmadım, birer alıp birer almayarak resmi yeniden boyutlandırdım. Matlab Kodu:</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;"><div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">function image_resize = resize(picture_jpg);
&nbsp;
output_resize=  imread(picture_jpg,'jpg'); %image oku
&nbsp;
size_matrix(1,:) =size(output_resize);  %size bul
&nbsp;
Y= size_matrix(1,1); %row
&nbsp;
X= size_matrix(1,2);  %col
&nbsp;
for i=1:((Y-1)/2)
&nbsp;
for j=1:((X-1)/2)
&nbsp;
image_resize(i,j,:) = output_resize((2*i-1),(2*j-1),:);
&nbsp;
end
&nbsp;
end
&nbsp;
figure
&nbsp;
image(image_resize)  %yeni image goster
&nbsp;
title('Resize image')</pre></div></div></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Ve çıktımız:</p>
<div class="mceTemp mceIEcenter" style="text-align: justify;">
<dl id="attachment_752" class="wp-caption aligncenter" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://e-atolye.net/2012/03/20/image-processing-resmi-boyutlandirma-sag-sol-yatay-dikey-dondurme/resizeimage/" rel="attachment wp-att-752"><img class="size-medium wp-image-752" title="resizeimage" src="http://e-atolye.net/wp-content/uploads/2012/03/resizeimage-300x263.png" alt="" width="300" height="263" /></a></dt>
<dd class="wp-caption-dd">&#8212;Resize Image&#8212;</dd>
</dl>
</div>
<p style="text-align: justify;">
<p style="text-align: justify;">Umarım faydalı olmuştur Arkadaşlar, sizlerde farklı yollar kullanarak resminizi sağa, sola, yatay, dikey döndürebilir veya yeniden boyutlandırabilirsiniz hatta bir sütunun değerlerini yanına istediğiniz kadar kopyalayıp resminizi büyütebilirsiniz. Görüşmek üzere <img src='http://e-atolye.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<h2  class="related_post_title">Benzer Başlıklar</h2><ul class="related_post"><li>07 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/07/matlabda-fonksiyon-yazma-ve-resmi-siyah-beyaz-yapma/" title="Matlab&#8217;da fonksiyon yazma ve Resmi Siyah Beyaz Yapma">Matlab&#8217;da fonksiyon yazma ve Resmi Siyah Beyaz Yapma</a> (0)</li><li>09 Nisan 2012 -- <a href="http://e-atolye.net/2012/04/09/image-processing-average-filtering-yontemi/" title="Image Processing- Average Filtering Yöntemi">Image Processing- Average Filtering Yöntemi</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://e-atolye.net/2012/03/20/image-processing-resmi-boyutlandirma-sag-sol-yatay-dikey-dondurme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kızılötesi Haberleşmeli PC Kontrolü (4)</title>
		<link>http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/</link>
		<comments>http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 21:43:48 +0000</pubDate>
		<dc:creator>İsmail ÇUKUR</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Gömülü Sistemler]]></category>
		<category><![CDATA[İsmail Çukur]]></category>
		<category><![CDATA[PIC]]></category>
		<category><![CDATA[Yazarlar]]></category>
		<category><![CDATA[Asenkron]]></category>
		<category><![CDATA[haberleşme]]></category>
		<category><![CDATA[infrared]]></category>
		<category><![CDATA[Kızılötesi]]></category>
		<category><![CDATA[Kontrol]]></category>
		<category><![CDATA[Mikroişlemci]]></category>
		<category><![CDATA[pc kontrolü]]></category>
		<category><![CDATA[PC Remote Control]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[PIC öğren]]></category>
		<category><![CDATA[pic programalama]]></category>
		<category><![CDATA[PIC programlama]]></category>

		<guid isPermaLink="false">http://e-atolye.net/?p=702</guid>
		<description><![CDATA[ALICI KARTI Alıcı kartı bilgisayar üzerinde yüklenmiş olan kullanıcı ara yüz programı ile kullanıcının kontrol sinyalleri gönderdiği verici kartı arasında köprü görevi görerek bu iki kısmın haberleşmesini sağlamaktadır. Alıcı Kartında Kullanılan Devre Elemanları Alıcı kartında kullanılan devre elemanlarından bazıları ve bu elemanların teknik özellikleri bu bölümde anlatılacaktır. Kullanılan elemanların listesi aşağıdaki çizelgede verilmiştir. Seri port [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong>ALICI KARTI </strong></p>
<p style="text-align: justify;">Alıcı kartı bilgisayar üzerinde yüklenmiş olan kullanıcı ara yüz programı ile kullanıcının kontrol sinyalleri gönderdiği verici kartı arasında köprü görevi görerek bu iki kısmın haberleşmesini sağlamaktadır.</p>
<p style="text-align: justify;"><strong>Alıcı Kartında Kullanılan Devre Elemanları </strong></p>
<p style="text-align: justify;">Alıcı kartında kullanılan devre elemanlarından bazıları ve bu elemanların teknik özellikleri bu bölümde anlatılacaktır. Kullanılan elemanların listesi aşağıdaki çizelgede verilmiştir.<span id="more-702"></span></p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/alici_malzeme/" rel="attachment wp-att-733"><img class="aligncenter size-full wp-image-733" title="Alıcı_Malzeme" src="http://e-atolye.net/wp-content/uploads/2012/03/Alıcı_Malzeme.jpg" alt="" width="336" height="360" /></a></p>
<p style="text-align: justify;"><strong>Seri port ve RS232 standartları </strong></p>
<p style="text-align: justify;">RS232 seri iletişim metodu çok yaygın olarak kullanılmaktadır. Örneğin her PC&#8217;nin arkasında COM1 ve COM2 seri portları bulunmaktadır. Önceleri yazıcılara bağlanan bu portlar şimdi daha çok fare, tablet gibi cihazlara bağlanmaktadır. Genel olarak bir karakter seri iletişimde 10 bit olarak gönderilmektedir. Bunun 8 biti veri, 1 biti start bit ve bir biti de stop bittir. Seri portun iletişim hızı Baud oranı olarak bilinmektedir. Baud oranı 1 saniyede gönderilen bit sayısı olarak da bilinmektedir. Yaygın olarak kullanılan Baud oranları 4800, 9600, 19200, 38400 vb. dir. 9600 Baud oranında çalışan bir seri iletişim cihazı saniyede 960 karakter gönderebilir (veya alabilir). RS232 seri iletişim tekniğinin en önemli avantajları sadece birkaç tane kabloya gerek olması ve iletişim kurmanın son derece kolay oluşudur. Bu teknik ile birkaç yüz metre uzaklığa veri göndermek mümkündür. Seri iletişim kurarken USART diye bilinen entegre devre zamanlamayı oluşturur ve seri iletişimin otomatik olarak CPU&#8217;dan ayrı bir şekilde yapılmasını sağlar. USART sadece daha pahalı olan mikrokontrolörlerde bulunmaktadır. (Örneğin PIC16F628) PIC16F84 gibi daha ucuz olan mikrokontrolörlerde seri iletişim için dıştan USART devresi kullanmamız mümkündür. Fakat genellikle seri iletişim için mikrokontrolörün herhangi bir portu kullanılabilir ve iletişim tamamıyla yazılımla kontrol edilebilir.</p>
<p style="text-align: justify;">Mikrodenetleyiciler ile diğer mikrodenetleyiciler, cihazlar, bilgisayarlar arasında iletişim kurmak istenildiğinde kullanılan metotlardan bir kaçı seri ve paralel iletişimdir. Paralel iletişimde 8 bit bilgi, 8 adet data kablosuyla gerekli aygıtlara bağlanır ve iletişim sağlanır. Fakat bu uzun mesafelerde fazla kablo kullanımına yol açmaktadır. Paralel iletişimden yavaş olmasına karşın bu sorunu aşmak için kullanılan seri iletişim protokolünde ise sadece 2 adet veri kablosu kullanılır ve bilgi yine bu iki kablo üzerinden alınır veya gönderilir.</p>
<p style="text-align: justify;">Seri haberleşme protokolü kendi içerisinde senkron ve asenkron olmak üzere ikiye ayrılır;</p>
<p style="text-align: justify;"><strong>Senkron Seri İletişim: </strong>Senkron seri iletişimde, yardımcı bir saat işareti kullanılır. Gönderilecek veya alınacak bilgi bu saat işaretine uyarak gelmek veya gönderilmek zorundadır. Hızlı iletişim yapılacağı zaman bu iletişim metodu kullanılır.</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/senkron/" rel="attachment wp-att-735"><img class="aligncenter size-full wp-image-735" title="senkron" src="http://e-atolye.net/wp-content/uploads/2012/03/senkron.jpg" alt="" width="448" height="153" /></a></p>
<p style="text-align: justify;"><strong>Asenkron Seri İletişim: </strong>Asenkron seri iletişim, yardımcı bir saat işareti yerine başlangıç, bitiş bitleri ile kontrol edilir. Herhangi bir anda iletişim başlatılabilir veya durdurulabilir. İletişim bittiği zaman hat IDLE denilen duruma geçer. Senkron seri iletişime göre yavaştır.</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/asenkron/" rel="attachment wp-att-736"><img class="aligncenter size-full wp-image-736" title="asenkron" src="http://e-atolye.net/wp-content/uploads/2012/03/asenkron.jpg" alt="" width="448" height="99" /></a></p>
<p style="text-align: justify;"><strong>TSOP1236 </strong></p>
<p style="text-align: justify;">TSOP12XX alıcı serileri, kızılötesi uzaktan kontrol sistemleri için minyatüre edilmiş alıcılardır. Demodüle edilmiş çıkış sinyali direk olarak bir mikrodenetleyici ile çözülebilir. TSOP12.. serisi kızılötesi alıcılar tüm IR uzaktan kontrol veri formatlarına uygundur.</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/tsop/" rel="attachment wp-att-737"><img class="aligncenter size-full wp-image-737" title="tsop" src="http://e-atolye.net/wp-content/uploads/2012/03/tsop.jpg" alt="" width="260" height="213" /></a></p>
<p style="text-align: justify;">Özellikleri:</p>
<p style="text-align: justify;"> Çok düşük besleme akımı ile çalışabilme</p>
<p style="text-align: justify;"> Tek kılıf içinde algılayıcı ve ön yükseltme devresi</p>
<p style="text-align: justify;"> Elektromanyetik etkileşime (EMI) karşı korumalı</p>
<p style="text-align: justify;"> 2,5-5,5 V besleme voltajı</p>
<p style="text-align: justify;"> Besleme voltajındaki dalgalanmalardan ve gürültülerden etkilenmeme</p>
<p style="text-align: justify;">TSOP12.. serisi, gürültü ve bozucu sinyalin etkilerinden dolayı bozuk çıkış palslerini bastırmak üzere dizayn edilmiştir. Veri sinyali ve bozucu sinyaller; taşıyıcı sinyal sayesinde birbirinden ayrıştırılır. Veri sinyali, malzeme içinde bulunan bant geçiren devrenin taşıyıcı merkez frekansına yakın olmalıdır. (Örn. 38 kHz). Bu taşıyıcı frekans değerlerine göre TSOP12.. serisi IR alıcılar aşağıdaki çizelgede verilmiştir.</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/tsop2/" rel="attachment wp-att-739"><img class="aligncenter size-full wp-image-739" title="tsop2" src="http://e-atolye.net/wp-content/uploads/2012/03/tsop2.jpg" alt="" width="448" height="232" /></a></p>
<p style="text-align: justify;">TSOP12.. &#8216;e bozucu sinyaline maruz kalmış veri sinyali uygulandığında, çıkışta bozuk palslerin olmamasını sağlamak için alıcı duyarlılığı düşürülmüştür. Alıcı tarafından bastırılan bozucu sinyallere örnek olarak;</p>
<p style="text-align: justify;"> DC ışık (Tungsten ampul veya güneş ışığından örnekle)</p>
<p style="text-align: justify;"> Elektronik balastlı flüoresan lambalardan güçlü veya zayıf modüle edilmiş gürültüler</p>
<p style="text-align: justify;"> Herhangi bir frekanstaki sürekli sinyaller verilebilir.</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/tsop3/" rel="attachment wp-att-740"><img class="aligncenter size-full wp-image-740" title="tsop3" src="http://e-atolye.net/wp-content/uploads/2012/03/tsop3.jpg" alt="" width="448" height="224" /></a></p>
<p style="text-align: justify;">TSOP12.. serisi alıcılar algıladığı yüksek seviyedeki sinyali çıkışında terslenmiş olarak verir. Girişinde lojik &#8217;1&#8242; olarak algılanan sinyal, alıcının çıkışında lojik &#8217;0&#8242; (active low) olarak kullanıcıya sunulur. Devre tasarımında alıcının bu özelliği dikkate alınarak dizayn yapılır.</p>
<p style="text-align: justify;"><strong>78L05 regülatörü </strong></p>
<p style="text-align: justify;">LM78LXX serisi sabit çıkış gerilimi istenen uygulamalarda üç uçlu pozitif gerilim düzenleyici olarak kullanılabilir. 5.0V, 6.2V, 8.2V, 9.0V, 12V, 15V değerlerinde çıkış gerilimi üreten tipleri vardır. LM78LXX serisi pozitif gerilim düzenleyicileri, elektronik elemanların güç tüketiminin hızla azaldığı günümüzde, devre tasarımında sıklıkla kullanılmaktadır.</p>
<p style="text-align: justify;">Bu projede kullanılan LM78L05 entegresi çıkışında 5 volt gerilim ve 100 mA&#8217;e kadar çıkış akımı sağlayabilmektedir.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>MAX232 </strong></p>
<p style="text-align: justify;">Bilgisayarlardaki RS232 birimi logic-0 için -3V..-12V, logic-1 için ise +3V..+12V arasında gerilimler üretmektedir. Oysa PIC gibi TTL mantığıyla çalışan aygıtlar için bu değerler geçerli değildir. Bu değerlerin 0V..+5V aralığına indirmek için özel gerilim dengeleyici entegreler kullanılmaktadır. Günümüzde bu entegrelerin en çok kullanılanı ise Maxim firmasının ürettiği MAX232 entegresidir. Bu entegrenin iç yapısı entegreyle birlikte kullanılması gereken kapasitör değerleri aşağıdaki şekilde görülmektedir.</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/max232/" rel="attachment wp-att-742"><img class="aligncenter size-full wp-image-742" title="max232" src="http://e-atolye.net/wp-content/uploads/2012/03/max232.jpg" alt="" width="439" height="336" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">MAX232 entegresini bilgisayara bağlamak için ise aşağıdaki şekilde görülen konnektör kullanılır.</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/pin/" rel="attachment wp-att-743"><img class="aligncenter size-full wp-image-743" title="pin" src="http://e-atolye.net/wp-content/uploads/2012/03/pin.jpg" alt="" width="376" height="357" /></a></p>
<p style="text-align: justify;"><strong>Alıcı Kartının Devre Şeması </strong></p>
<p style="text-align: justify;">Kullanılan elemanlar hakkında bilgi verilen verici kartının devre şeması aşağıdaki şekilde görülmektedir.</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/alici_devre_semasi/" rel="attachment wp-att-744"><img class="aligncenter size-full wp-image-744" title="alıcı_devre_şeması" src="http://e-atolye.net/wp-content/uploads/2012/03/alıcı_devre_şeması.jpg" alt="" width="388" height="336" /></a></p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Bölüm Kaynakları:</span></p>
<p style="text-align: justify;">Deveci, F. (2009). <em>HI-TECH ile PIC Programlama. </em>FxDev.Org</p>
<p style="text-align: justify;">İbrahim, P. D. (2006). <em>PIC ve PC İletişim Projeleri. </em>İstanbul: Bileşim Yayınları.</p>
<p style="text-align: justify;"><em>Vishay Semiconductors</em>. (2011). IR Receiver Modules for Remote Control Systems: http://www.vishay.com/docs/82013/tsop12xx.pdf</p>
<p style="text-align: justify;">Semiconductor, N. (2011). <em>LM78LXX Series</em>. LM78LXX Series 3-Terminal Positive Regulators:</p>
<p style="text-align: justify;">http://www.national.com/pf/LM/LM78L05.html#Overview</p>
<h2  class="related_post_title">Benzer Başlıklar</h2><ul class="related_post"><li>05 Mart 2012 -- <a href="http://e-atolye.net/2012/03/05/kizilotesi-haberlesmeli-pc-kontrolu-3/" title="Kızılötesi Haberleşmeli PC Kontrolü (3)">Kızılötesi Haberleşmeli PC Kontrolü (3)</a> (0)</li><li>05 Mart 2012 -- <a href="http://e-atolye.net/2012/03/05/kizilotesi-haberlesmeli-pc-kontrolu-2-2/" title="Kızılötesi Haberleşmeli PC Kontrolü (2)">Kızılötesi Haberleşmeli PC Kontrolü (2)</a> (0)</li><li>19 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/19/kizilotesi-haberlesmeli-pc-kontrolu-1/" title="Kızılötesi Haberleşmeli PC Kontrolü (1)">Kızılötesi Haberleşmeli PC Kontrolü (1)</a> (0)</li><li>13 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/13/kizilotesi-haberlesmeli-pc-kontrolu/" title="Kızılötesi Haberleşmeli PC Kontrolü">Kızılötesi Haberleşmeli PC Kontrolü</a> (0)</li><li>24 Ocak 2012 -- <a href="http://e-atolye.net/2012/01/24/4-pin-ile-lcd-kullanimini-gelistirme/" title="4 Pin ile LCD Kullanimini Geliştirme">4 Pin ile LCD Kullanimini Geliştirme</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://e-atolye.net/2012/03/19/kizilotesi-haberlesmeli-pc-kontrolu-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenCV- Window7 Visual Studio Kurulumu</title>
		<link>http://e-atolye.net/2012/03/19/opencv-window7-visual-studio-kurulumu/</link>
		<comments>http://e-atolye.net/2012/03/19/opencv-window7-visual-studio-kurulumu/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 14:08:43 +0000</pubDate>
		<dc:creator>İbrahim Atlı</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[C & C++]]></category>
		<category><![CDATA[İbrahim ATLI]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[OpenCV Kurulum]]></category>
		<category><![CDATA[OpenCv öğren]]></category>
		<category><![CDATA[OpenCV örnek]]></category>
		<category><![CDATA[OpenCV resim açma]]></category>
		<category><![CDATA[OpenCV resim Boyutlandırma]]></category>
		<category><![CDATA[OpenCV resim küçültme]]></category>
		<category><![CDATA[OpenCV Visual]]></category>
		<category><![CDATA[OpenCV windows]]></category>
		<category><![CDATA[yeniden boyutlandırma]]></category>

		<guid isPermaLink="false">http://e-atolye.net/?p=727</guid>
		<description><![CDATA[Merhaba Arkadaşlar, Sizlere bu yazımda OpenCV 2.1 kütüphanesinin Windows 7 işletim(32-bit) sisteminde Microsoft Visual Studio 2010 ile kullanımını anlatacağım. Bir çok yeni başlayan arkadaşımız OpenCV kütüphanesini ne yazık ki kuramıyor veya kurmakta çok zorluk çekiyor. Öncelikle OpenCV 2.1 bilgisayarınızda yoksa onu buradaki linkten indirin. Burada sıkıştırılmış olarak inen dosyayı bilgisayarınızda bulabileceğiniz bir yere açın.  Unutmayın [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Merhaba Arkadaşlar,</p>
<p style="text-align: justify;">Sizlere bu yazımda OpenCV 2.1 kütüphanesinin Windows 7 işletim(32-bit) sisteminde Microsoft Visual Studio 2010 ile kullanımını anlatacağım. Bir çok yeni başlayan arkadaşımız OpenCV kütüphanesini ne yazık ki kuramıyor veya kurmakta çok zorluk çekiyor. Öncelikle OpenCV 2.1 bilgisayarınızda yoksa onu <a title="2.1.0 OpenCV" href="http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/OpenCV-2.1.0-win.zip/download" target="_blank">buradaki </a>linkten indirin. Burada sıkıştırılmış olarak inen dosyayı bilgisayarınızda bulabileceğiniz bir yere açın.  Unutmayın bu dosyaya bir daha dokunmamak için güzel bir yer seçmeniz ve silmemeniz gerekli.  Bu aşamadan sonra Windows işletim sistemi kullanıyorsanız, OpenCV&#8217;nin dosyala yolunu (bin klasörünü) windows&#8217;un sistem değişkenlerine eklemeniz gerekmektedir. Bunun için <span style="color: #0000ff;">Denetim Masasına</span> gidin oradan <span style="color: #0000ff;">Sistem ve Güvenlik</span> kısmını tıklatın. Daha sonra<span style="color: #0000ff;"> Sistem</span>&#8216;i tıklayacaksınız. (Aynı işlemi bilgisayarıma girip yukarıdaki menüden sistem özelliklerini tıklayarak ulaşabilirsiniz. ) Buradaki çıkan menüden <span style="color: #0000ff;">Gelişmiş Sistem</span> ayarlarını açıyoruz. Gelen pencerede üstteki menülerden gelişmiş sekmesine geliyoruz. Burada sağda en aşağıda ortam değişkenlerini(Environment Variables) göreceksiniz. Buraya tıklatıp Path kısmına geliyoruz. Arkadaşlar bu yaptığımız işlem OpenCV &#8216;yi kullanabilmeniz için gerekli ve önemli bir işlem. Path&#8217;i bulduktan sonra OpenCV&#8217;nin içindeki bin dosyasının yolunu (E:/OpenCV&#8230;/bin  şeklinde) buraya ekliyoruz. Aynı şekilde /lib klasorunun yolunu da göstermenizde fayda var (E:/OpenCV&#8230;/lib). Nereye ne koyduğumuzdan emin olmak için aşağıdaki ekran görüntüsünü incelemenizi öneririm.<span id="more-727"></span></p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/opencv-window7-visual-studio-kurulumu/opencv_sistem/" rel="attachment wp-att-728"><img class="aligncenter  wp-image-728" title="OpenCV_sistem" src="http://e-atolye.net/wp-content/uploads/2012/03/OpenCV_sistem.jpg" alt="" width="410" height="265" /></a></p>
<p style="text-align: justify;">Ekran Görüntüsü &#8211; Sistem değişkenlerinin Eklenmesi</p>
<p style="text-align: justify;">Bu aşamadan sonra Microsoft Visual Studio 2010&#8242;u açabilirsiniz. 2010&#8242;u açtıktan sonra kendinize boş bir C++ projesi oluşturun. Bunun için Dosya&#8211;&gt; Yeni Proje &#8216;den yaralanacaksınız. Projeniz Visual C++ projesi olacak. Projeyi oluşturduktan sonra main.cpp adlı boş bir source kod dosyası ekleyin. Buraya çalıştırmak istediğiniz kodu yazacaksınız. Kodu yazmadan önce projenize OpenCV Kütüphanesini eklemeniz gerekiyor. Bunu her yeni proje oluşturduğunuz da yapmak zorundasınız. Yani bir kere yapmak yetmiyor. Eğer yeni proje oluşturuyorsanız buradan sonraki işlemleri her proje için yapmanız gerekecek.</p>
<p style="text-align: justify;">Bu aşamadan sonra projenizin üstüne tıklayıp üstteki menüden Project&#8211;&gt; Properties(Özellikler) kısmına geliyoruz.. Ekrana gelen pencere şu şekilde olacak :</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/opencv-window7-visual-studio-kurulumu/ozellikler_menusu/" rel="attachment wp-att-729"><img class="aligncenter size-medium wp-image-729" title="Ozellikler_Menusu" src="http://e-atolye.net/wp-content/uploads/2012/03/Ozellikler_Menusu-300x213.jpg" alt="" width="300" height="213" /></a>Burada sağda gördüğünüz menüden VC++ Directories kısmına gelip Include Directories yazan alana tıklayın. Daha sonra çıkan menüden OpenCV&#8217;nin include klasörünü seçin ve tamam deyin. Aynı işlemi Library Directories için de yapacağız(Include Directories&#8217;in 2 altında). Library Directories&#8217;i tıkladıktan sonra edit dieyip yeni(new ) sekmesine tıkladıktan sonra OpenCV&#8217;nin içindeki lib&#8217;e kadar olan yeri seçip ekliyoruz. Bu işlemden sonra ekran görüntüsü aşağıdaki gibi olacaktır.</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/19/opencv-window7-visual-studio-kurulumu/vc/" rel="attachment wp-att-730"><img class="aligncenter  wp-image-730" title="VC++" src="http://e-atolye.net/wp-content/uploads/2012/03/VC++.jpg" alt="" width="565" height="219" /></a></p>
<p style="text-align: justify;">Bunu da yaptıktan sonra, yandaki menüden C/C++ sekmesini genişletiyoruz. General&#8217;i da tıkladıktan sonra gelen menüde Additional Include Directories&#8217;i göreceksiniz. Yukarıda yaptığımız aynı işlemi burada da tekrarlıyoruz. Yani OpenCV/include kısmını buraya ekliyoruz. Bu işlemi de gerçekleştirdikten sonra, son adım olan Linker sekmesine geliyoruz.  Burada çıkan menüden Input kısmına tıklatıyoruz. Bu işlemi yaptıktan sonra Additional Dependencies kısmını göreceksiniz. Sizin indirdiğiniz sürümde eğer 2.1 ise buradakileri direk ekleyebilirsiniz. Sürümünüz değişik ise( 2.1&#8242;den farklı ise) değiştirmeniz gerecek. Eklenecekler(direk klavyeden yazılacak, kopyala-yapıştır da olur.)</p>
<ul style="text-align: justify;">
<li>cv210.lib</li>
<li>cvaux210.lib</li>
<li>cxcore210.lib</li>
<li>cxts210.lib</li>
<li>highgui210.lib</li>
<li>ml210.lib</li>
<li>opencv_ffmpeg210.lib</li>
</ul>
<p style="text-align: justify;">Bu işlemi de yaptıktan sonra tamam deyip bütün pencereleri kapatın. Bilgisayarınızı bir seferlik tekrar başlatmanız gerekecek(Sistem dosyalarının yeri için). Bilgisayarınız açıldıktan sonra kodunuzu yazın ve çalıştırın. Buradaki işlemler window7 ultimate (32-bit) üstünde Visual Studio 2010 ile denenmiş olup doğru şekilde çalışmaktadır.Kolay gelsin arkadaşlar.</p>
<p style="text-align: justify;">Hazır kodlar için sitemizi ziyaret edin, aşağıdaki linkleri takip edebilirsiniz.</p>
<h2  class="related_post_title">Benzer Başlıklar</h2><ul class="related_post"><li>06 Nisan 2012 -- <a href="http://e-atolye.net/2012/04/06/opencv-camera-calibration-2/" title="OpenCV- Camera Calibration-2">OpenCV- Camera Calibration-2</a> (1)</li><li>01 Nisan 2012 -- <a href="http://e-atolye.net/2012/04/01/opencv-camera-calibration-1/" title="OpenCV- Camera Calibration-1">OpenCV- Camera Calibration-1</a> (1)</li><li>23 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/23/opencv-resmin-boyutlari-ile-oynama/" title="OpenCV- Resmin Boyutları İle Oynama">OpenCV- Resmin Boyutları İle Oynama</a> (0)</li><li>11 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/11/opencv-resim-acma/" title="OpenCV &#8211; Resim Açma">OpenCV &#8211; Resim Açma</a> (0)</li><li>19 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/19/opencv-video-acma-kameradan-goruntu-alma/" title="OpenCV- Video Açma, Kameradan Görüntü Alma">OpenCV- Video Açma, Kameradan Görüntü Alma</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://e-atolye.net/2012/03/19/opencv-window7-visual-studio-kurulumu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HAVA HARP SANATI VE ANATOMİSİ (İTÜ SAVTEK)</title>
		<link>http://e-atolye.net/2012/03/13/hava-harp-sanati-ve-anatomisi-itu-savtek/</link>
		<comments>http://e-atolye.net/2012/03/13/hava-harp-sanati-ve-anatomisi-itu-savtek/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 11:27:54 +0000</pubDate>
		<dc:creator>8mert9</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Havacılık]]></category>
		<category><![CDATA[Mert Kahyaoğlu]]></category>
		<category><![CDATA[f16]]></category>
		<category><![CDATA[f35]]></category>
		<category><![CDATA[hava harp]]></category>
		<category><![CDATA[hava harp sanatı ve anatomisi çalıştayı]]></category>
		<category><![CDATA[itü etkinlikler]]></category>
		<category><![CDATA[itü savtek]]></category>
		<category><![CDATA[seminer]]></category>

		<guid isPermaLink="false">http://e-atolye.net/?p=723</guid>
		<description><![CDATA[İTÜ SAVTEK&#8217;den Bir İlk Daha! HAVA HARP SANATI VE ANATOMİSİ Savaş uçakları hangi özelliklerine göre sınıflandırılıyor? İTÜ SAVTEK&#8217;den Bir İlk Daha! HAVA HARP SANATI VE ANATOMİSİ Savaş uçakları hangi özelliklerine göre sınıflandırılıyor? F16 neden tek motorlu? F22&#8242;den sonra neden F35 yapıldı? Rus uçakları neden batılı muadillerine göre çok daha büyük? &#8230;.. Yukarıdaki sorular ve çok [...]]]></description>
			<content:encoded><![CDATA[<p>İTÜ SAVTEK&#8217;den Bir İlk Daha!</p>
<p>HAVA HARP SANATI VE ANATOMİSİ</p>
<p>Savaş uçakları hangi özelliklerine göre sınıflandırılıyor?</p>
<p><span id="more-723"></span></p>
<p><a href="http://e-atolye.net/wp-content/uploads/2012/03/422852_3216480367164_1120981904_3204002_180076149_n.jpg"><img class="alignnone  wp-image-724" title="422852_3216480367164_1120981904_3204002_180076149_n" src="http://e-atolye.net/wp-content/uploads/2012/03/422852_3216480367164_1120981904_3204002_180076149_n.jpg" alt="" width="475" height="672" /></a></p>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<div id="id_4f5f2d9ecaa1b5765399795">
<p>İTÜ SAVTEK&#8217;den Bir İlk Daha!</p>
<p>HAVA HARP SANATI VE ANATOMİSİ</p>
<p>Savaş uçakları hangi özelliklerine göre sınıflandırılıyor?<br />
F16 neden tek motorlu?<br />
F22&#8242;den sonra neden F35 yapıldı?<br />
Rus uçakları neden batılı muadillerine göre çok daha büyük? &#8230;..</p>
<p>Yukarıdaki sorular ve çok daha fazlasının cevaplarını bulabileceğiniz &#8220;HAVA HARP SANATI VE DOKTRİNİ&#8221; çalıştayımıza davetlisiniz!</p>
<p>Silah Sistemleri ve Askeri Doktrin Uzmanı Sami ATALAN&#8217;ın konuşmacı olduğu bu özel çalıştayda, Sami Atalan&#8217;ın oldukça zengin olan 1/72 ölçekli savaş uçağı<br />
modellerinin desteği ile tasarımları incelenecek ve gelecek savaş uçağı ve sanayisi için ihtiyaçların belirlenmesi ile devam edecek.</p>
<p>Türkiye&#8217;de başka bir örneğinin olmadığı etkinliğimiz, savaş uçakları konusuna meraklı tüm öğrenci ve öğretim üyelerine açıktır!</p>
<p>SAMİ ATALAN ve Modern Hava Sistemleri Ansiklopedisi;</p>
<p>İTÜ SAVTEK&#8217;e verdiği desteklerin yanısıra Türkiye&#8217;nin ilk havacılık ansiklopedisi olan Modern hava Sistemleri Ansiklopedisinin de yazarıdır. Ansiklopedi ile ilgili bilgiye ekteki bağlantılardan ulaşabilirsiniz. Modern Hava Sistemleri Ansiklopedisi İTÜ SAVTEK Kulüp Odası&#8217;nda tüm üyelerinin kullanımına sunulmuştur.</p>
</div>
<div></div>
<div>14 Mart 2012 Çarşamba Saat 14:30 &#8211; 17:30 TAV Konferans Salonu İTÜ Ayazağa Kampüsü</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</td>
</tr>
</tbody>
</table>
<h2  class="related_post_title">En Çok Yorum Alan Konular</h2><ul class="related_post"><li>01 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/01/8051-projeleri-full-duplex-asenkron-veri-iletimi/" title="8051 Full Duplex asenkron veri iletimi">8051 Full Duplex asenkron veri iletimi</a> (17)</li><li>26 Mart 2012 -- <a href="http://e-atolye.net/2012/03/26/vhdl-dili-ve-fpga-uygulamalari-egitimi/" title="VHDL Dili ve FPGA Uygulamaları Eğitimi">VHDL Dili ve FPGA Uygulamaları Eğitimi</a> (8)</li><li>04 Ocak 2012 -- <a href="http://e-atolye.net/2012/01/04/mini-sumo-kingpin/" title="Mini Sumo Yapımı &#8211; Kingpin">Mini Sumo Yapımı &#8211; Kingpin</a> (4)</li><li>05 Ocak 2012 -- <a href="http://e-atolye.net/2012/01/05/fadec-sisteminin-kalbi-ecu-1/" title="FADEC Sisteminin Kalbi ECU &#8211; 1">FADEC Sisteminin Kalbi ECU &#8211; 1</a> (4)</li><li>19 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/19/opencv-video-acma-kameradan-goruntu-alma/" title="OpenCV- Video Açma, Kameradan Görüntü Alma">OpenCV- Video Açma, Kameradan Görüntü Alma</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://e-atolye.net/2012/03/13/hava-harp-sanati-ve-anatomisi-itu-savtek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino Mega 2560</title>
		<link>http://e-atolye.net/2012/03/10/arduino-mega-2560/</link>
		<comments>http://e-atolye.net/2012/03/10/arduino-mega-2560/#comments</comments>
		<pubDate>Sat, 10 Mar 2012 10:43:20 +0000</pubDate>
		<dc:creator>cacarbay</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Caner ACARBAY]]></category>
		<category><![CDATA[Gömülü Sistemler]]></category>
		<category><![CDATA[Yazarlar]]></category>
		<category><![CDATA[Arduino fonksiyonlarını Visual Studio ile kullanmak]]></category>
		<category><![CDATA[Arduino Mega 2560]]></category>
		<category><![CDATA[Arduino Öğren]]></category>
		<category><![CDATA[Arduino Özellikler]]></category>
		<category><![CDATA[Arduino Programı]]></category>
		<category><![CDATA[Arduino Programlamak]]></category>
		<category><![CDATA[Arduino Teknik Verileri]]></category>
		<category><![CDATA[Arduino Visual Studio]]></category>
		<category><![CDATA[Ardunio Uygulamaları]]></category>
		<category><![CDATA[Visual Studio ile Ardunio kod yazmak]]></category>

		<guid isPermaLink="false">http://e-atolye.net/?p=719</guid>
		<description><![CDATA[Bitirme tezimde birlikte çalıştığımız arkadaşlarla istediğimiz işlevleri yerine getirebilecek kullanımı kolay geliştirme kartı arayışı içine girmiştik. Bu arayış sürecince kullanabileceğimiz kartların neler olduğunu araştırdık ve hemen hemen bilinen tüm platformlardan birer tane örnekler edindik. Elimizde bitirme ödevi için bulunan alternatifler ; STM32F4 Geliştirme Kartı PIC Kıt 2 Programlayıcısı Arduino Mega 2560 Geliştirme Kartı idi. Bu [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Bitirme tezimde birlikte çalıştığımız arkadaşlarla istediğimiz işlevleri yerine getirebilecek kullanımı kolay geliştirme kartı arayışı içine girmiştik. Bu arayış sürecince kullanabileceğimiz kartların neler olduğunu araştırdık ve hemen hemen bilinen tüm platformlardan birer tane örnekler edindik. Elimizde bitirme ödevi için bulunan alternatifler ;<span id="more-719"></span></p>
<ul style="text-align: justify;">
<li>STM32F4 Geliştirme Kartı</li>
<li>PIC Kıt 2 Programlayıcısı</li>
<li>Arduino Mega 2560 Geliştirme Kartı idi.</li>
</ul>
<p style="text-align: justify;">Bu 3 kart için PIC KIT 2&#8242;nin programlayıcı olması dolayısı ile programı gömdükten sonra portlar için uygun devrenin hazırlanması zorunluluğundan ve STM32 Arm tabanlı Mikrodenetleyici kitinin yine aynı şekilden Pin probleminden ve Arduino Mega&#8217;nın gerek kullanımının basitliği gerekse açık kaynaklı donanım ve yazılımlara sahip olması ve gelen geliştirme kartı ile devreleri hemen gerçekleyebilmemize imkan vermesinden dolayı Programımızda Arduino Mega 2560 kullanmaya karar verdik. Bu yazımızda bu kiti size tanıtmaya çalışacağım. Bundan sonradaki bir çok paylaşımımı bu kit üzerinden gerçekleştireceğim.</p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/10/arduino-mega-2560/arduinomega2560_r3_front/" rel="attachment wp-att-721"><img class="aligncenter size-full wp-image-721" title="ArduinoMega2560_R3_Front" src="http://e-atolye.net/wp-content/uploads/2012/03/ArduinoMega2560_R3_Front.jpg" alt="" width="448" height="218" /></a></p>
<p style="text-align: justify;"><a href="http://e-atolye.net/2012/03/10/arduino-mega-2560/arduinomega2560_r3_back/" rel="attachment wp-att-720"><img class="aligncenter size-full wp-image-720" title="ArduinoMega2560_R3_Back" src="http://e-atolye.net/wp-content/uploads/2012/03/ArduinoMega2560_R3_Back.jpg" alt="" width="448" height="220" /></a></p>
<h3 style="text-align: justify;">Teknik Özellikler</h3>
<p style="text-align: justify;">Arduino Mega, Atmega 2560 mikrodenetleyicisi kullanılarak oluşturulmuştur. Datasheet&#8217;ine <a href="http://www.atmel.com/dyn/resources/prod_documents/doc2549.PDF" target="_blank">buradan</a> ulaşabilirsiniz. Üründe 4 tane UART, 54 tane Dijital giriş/çıkış , 16 Analog giriş/çıkış, 16 Mhz Osilatör bulunmaktadır.</p>
<p style="text-align: justify;">Genel Özellikleri aşağıda yer almaktadır.</p>
<table border="0">
<tbody>
<tr>
<td align="left">Microcontroller</td>
<td align="left">ATmega2560</td>
</tr>
<tr>
<td align="left">Operating Voltage</td>
<td align="left">5V</td>
</tr>
<tr>
<td align="left">Input Voltage (recommended)</td>
<td align="left">7-12V</td>
</tr>
<tr>
<td align="left">Input Voltage (limits)</td>
<td align="left">6-20V</td>
</tr>
<tr>
<td align="left">Digital I/O Pins</td>
<td align="left">54 (of which 14 provide PWM output)</td>
</tr>
<tr>
<td align="left">Analog Input Pins</td>
<td align="left">16</td>
</tr>
<tr>
<td align="left">DC Current per I/O Pin</td>
<td align="left">40 mA</td>
</tr>
<tr>
<td align="left">DC Current for 3.3V Pin</td>
<td align="left">50 mA</td>
</tr>
<tr>
<td align="left">Flash Memory</td>
<td align="left">256 KB of which 8 KB used by bootloader</td>
</tr>
<tr>
<td align="left">SRAM</td>
<td align="left">8 KB</td>
</tr>
<tr>
<td align="left">EEPROM</td>
<td align="left">4 KB</td>
</tr>
<tr>
<td align="left">Clock Speed</td>
<td align="left">16 MHz</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">Arduino Açık Kaynaklı olduğundan dolayı sizde kendinize aynısından bir tane üretebilirsiniz. Bununla uğraşmak istemiyorsanız orjinal üreticisinden veya e-bay üzerinden Çin&#8217;den daha ucuza alabilirsiniz.</p>
<p style="text-align: justify;">Geliştirme Kartı ile ilgili daha detaylı bilgiye <a href="http://arduino.cc/en/Main/ArduinoBoardMega2560" target="_blank">buradan</a> ulaşabilirsiniz.</p>
<h2  class="related_post_title">Benzer Başlıklar</h2><ul class="related_post"><li>25 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/25/arduino-ile-c-programi/" title="Arduino ile C# Programı">Arduino ile C# Programı</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://e-atolye.net/2012/03/10/arduino-mega-2560/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Client &#8211; Server</title>
		<link>http://e-atolye.net/2012/03/07/client-server/</link>
		<comments>http://e-atolye.net/2012/03/07/client-server/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 20:35:50 +0000</pubDate>
		<dc:creator>eozturk</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[C & C++]]></category>
		<category><![CDATA[Elif ÖZTÜRK]]></category>
		<category><![CDATA[Yazarlar]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[client nedir]]></category>
		<category><![CDATA[client server code]]></category>
		<category><![CDATA[client server kod]]></category>
		<category><![CDATA[client.c]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[server nedir]]></category>
		<category><![CDATA[server.c]]></category>
		<category><![CDATA[udp client]]></category>
		<category><![CDATA[udp programlama]]></category>
		<category><![CDATA[udp programming]]></category>
		<category><![CDATA[udp server]]></category>

		<guid isPermaLink="false">http://e-atolye.net/?p=713</guid>
		<description><![CDATA[Merhaba arkadaşlar, sizlere bugün ilk başta anlamakta gerçekten zorlandığım fakat sonrasında ne kadar kolaymış dediğim  bilgisayar ağları ve ağ programlama derslerinde görülen UDP programlamanın client ve server bilgi alışverişi mantığını anlatacağım. Öncelikle client ve server ne demektir ondan bahsedelim. Client serverdan bilgi isteyendir ve daima aktif taraftır, fakat server ancak client’in isteği doğrultusunda çalışır ve [...]]]></description>
			<content:encoded><![CDATA[<p>Merhaba arkadaşlar, sizlere bugün ilk başta anlamakta gerçekten zorlandığım fakat sonrasında ne kadar kolaymış dediğim  bilgisayar ağları ve ağ programlama derslerinde görülen UDP programlamanın client ve server bilgi alışverişi mantığını anlatacağım.<span id="more-713"></span></p>
<p>Öncelikle client ve server ne demektir ondan bahsedelim. Client serverdan bilgi isteyendir ve daima aktif taraftır, fakat server ancak client’in isteği doğrultusunda çalışır ve pasif konumdadır. Örneğin; bir internet sayfasını açtınız, arama bölümüne yazıp enter tuşuna bastığınızda serverdan istekte bulunursunuz, siz istemci(client), server ise sunan konumdadır.</p>
<p>UDP; yani User Datagram Protocol, verileri bağlantısız ileten, iletinin tamamını iletme güvenliği olmayan bir protokoldür.</p>
<div id="attachment_714" class="wp-caption aligncenter" style="width: 310px"><a href="http://e-atolye.net/2012/03/07/client-server/clientserver/" rel="attachment wp-att-714"><img class="size-medium wp-image-714" title="clientserver" src="http://e-atolye.net/wp-content/uploads/2012/03/clientserver-300x259.jpg" alt="" width="300" height="259" /></a><p class="wp-caption-text">---Client-Server---</p></div>
<p>&nbsp;</p>
<p>UDP Client&amp;Server Fonksiyonları</p>
<p>1)Socket fonksiyonu:</p>
<ul>
<li>  Socket yaratma</li>
</ul>
<p><strong>int socket(int family, int type, int protocol);</strong></p>
<p>Dönüş değeri olarak herhangi bir değer döndürür, eğer hata verirse -1 döndürür.</p>
<ul>
<li>   Paramatreleri:</li>
</ul>
<p><strong>int family</strong></p>
<p>                <strong>AF_INET</strong>       IPv4 protocols</p>
<p>                <strong>AF_INET6</strong>    IPv6 protocols</p>
<p><strong>int type</strong></p>
<p>                <strong>SOCK_DGRAM</strong>     UDP datagrams</p>
<p>                <strong>SOCK_STREAM </strong>  TCP streams</p>
<p>i<strong>nt protocol </strong>(<strong>AF_INET</strong> &amp; <strong>AF_INET6</strong> family sockets)</p>
<p>                IPPROTO_UDP     UDP Transport</p>
<p>                IPPROTO_TCP      TCP Transport</p>
<p>2) bind fonksiyonu:  Socket fonksiyonu ile oluşturduğumuz sockfd file descriptor’u , local IP adresi ve  port numarasını birbirine bağlar</p>
<p><strong>int bind (int sockfd, struct sockaddr* myaddr, int addrlen);</strong></p>
<p><strong>Buradaki myaddr pointer’ı client veya server adres yapısıdır, kullandığınız yere göre kodunuzda değişiklik gösterir.  </strong></p>
<p>◦       Bağlantı oluşmuşsa 0, hata varsa -1 döndürür.</p>
<p>◦       <strong>sockfd: </strong>socket fonksiyonundan dönen değer.</p>
<p>◦       <strong>myaddr:</strong> IP adresi ve port numarasını içerir.</p>
<p>3) send to fonksiyonu: Datagram paketlerini digger UDP socketine yollar. Dönüş değeri olarak da karşı tarafa yazılan byte sayısını, yazılmamışsa da -1 değerini döndürür.</p>
<p><strong>int sendto (int sockfd, char* buf, size_t nbytes, int flags, struct sockaddr* destaddr, int  addrlen);</strong></p>
<p><strong>Burada sockfd, socket fonksiyonunda oluşturduğumuz client socket file descriptor’dır. </strong></p>
<p><strong>char* buf = göndereceğiniz mesajdır.</strong></p>
<p><strong>size_t nbytes= yollayacağınız mesajın byte sayısıdır.</strong></p>
<p><strong>flags= bu daima 0’dır.</strong></p>
<p><strong>sockaddr* destaddr = mesajı yollayacağınız adrestir.</strong></p>
<p><strong>int addrlen = client adres uzunluğudur.</strong></p>
<p>4) recvfrom fonksiyonu:UDP socketten datagram paketi almak için kullanırız. Dönş değeri olarak okunan byte sayısını, okunmamış ise -1 değerini döndürür.</p>
<p><strong>int recvfrom (int sockfd, char* buf, size_t nbytes, int flags, struct sockaddr* srcaddr, int* addrlen);</strong></p>
<p><strong>srcaddr = client adresidir.</strong></p>
<p>5)close fonksiyonu: Socketi kapatır. Socketi kapattıktan sonra datagram paketi alınmaz veya gönderilmez. Kapanmışsa 0, kapanmamışsa -1 değerini döndürür.</p>
<p>int close(int sockfd);</p>
<p>Aşağıda örnek bir kod mevcut, server ve client kodlarını ayrı ayrı c projeleri açarak çalıştırın. Ve mantığını anlamanız açısında debug yaparsanız daha faydalı olacaktır.</p>
<p>UDPClient.c kod:</p>
<div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="c" style="font-family:monospace;"><span class="co2">#include &lt;stdio.h&gt;</span>
<span class="co2">#include &lt;sys/types.h&gt;</span>
<span class="co2">#include &lt;sys/socket.h&gt;</span>
<span class="co2">#include &lt;netinet/in.h&gt;</span>
<span class="co2">#include &lt;arpa/inet.h&gt;</span>
<span class="co2">#include &lt;unistd.h&gt;</span>
<span class="co2">#include &lt;memory.h&gt;</span>
&nbsp;
<span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc<span class="sy0">,</span> <span class="kw4">char</span><span class="sy0">*</span> argv<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
  <span class="kw4">int</span>       clientSock<span class="sy0">;</span>     <span class="co1">// Client socket</span>
&nbsp;
  <span class="co1">//</span>
  <span class="co1">// Create a UDP socket to send data from</span>
  <span class="co1">//</span>
  clientSock <span class="sy0">=</span> socket<span class="br0">&#40;</span>AF_INET<span class="sy0">,</span>			  <span class="co1">// Address family</span>
  	    			    SOCK_DGRAM<span class="sy0">,</span>		  <span class="co1">// Socket type</span>
  		    	        IPPROTO_UDP<span class="br0">&#41;</span><span class="sy0">;</span>		<span class="co1">// Protocol</span>
  <span class="kw1">if</span> <span class="br0">&#40;</span>clientSock <span class="sy0">&lt;</span> 0<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;Unable to create the UDP socket<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span>
  <span class="br0">&#125;</span> <span class="co1">//end-if</span>
&nbsp;
  <span class="kw1">while</span> <span class="br0">&#40;</span>1<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw4">struct</span> sockaddr_in  peer<span class="sy0">;</span>
    <span class="kw4">int</span> peerAddrSize <span class="sy0">=</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span>peer<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="co2">#define BUFFER_SIZE 65535</span>
    <span class="kw4">char</span> buffer<span class="br0">&#91;</span>BUFFER_SIZE<span class="br0">&#93;</span><span class="sy0">;</span>
    <span class="kw4">int</span> msgSize<span class="sy0">;</span>
    <span class="kw4">unsigned</span> <span class="kw4">short</span> destPort<span class="sy0">;</span>
    <span class="kw4">char</span> destIP<span class="br0">&#91;</span>100<span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp;
    memset<span class="br0">&#40;</span>buffer<span class="sy0">,</span> <span class="st0">'A'</span><span class="sy0">,</span> BUFFER_SIZE<span class="br0">&#41;</span><span class="sy0">;</span>
    <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;Enter &lt;destIP&gt; &lt;destPort&gt; &lt;MsgSize&gt; [-1 to quit] &gt;&gt;&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    scanf<span class="br0">&#40;</span><span class="st0">&quot;%s %d%d&quot;</span><span class="sy0">,</span> destIP<span class="sy0">,</span> <span class="sy0">&amp;</span>destPort<span class="sy0">,</span> <span class="sy0">&amp;</span>msgSize<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span>msgSize <span class="sy0">&gt;</span> BUFFER_SIZE<span class="br0">&#41;</span> msgSize <span class="sy0">=</span> BUFFER_SIZE<span class="sy0">;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span>msgSize <span class="sy0">&lt;</span> 0<span class="br0">&#41;</span> <span class="kw2">break</span><span class="sy0">;</span>
&nbsp;
    <span class="co1">// Initialize peer's address structures.</span>
    peer.<span class="me1">sin_family</span> <span class="sy0">=</span> AF_INET<span class="sy0">;</span>
    peer.<span class="me1">sin_addr</span>.<span class="me1">s_addr</span> <span class="sy0">=</span> inet_addr<span class="br0">&#40;</span>destIP<span class="br0">&#41;</span><span class="sy0">;</span>
  	peer.<span class="me1">sin_port</span> <span class="sy0">=</span> htons<span class="br0">&#40;</span>destPort<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="co1">// Send it to server</span>
    <span class="kw4">int</span> ret <span class="sy0">=</span> sendto<span class="br0">&#40;</span>clientSock<span class="sy0">,</span> buffer<span class="sy0">,</span> msgSize<span class="sy0">,</span> 0<span class="sy0">,</span>
                     <span class="br0">&#40;</span><span class="kw4">struct</span> sockaddr <span class="sy0">*</span><span class="br0">&#41;</span><span class="sy0">&amp;</span>peer<span class="sy0">,</span> peerAddrSize<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span>ret <span class="sy0">&lt;</span> <span class="nu0">0</span><span class="br0">&#41;</span> perror<span class="br0">&#40;</span><span class="st0">&quot;sendto&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span> <span class="co1">//end-while</span>
&nbsp;
  close<span class="br0">&#40;</span>clientSock<span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="br0">&#125;</span> <span class="co1">//end-main</span></pre></div></div>
<p>UDPServer.c kod:</p>
<div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Show code only"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Print code"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://e-atolye.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://e-atolye.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="c" style="font-family:monospace;"><span class="co2">#include &lt;stdio.h&gt;</span>
<span class="co2">#include &lt;sys/types.h&gt;</span>
<span class="co2">#include &lt;sys/socket.h&gt;</span>
<span class="co2">#include &lt;netinet/in.h&gt;</span>
<span class="co2">#include &lt;arpa/inet.h&gt;</span>
<span class="co2">#include &lt;unistd.h&gt;</span>
<span class="co2">#include &lt;memory.h&gt;</span>
&nbsp;
<span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc<span class="sy0">,</span> <span class="kw4">char</span><span class="sy0">*</span> argv<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
  <span class="kw4">struct</span> sockaddr_in  me<span class="sy0">;</span>
  <span class="kw4">int</span>                serverSock<span class="sy0">;</span>       <span class="co1">// My socket to receive/send packets</span>
  <span class="kw4">int</span> ret<span class="sy0">;</span>
&nbsp;
  <span class="co1">//</span>
  <span class="co1">// Create a UDP socket to receive/send data from</span>
  <span class="co1">//</span>
  serverSock <span class="sy0">=</span> socket<span class="br0">&#40;</span>AF_INET<span class="sy0">,</span>			  <span class="co1">// Address family</span>
  	    		          SOCK_DGRAM<span class="sy0">,</span>		  <span class="co1">// Socket type</span>
  		    	          IPPROTO_UDP<span class="br0">&#41;</span><span class="sy0">;</span>		  <span class="co1">// Protocol</span>
  <span class="kw1">if</span> <span class="br0">&#40;</span>serverSock <span class="sy0">&lt;</span> 0<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;Unable to create the socket<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span>
  <span class="br0">&#125;</span> <span class="co1">//end-if</span>
&nbsp;
  <span class="co1">// Initialize my address structure.</span>
  me.<span class="me1">sin_family</span> <span class="sy0">=</span> AF_INET<span class="sy0">;</span>
  me.<span class="me1">sin_addr</span>.<span class="me1">s_addr</span> <span class="sy0">=</span> htonl<span class="br0">&#40;</span>INADDR_ANY<span class="br0">&#41;</span><span class="sy0">;</span>      <span class="co1">// Any interface</span>
  me.<span class="me1">sin_port</span> <span class="sy0">=</span> htons<span class="br0">&#40;</span>20000<span class="br0">&#41;</span><span class="sy0">;</span>	     	        <span class="co1">// Bind yourself to port 20000</span>
&nbsp;
  <span class="co1">//</span>
  <span class="co1">// bind the name to the socket</span>
  <span class="co1">//</span>
  ret <span class="sy0">=</span> bind<span class="br0">&#40;</span>serverSock<span class="sy0">,</span> 		           <span class="co1">// Socket</span>
     	     <span class="br0">&#40;</span><span class="kw4">struct</span> sockaddr <span class="sy0">*</span><span class="br0">&#41;</span><span class="sy0">&amp;</span>me<span class="sy0">,</span>     <span class="co1">// My address</span>
      	     <span class="kw4">sizeof</span><span class="br0">&#40;</span>me<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>          	   <span class="co1">// Size of address structure</span>
  <span class="kw1">if</span> <span class="br0">&#40;</span>ret <span class="sy0">&lt;</span> 0<span class="br0">&#41;</span>	<span class="br0">&#123;</span>
    <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;Bind error<span class="es1">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	close<span class="br0">&#40;</span>serverSock<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span>
  <span class="br0">&#125;</span> <span class="co1">//end-if</span>
&nbsp;
  <span class="co1">// We will increase our receive buffer to 100KB</span>
  <span class="kw4">int</span> bufSize <span class="sy0">=</span> <span class="nu0">100000</span><span class="sy0">;</span>
  <span class="kw4">int</span> optlen <span class="sy0">=</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="kw1">if</span> <span class="br0">&#40;</span>setsockopt<span class="br0">&#40;</span>serverSock<span class="sy0">,</span> SOL_SOCKET<span class="sy0">,</span> SO_RCVBUF<span class="sy0">,</span> <span class="sy0">&amp;</span>bufSize<span class="sy0">,</span> optlen<span class="br0">&#41;</span> <span class="sy0">&lt;</span> <span class="nu0">0</span><span class="br0">&#41;</span>
    perror<span class="br0">&#40;</span><span class="st0">&quot;setsockopt: &quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
  <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;Server is ready and waiting for messages at UDP port %d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> 20000<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
  <span class="kw1">while</span> <span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
<span class="co2">#define BUFFER_SIZE 65535</span>
    <span class="kw4">char</span> buffer<span class="br0">&#91;</span>BUFFER_SIZE<span class="br0">&#93;</span><span class="sy0">;</span>
    <span class="kw4">struct</span> sockaddr_in  peer<span class="sy0">;</span>
    <span class="kw4">int</span> peerSize <span class="sy0">=</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span>peer<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw4">unsigned</span> <span class="kw4">char</span> <span class="sy0">*</span>p <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">char</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="sy0">&amp;</span>peer.<span class="me1">sin_addr</span>.<span class="me1">s_addr</span><span class="sy0">;</span>
&nbsp;
    <span class="co1">/// Empty up the buffer</span>
    memset<span class="br0">&#40;</span>buffer<span class="sy0">,</span> 0<span class="sy0">,</span> BUFFER_SIZE<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    ret <span class="sy0">=</span> recvfrom<span class="br0">&#40;</span>serverSock<span class="sy0">,</span> buffer<span class="sy0">,</span> BUFFER_SIZE<span class="sy0">,</span> 0<span class="sy0">,</span> <span class="br0">&#40;</span><span class="kw4">struct</span> sockaddr <span class="sy0">*</span><span class="br0">&#41;</span><span class="sy0">&amp;</span>peer<span class="sy0">,</span> <span class="sy0">&amp;</span>peerSize<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span>ret <span class="sy0">&lt;</span> 0<span class="br0">&#41;</span> <span class="kw2">break</span><span class="sy0">;</span>
&nbsp;
    <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;Received &lt;%d&gt; bytes from: %d.%d.%d.%d:%d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> ret<span class="sy0">,</span> p<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">,</span> p<span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="sy0">,</span> p<span class="br0">&#91;</span>2<span class="br0">&#93;</span><span class="sy0">,</span> p<span class="br0">&#91;</span>3<span class="br0">&#93;</span><span class="sy0">,</span> ntohs<span class="br0">&#40;</span>peer.<span class="me1">sin_port</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span> <span class="co1">//end-while</span>
&nbsp;
	<span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Bu yazımda sizlere basit anlamda client ve server (UDP) konusunu açıklamaya çalıştım. Bu konuyu anlamaya çalışırken gerçekten faydasını gördüğüm ve sizinde okudukça iyi anlayacağınızı düşündüğüm Beej’in Ağ Programlama yazısını mutlaka okumanızı tavsiye ederim. Görüşmek üzere <img src='http://e-atolye.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2  class="related_post_title">En Çok Yorum Alan Konular</h2><ul class="related_post"><li>01 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/01/8051-projeleri-full-duplex-asenkron-veri-iletimi/" title="8051 Full Duplex asenkron veri iletimi">8051 Full Duplex asenkron veri iletimi</a> (17)</li><li>26 Mart 2012 -- <a href="http://e-atolye.net/2012/03/26/vhdl-dili-ve-fpga-uygulamalari-egitimi/" title="VHDL Dili ve FPGA Uygulamaları Eğitimi">VHDL Dili ve FPGA Uygulamaları Eğitimi</a> (8)</li><li>04 Ocak 2012 -- <a href="http://e-atolye.net/2012/01/04/mini-sumo-kingpin/" title="Mini Sumo Yapımı &#8211; Kingpin">Mini Sumo Yapımı &#8211; Kingpin</a> (4)</li><li>05 Ocak 2012 -- <a href="http://e-atolye.net/2012/01/05/fadec-sisteminin-kalbi-ecu-1/" title="FADEC Sisteminin Kalbi ECU &#8211; 1">FADEC Sisteminin Kalbi ECU &#8211; 1</a> (4)</li><li>19 Şubat 2012 -- <a href="http://e-atolye.net/2012/02/19/opencv-video-acma-kameradan-goruntu-alma/" title="OpenCV- Video Açma, Kameradan Görüntü Alma">OpenCV- Video Açma, Kameradan Görüntü Alma</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://e-atolye.net/2012/03/07/client-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

