Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi ile görüntü işleme
#11
Merhabalar ,
arkadaşlar yeri burasımıdır bilemedim ama, bir konuda desteğe ihtiyacım var,
bir resim içinde sarıya boyanmış renkler var (daha doğrusu bu resim iki resmin analizi yapılıp farkları bulunmuş ve farkların sarıya boyandığı bir resim) , bu resimdeki sarı renkleri canvas ile kutucuk içine almak istiyorum, ama bir türlü işin içinden çıkamadım,
konu hakkında yardımcı olabilecek bir arkadaş var mı acaba,
Cevapla
#12
Selamlar,

En basit yöntem ile sarı rengin değerini tespit etin (RBG olarak bir değeri olacaktır) daha sonra Canvası Pixel Pixel tarayıp Sol üst köşeyi tespit edersiniz. Bir de en alttaki sağ alt köşeyi tespit edip, arada kalan alanı zaten otomatik olarak tespit etmiş olursunuz. Canvas'ın pixel pozisyonundaki renk değerini de TBitmap.Canvas.Pixels[x, y] şeklinde kullanabilirsiniz.

Kolay Gelsin
Cevapla
#13
(30-05-2018, Saat: 09:11)Kuri_YJ Adlı Kullanıcıdan Alıntı: Selamlar,

En basit yöntem ile sarı rengin değerini tespit etin (RBG olarak bir değeri olacaktır) daha sonra Canvası Pixel Pixel tarayıp Sol üst köşeyi tespit edersiniz. Bir de en alttaki sağ alt köşeyi tespit edip, arada kalan alanı zaten otomatik olarak tespit etmiş olursunuz. Canvas'ın pixel pozisyonundaki renk değerini de TBitmap.Canvas.Pixels[x, y] şeklinde kullanabilirsiniz.

Kolay Gelsin

Merhabalar,
image içindeki yer alan sarı alan sadece bir tek kutucuk şeklindeyse sorun yok onu buluyorum, ama birden fazla olduğunda hangi kısım başlangıç , hangi kısım bitiş bulamıyorum, 
yani resim içinde birden fazla şekil olunca bulamıyorum,
ayrıca boyama işleminde sorun yok ben o sarı kısımları kırımızı kutuk içine alıp kullanıcıyı bilgilendirmek istiyorum.


Ek Dosyalar Resimler
   
Cevapla
#14
(30-05-2018, Saat: 12:32)selocanbaba Adlı Kullanıcıdan Alıntı:
(30-05-2018, Saat: 09:11)Kuri_YJ Adlı Kullanıcıdan Alıntı: Selamlar,

En basit yöntem ile sarı rengin değerini tespit etin (RBG olarak bir değeri olacaktır) daha sonra Canvası Pixel Pixel tarayıp Sol üst köşeyi tespit edersiniz. Bir de en alttaki sağ alt köşeyi tespit edip, arada kalan alanı zaten otomatik olarak tespit etmiş olursunuz. Canvas'ın pixel pozisyonundaki renk değerini de TBitmap.Canvas.Pixels[x, y] şeklinde kullanabilirsiniz.

Kolay Gelsin

Merhabalar,
image içindeki yer alan sarı alan sadece bir tek kutucuk şeklindeyse sorun yok onu buluyorum, ama birden fazla olduğunda hangi kısım başlangıç , hangi kısım bitiş bulamıyorum, 
yani resim içinde birden fazla şekil olunca bulamıyorum,
ayrıca boyama işleminde sorun yok ben o sarı kısımları kırımızı kutuk içine alıp kullanıcıyı bilgilendirmek istiyorum.

sarı alanı seçtikten sonra rengini özel bir renk yapıp sonra taramaya devam edip diğerlerinide değiştirebilirsiniz, en son yine de sarı olsun derseniz tarayıp özel verdiğiniz rengi sarı yapabilirsiniz. Çok anladığım bir konu değil aklıma gelen çözüm bu
Cevapla
#15
Selamlar,

Konu Poligon konusu. Yani 2 boyutlu uzayda poligonların tespitine yönelik bir konu. En basit yöntemini ben anlattım. Yani Sol Üst köşeden taramaya başlayıp, ilgili Pixel'in solunda sağında üstünde altında ve çapraz noktalarında aradığınız renk var mı diye bakacaksınız. Var ise demek ki bu nokta bir poligon parçasıdır deyip bir algoritma geliştirmeniz lazım. Ama kolay değil onu söyleyeyim.

Bunun dışında matematik modellemeleri var Poligon Tayini ve sınırlarını belirleyebilmek için. Bu nedenle bir matematikçiye danışmanızda fayda var. Onun ötesinde ben şöyle bir göz attığımda internete bu konu ile alakalı pek çok makale ve bilimsel yayın buldum ama biraz ağır gelir gibi.

İlerlemelerden haber verirseniz ve ben de bir şeyler bulursam haber veririm.

Kolay Gelsin
Cevapla
#16
(02-06-2018, Saat: 12:55)Kuri_YJ Adlı Kullanıcıdan Alıntı: Selamlar,

Konu Poligon konusu. Yani 2 boyutlu uzayda poligonların tespitine yönelik bir konu. En basit yöntemini ben anlattım. Yani Sol Üst köşeden taramaya başlayıp, ilgili Pixel'in solunda sağında üstünde altında ve çapraz noktalarında aradığınız renk var mı diye bakacaksınız. Var ise demek ki bu nokta bir poligon parçasıdır deyip bir algoritma geliştirmeniz lazım. Ama kolay değil onu söyleyeyim.

Bunun dışında matematik modellemeleri var Poligon Tayini ve sınırlarını belirleyebilmek için. Bu nedenle bir matematikçiye danışmanızda fayda var. Onun ötesinde ben şöyle bir göz attığımda internete bu konu ile alakalı pek çok makale ve bilimsel yayın buldum ama biraz ağır gelir gibi.

İlerlemelerden haber verirseniz ve ben de bir şeyler bulursam haber veririm.

Kolay Gelsin

Merhabalar,

valla bir gelişme katedemedim ya acaba bunun için filtre veya kütüphane var mıdır acaba ?
Cevapla
#17
Merhaba, aşağıdaki gibi basit bir kod yazdım, bende sonucu gayet kullanılabilir çıktı, bi deneyin isterseniz.
type
 PRGBTripleArray = ^TRGBTripleArray;
 TRGBTripleArray = array[0..32765] of TRGBTriple;



var
DCDesk: HDC;
bmp: TBitmap;
p: array of PRGBTripleArray;
x,y:integer;
begin
bmp := TBitmap.Create; // bitmap olustur
bmp.Width := Image1.Width; // width ayarla
bmp.Height := Image1.Height; // height ayarla
bmp:=Image1.Picture.Bitmap; // resmi bitmap e yukle

setlength(p,Image1.Height); // p nin boyutunu ayarla (bitmap in satır sayısı kadar)

for x:=0 to Image1.Height-1 do // her satır pikselleri taramak icin donguye sok
  begin // x dongu
     p[x]:=bmp.ScanLine[x]; // ilgili satırı tarayıp p ye yukle

for y:=0 to bmp.Width do begin // bitmap uzunlugu kadar donguye sok
if (y<bmp.Width-2) Then Begin  // sondaki 2 pikseli atıyorum sona tek çizgi atmasın diye
// onceki-sonraki piksel renklerini kontrol et
if (p[x][y].rgbtBlue<>p[x][y+1].rgbtBlue)
  then begin
  Image1.Canvas.Pixels[y,x]:=clred;
  Image1.Canvas.Pixels[y-1,x]:=clred;
       end;
// ustteki-alttaki piksel renklerini kontrol et
if (x>0) Then Begin
if (p[x-1][y].rgbtBlue<>p[x][y].rgbtBlue)
  then begin
  Image1.Canvas.Pixels[y,x-1]:=clred;
  Image1.Canvas.Pixels[y,x-2]:=clred;
       End;
            End;
                     End;
                        end;  // bitmap uzunlugu kadar donguye sok

  end;  // x dongu
i

öncesi
res_isleme_oncesi.bmp


sonrası
res_isleme_sonrasi.bmp

Bu arada ben sadece mavi rengi kontrol ettirdim siz rgb değerinin tamamını kontrol edebilirsiniz.
birde forma bir bitmap koyup onun içindeki resmi alıp işledim sizde zaten o şekilde gelecektir resim, ona göre ayarlarsınız.
WWW
Cevapla
#18
Selamlar,

Elinize emeğinize sağlık.

Kolay Gelsin
Cevapla
#19
(12-06-2018, Saat: 13:17)esistem Adlı Kullanıcıdan Alıntı: Merhaba, aşağıdaki gibi basit bir kod yazdım, bende sonucu gayet kullanılabilir çıktı, bi deneyin isterseniz.
type
 PRGBTripleArray = ^TRGBTripleArray;
 TRGBTripleArray = array[0..32765] of TRGBTriple;



var
DCDesk: HDC;
bmp: TBitmap;
p: array of PRGBTripleArray;
x,y:integer;
begin
bmp := TBitmap.Create; // bitmap olustur
bmp.Width := Image1.Width; // width ayarla
bmp.Height := Image1.Height; // height ayarla
bmp:=Image1.Picture.Bitmap; // resmi bitmap e yukle

setlength(p,Image1.Height); // p nin boyutunu ayarla (bitmap in satır sayısı kadar)

for x:=0 to Image1.Height-1 do // her satır pikselleri taramak icin donguye sok
  begin // x dongu
     p[x]:=bmp.ScanLine[x]; // ilgili satırı tarayıp p ye yukle

for y:=0 to bmp.Width do begin // bitmap uzunlugu kadar donguye sok
if (y<bmp.Width-2) Then Begin  // sondaki 2 pikseli atıyorum sona tek çizgi atmasın diye
// onceki-sonraki piksel renklerini kontrol et
if (p[x][y].rgbtBlue<>p[x][y+1].rgbtBlue)
  then begin
  Image1.Canvas.Pixels[y,x]:=clred;
  Image1.Canvas.Pixels[y-1,x]:=clred;
       end;
// ustteki-alttaki piksel renklerini kontrol et
if (x>0) Then Begin
if (p[x-1][y].rgbtBlue<>p[x][y].rgbtBlue)
  then begin
  Image1.Canvas.Pixels[y,x-1]:=clred;
  Image1.Canvas.Pixels[y,x-2]:=clred;
       End;
            End;
                     End;
                        end;  // bitmap uzunlugu kadar donguye sok

  end;  // x dongu
i

öncesi
res_isleme_oncesi.bmp


sonrası
res_isleme_sonrasi.bmp

Bu arada ben sadece mavi rengi kontrol ettirdim siz rgb değerinin tamamını kontrol edebilirsiniz.
birde forma bir bitmap koyup onun içindeki resmi alıp işledim sizde zaten o şekilde gelecektir resim, ona göre ayarlarsınız.

Aslında biraz daha detaylandırılsa çok güzel makale çıkar buradan Wink
There's no place like 127.0.0.1
WWW
Cevapla
#20
Makale değilde hocam, birkaç yıl önce çok çok uçuk bir projem vardı, ondan dolayı azda olsa öğrenmek zorunda kalmıştım şu görüntü işleme olaylarını, fakat kısmet olmadı yapmak. Olurda vakit bulup yaparsam proje olarak paylaşırım belki, gerçi projeyi kime anlattıysam küfürle karışık alay ettiler hep benle Sad
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi ile geliştirdiğiniz uygulamalar neler? - İki Ödüllü Mr.Developer 23 18.654 21-09-2026, Saat: 15:51
Son Yorum: bajerli
  yapay zeka delphi kl007 9 1.228 26-02-2026, Saat: 09:12
Son Yorum: mrmarman
  Win 11 ve Delphi 7 Minimize sorunu. enigma 7 1.087 11-02-2026, Saat: 10:27
Son Yorum: RAD Coder
Question Delphi formunu nasıl otomatik tam ekran yapabilirim ? erdemklt0 2 670 23-01-2026, Saat: 10:02
Son Yorum: csunguray
  Delphi SLL kullanım sorunu Bay_Y 12 2.196 22-12-2025, Saat: 18:11
Son Yorum: Bay_Y



Konuyu Okuyanlar: 1 Ziyaretçi