Noktaların Koordinat Kayıtları
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
-
- Üye
- Mesajlar: 155
- Kayıt: 10 Oca 2014 01:08
- Konum: izmir/Buca
Noktaların Koordinat Kayıtları
Merhaba Dostlarım ...!
Özür dilerim resmin kayıt adresini vermeyi unuttuğum için aynı soruyu sormuş gibi oluyorum. İlk soru mesajımı dikkate almayınız.
Resminin bir bölümünün kayıt adresini verdiğim (http://s8.postimg.org/8d6n369it/internetresmi_1.png) ve Corel Draw ile çizdiğim yaklaşık 1000(bin)
adet noktayı Corel Draw da RGB modunda ve herbirini de 1 pixel çapında çizdiğim bu resmi
Delphi 2006 da taratıp noktaların bulunduğu yerlerin koordinatlarını veritabanına kayıt ediyorum.
Ancak kayıtları tetkik ettiğimde 1 pixel boyutundaki noktalar veritabanında 1 den fazla koordinat(x,y)
ile temsil ediliyor.
Örneğin noktalardan herhangi birisini ele alalım;
Veritabanına
Apsis Ordinat
----- ------
125 523
126 522
127 524
128 525
şeklinde 4 nokta olarak kayıt yapıyor.
Burada benim sorunum;
Veritabanına atıyorum şimdi
Apsis Ordinat
----- ------
127 524
şeklinde kayıt yapsın.
Yani her biri 1 pixel çapındaki bu noktalardan her birinin koordinatlarını tek bir (x,y) ile temsil edilmesini
istiyorum.
Bu konuda bana yardım edecek arkadaşların bilgi ve tecrübesine ihtiyacım var. Yardımlarınız için Teşekkür ederim.
Özür dilerim resmin kayıt adresini vermeyi unuttuğum için aynı soruyu sormuş gibi oluyorum. İlk soru mesajımı dikkate almayınız.
Resminin bir bölümünün kayıt adresini verdiğim (http://s8.postimg.org/8d6n369it/internetresmi_1.png) ve Corel Draw ile çizdiğim yaklaşık 1000(bin)
adet noktayı Corel Draw da RGB modunda ve herbirini de 1 pixel çapında çizdiğim bu resmi
Delphi 2006 da taratıp noktaların bulunduğu yerlerin koordinatlarını veritabanına kayıt ediyorum.
Ancak kayıtları tetkik ettiğimde 1 pixel boyutundaki noktalar veritabanında 1 den fazla koordinat(x,y)
ile temsil ediliyor.
Örneğin noktalardan herhangi birisini ele alalım;
Veritabanına
Apsis Ordinat
----- ------
125 523
126 522
127 524
128 525
şeklinde 4 nokta olarak kayıt yapıyor.
Burada benim sorunum;
Veritabanına atıyorum şimdi
Apsis Ordinat
----- ------
127 524
şeklinde kayıt yapsın.
Yani her biri 1 pixel çapındaki bu noktalardan her birinin koordinatlarını tek bir (x,y) ile temsil edilmesini
istiyorum.
Bu konuda bana yardım edecek arkadaşların bilgi ve tecrübesine ihtiyacım var. Yardımlarınız için Teşekkür ederim.
Re: Noktaların Koordinat Kayıtları
Cevap standartlaştırma.
- Yani veritabanındaki noktasal ifadeler X / Y değil satır sütun gibi daha kesin ifadeler ile yer değiştirmeli.
- Kendi projeniz içinde 1/4 oranında (fiziksel (1) nokta (n) adet pixel oluyorsa çıkıyorsa 1/n) küçültün. Sonra da işleminizi öyle yapın. Nasıl olacak ? örneğin
01,02,03,04 için 1 nolu sütun
05,06,07,08 için 2 nolu sütun
09,10,11,12 için 3 nolu sütun
13,14,15,16 için 4 nolu sütun
..
..
Rakamların nasıl örüntülendiğini anlayabildik.
Şimdi dilerseniz bunların merkezindeki bir tanesini siyah mı beyaz mı diye değerlendirebilirsiniz veya kaçta kaçı siyah veya beyaz olarak sorgular kararı öyle verirsiniz.
- Yani veritabanındaki noktasal ifadeler X / Y değil satır sütun gibi daha kesin ifadeler ile yer değiştirmeli.
- Kendi projeniz içinde 1/4 oranında (fiziksel (1) nokta (n) adet pixel oluyorsa çıkıyorsa 1/n) küçültün. Sonra da işleminizi öyle yapın. Nasıl olacak ? örneğin
01,02,03,04 için 1 nolu sütun
05,06,07,08 için 2 nolu sütun
09,10,11,12 için 3 nolu sütun
13,14,15,16 için 4 nolu sütun
..
..
Rakamların nasıl örüntülendiğini anlayabildik.
Şimdi dilerseniz bunların merkezindeki bir tanesini siyah mı beyaz mı diye değerlendirebilirsiniz veya kaçta kaçı siyah veya beyaz olarak sorgular kararı öyle verirsiniz.
-
- Üye
- Mesajlar: 155
- Kayıt: 10 Oca 2014 01:08
- Konum: izmir/Buca
Re: Noktaların Koordinat Kayıtları
Değerli Arkadaşım Muharrem Bey
Sizin önerinizi ben şöyle anladım. Yanlışım varsa düzeltiniz.
Corel de çizdiğim Noktaları(1 pixel çaplı) Corel Draw da 1/4 oranında küçülttüm. Sonra bmp uzantılı olarak kayıt ettim.
Delphi de tarattım, aşağıdaki sonuçları elde ettim (Deneme amacıyla 5 nokta oluşturdum).
Veritabanı kayıtları aşağıdaki gibi oluştu.
1. nokta koordinatları:
x y
--- ---
890 211
890 212
891 212
2. nokta koordinatları:
274 223
275 223
275 224
3. nokta koordinatları:
570 353
4. nokta koordinatları:
154 535
155 535
154 536
5. nokta koordinatları:
951 551
950 551
951 552
Yukarda 3. nokta tek (x,y) korrdinatı ile temsil edilirken, diğer noktalar 3 adet (x,y) koordinatıyla
temsil ediliyor. Yinede aralarında bir (3 koordinatın x veya y leri arasında) bir bağlantı oluşturmaya çalıştım.
Belki bu şekilde çözerim diye ama saçma sapan değişim gösteriyorlar.
Benim ilk yazımda da bahsettiğim gibi söz konusu (örneğin 5 nokta) noktaları 3. nokta koordinatları başlığında olduğu gibi
tek bir P(x,y) koordinat takımıyla temsil edilmesini istiyorum.
Yazdıklarım yanlış ise bana daha açıklayıcı bilgi verirseniz. memnun olacağım. Zahmetiniz için teşekkürlerimi sunarım.
Sizin önerinizi ben şöyle anladım. Yanlışım varsa düzeltiniz.
Corel de çizdiğim Noktaları(1 pixel çaplı) Corel Draw da 1/4 oranında küçülttüm. Sonra bmp uzantılı olarak kayıt ettim.
Delphi de tarattım, aşağıdaki sonuçları elde ettim (Deneme amacıyla 5 nokta oluşturdum).
Veritabanı kayıtları aşağıdaki gibi oluştu.
1. nokta koordinatları:
x y
--- ---
890 211
890 212
891 212
2. nokta koordinatları:
274 223
275 223
275 224
3. nokta koordinatları:
570 353
4. nokta koordinatları:
154 535
155 535
154 536
5. nokta koordinatları:
951 551
950 551
951 552
Yukarda 3. nokta tek (x,y) korrdinatı ile temsil edilirken, diğer noktalar 3 adet (x,y) koordinatıyla
temsil ediliyor. Yinede aralarında bir (3 koordinatın x veya y leri arasında) bir bağlantı oluşturmaya çalıştım.
Belki bu şekilde çözerim diye ama saçma sapan değişim gösteriyorlar.
Benim ilk yazımda da bahsettiğim gibi söz konusu (örneğin 5 nokta) noktaları 3. nokta koordinatları başlığında olduğu gibi
tek bir P(x,y) koordinat takımıyla temsil edilmesini istiyorum.
Yazdıklarım yanlış ise bana daha açıklayıcı bilgi verirseniz. memnun olacağım. Zahmetiniz için teşekkürlerimi sunarım.
Re: Noktaların Koordinat Kayıtları
Metod anlattığım gibi ancak yanlış anlaşılan kısım 1/4 oranında küçültme işini ürün üzerinden yani Delphi yakasında olması gerekiyordu.
Çünkü Corel tarafında ürün oluşurken (vektörel olsa da ürün vektör olmadığından sıkıştırma kaynaklı vb. sebeplerle) mozaiklenme olabilmektedir.
Şöyle düşünün örneğin 100 width genişliğinde bir resim ürünün her 4 noktasını 1 nokta olarak değerlendirmeye aldığınızda 100/4 = 25 sütunluk bir satır elde edeceksiniz. Bu da 1/4 oranında küçülme ve noktaların birleşmesiyle standartlaşma şeklinde ifade ettiğim hücreleri oluşturacaktır.
Çünkü Corel tarafında ürün oluşurken (vektörel olsa da ürün vektör olmadığından sıkıştırma kaynaklı vb. sebeplerle) mozaiklenme olabilmektedir.
Şöyle düşünün örneğin 100 width genişliğinde bir resim ürünün her 4 noktasını 1 nokta olarak değerlendirmeye aldığınızda 100/4 = 25 sütunluk bir satır elde edeceksiniz. Bu da 1/4 oranında küçülme ve noktaların birleşmesiyle standartlaşma şeklinde ifade ettiğim hücreleri oluşturacaktır.
-
- Üye
- Mesajlar: 155
- Kayıt: 10 Oca 2014 01:08
- Konum: izmir/Buca
Re: Noktaların Koordinat Kayıtları
Muharrem Bey inanın son mesajınızdan(2. paragraf) bir şey anlamadım dersem, kızmayın bana. Lütfen biraz daha konuyu açarmısınız.
Re: Noktaların Koordinat Kayıtları
Rica ederim, daha önce de benzer örnekleri konuşmuştuk yanlış hatırlamıyorsam ama buyrun...
Proje download linki : buradan indirip inceleyebilirsin.
Proje download linki : buradan indirip inceleyebilirsin.
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
function Hucre( aCanvas:TCanvas; xOff, yOff, iHucrePix: Integer ): Boolean;
Var
i, j : Integer;
iToplamBlack : Integer;
begin
iToplamBlack := 0;
for i := xOff to xOff + iHucrePix do
for j := yOff to yOff + iHucrePix do begin
if aCanvas.Pixels[i, j] <> clWhite then Inc(iToplamBlack);
end;
Result := iToplamBlack >= ((iHucrePix * iHucrePix) div 4);
aCanvas.Brush.Style := bsClear;
aCanvas.Pen.Color := clBlack;
aCanvas.Pen.Width := 1;
aCanvas.Rectangle( xOff, yOff, xOff + iHucrePix, yOff + iHucrePix );
end;
Const
iHucrePix = 20;
Var
Bitmap : TBitmap;
i, j : Integer;
sut, sat : Integer;
begin
Bitmap := TBitmap.Create;
Bitmap.Assign( Image1.Picture.Graphic );
stringGrid1.RowCount := (Bitmap.Height div iHucrePix) + 1;
stringGrid1.ColCount := (Bitmap.Width div iHucrePix) + 1;
StringGrid1.DefaultColWidth := 8;
StringGrid1.DefaultRowHeight := 8;
j := 0;
sat := 1;
while j <= Bitmap.Height do begin
i := 0;
sut := 1;
while i <= Bitmap.Width do begin
if Hucre( Bitmap.Canvas, i, j, iHucrePix ) then
begin
StringGrid1.Cells[sut, sat] := 'x';
end;
inc(i, iHucrePix);
inc(sut);
end;
inc(j, iHucrePix);
inc(sat);
end;
Image1.Picture.Bitmap.Assign(Bitmap);
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with TStringGrid(Sender) do begin
if Cells[aCol, aRow] = 'x' then
begin
Canvas.Brush.Color := clRed;
Canvas.FillRect( Rect );
end;
end;
end;
-
- Üye
- Mesajlar: 155
- Kayıt: 10 Oca 2014 01:08
- Konum: izmir/Buca
Re: Noktaların Koordinat Kayıtları
Muharrem Bey inceleyip sizi sonuç hakkında buradan bilgilendireceğim. Teşekkürler ve de iyi geceler.
Re: Noktaların Koordinat Kayıtları
Buradaki örnek 20 pixel kare seviyesini tek kareye düşürüyor. Yani 1/20 küçültme yapıyor.
Sizin incelemek durumunda olduğunuz nokta ağırlıklı olarak kaynak noktaların belli karelere denk gelecek şekilde olup olmayacağı hususdur.
Başarılar.
Sizin incelemek durumunda olduğunuz nokta ağırlıklı olarak kaynak noktaların belli karelere denk gelecek şekilde olup olmayacağı hususdur.
Başarılar.
Re: Noktaların Koordinat Kayıtları
Bir de eğer noktalar belirli bir ölçümleme sonucu elde edilen grafik ise ki burada öyle bir dağılım ve örüntüsüzlük algıladım.
- Bu durumda her noktanın merkez noktasını referans kabul ederek veritabanı kaydı tutabilirsiniz.
- Nasıl olacak ? Kareler şeklinde standart hücreler değil de soldan sağa yukarıdan aşağıya tarama yapılarak en az 1 noktaya isabet edildiği başlangıç offsetleri be noktanın sona erdiği bitiş offsetlerinin farkları sizin merkez offset değerini verecektir.
- O zaman bu nokta 20 kare pixel çapında ise nokta sol üst offsetinden başlayan +10,+10 offsetlik nokta merkez koordinatıdır diyebileceksiniz.
- Bu durumda her noktanın merkez noktasını referans kabul ederek veritabanı kaydı tutabilirsiniz.
- Nasıl olacak ? Kareler şeklinde standart hücreler değil de soldan sağa yukarıdan aşağıya tarama yapılarak en az 1 noktaya isabet edildiği başlangıç offsetleri be noktanın sona erdiği bitiş offsetlerinin farkları sizin merkez offset değerini verecektir.
- O zaman bu nokta 20 kare pixel çapında ise nokta sol üst offsetinden başlayan +10,+10 offsetlik nokta merkez koordinatıdır diyebileceksiniz.