Matlab’ta resim üzerinde daire oluşturmak
|
2 adet merkez bilgisi, 2 adet de çap uzunluğu gireceğiz. Bu bilgilerle 2 daire oluşturacağız. Dairelerin arasında kalan alanı siyah yapacağız.
close all;clc;clear all; im=double(imread(’ben.jpg’)); [w,h]=size(im); r=40; r2=100;x=w/2;y=h/2; x2=x+20;y2=y-50; % 1.dairefor i=1:w for j=1:h uzaklik=abs(sqrt(((x-i)^2)+(y-j)^2)); if uzaklik<r im2(i,j)=500; else im2(i,j)=im(i,j); end end end%2. dairefor i=1:w for j=1:h uzaklik=abs(sqrt(((x2-i)^2)+(y2-j)^2)); if uzaklik<r2 im3(i,j)=0; else im3(i,j)=im2(i,j); end end endfor i=1:w for j=1:h if im2(i,j)==500 im3(i,j)=im(i,j); end end end Orijinal resim:
Program çıktısı:
|



10 Mayıs, 2007 saat 19:00
15 Mayıs, 2007 saat 17:13
Matlab ile ilgili çalışmanızı gördüm… Benim de bir sorunum var yardımcı olursanız sevinirim… Matlab da bir resmi orjinal renginden baska bir renge nasıl ceviririm…. Mesela mavi renkli bir arabayı yeşil yapmak istiyorum…
15 Mayıs, 2007 saat 22:32
renkli resimlerin 3 boyutları olur. R(red)-kırmızı G(green)-yeşil B(blue)-mavi
resmi bir değişkene attığında bunun 3 bileşeni olacak. oradaki B değerleriyle G değerlerini yer değiştirebilirsin mesela bu bir çözüm olabilir. tabi bu sadece arabayı değil resimdeki tüm mavileri etkiler. sadece arabayı değiştirmek için çok farklı algoritmalar geliştirmek gerekir.
bu konuda şuradaki notları inceleyebilirsin. çok faydalı olacaktır.
16 Mayıs, 2007 saat 02:40
Teşekkür ederim, gerçekten çok yardımcı oldunuz…
27 Ağustos, 2008 saat 10:12
Siteniz gerçekten çok ii ve benim için faydalı oldu.Ben görüntü işleme üzerine çalışyorum.
Benim şöle bi sorunum var.işlediğim resimde daire şeklinde bir yapı var ve ben bu daire içindeki resmi işleyip
daire dışındaki kısmı siyah yapıp işlemicem.burada örnek verdiğiniz kod yardımcı oldu fakat dairenin içi beyaz oluyor.Yani resmin
kendisini göremiyorum.Yardımcı olursanız sevinirim…
Teşekkür ederim.
İi çalışmalar
27 Ağustos, 2008 saat 10:54
@dilek,
dairenin merkezi ve çapı belli sanırım senin çalışmanda.
dairenin içi nasıl beyaz oluyor anlamadım onu. ama şöyle bir mantıkla yapabilirsin;
iç içe 2 tane for ile tüm pikselleri tara, merkez noktana uzaklığı yarıçaptan fazla olan pikselleri siyah yap, diğerlerine dokunma.
doğrudan buradaki kodu kullanırsan olmaz zaten. farklı bu, 2 daire arasını siyaha boyuyor bu kod. kendi kodunu yazmaya çalış.
27 Ağustos, 2008 saat 15:46
Emrah ben mantğıma göre kodu aşağıdaki şekilde yazdım.Fakat döngüye giriyor. Ve sonuç vermiyor.
Nerede hata yapıyorum anlayamadım.Yardımcı olursan sevinirim.
close all;
clc;
clear all;
im=imread(’DSC01570.jpg’);
figure(1)
imshow(im)
[w h]=size(im);
x=w/2;
y=h/2;
for i=1:w
for j=1:h
xuzaklik=abs(x-i);
yuzaklik=abs(y-j);
while (x-200 < xuzaklik < x) && (y-200< yuzaklik < y)
im2(i,j)=im(i,j);
end
im2(i,j)=0;
end
end
figure(2)
imshow(im2)
27 Ağustos, 2008 saat 16:18
şu yanlış:
while (x-200 < xuzaklik < x) && (y-200< yuzaklik < y)böyle bir while olmaz. ve’leme yanlış. hem de üçlü kullanmışsın anlayamadım ne yapmaya çalıştığını.
misal w=100 olsa, xuzaklik 25 ile -25 arası değişecek, -175 < xuzaklik < 50 şöyle olacak. yanlış. anlayamadım yani