Tekstil Teknolojileri Elektronik Dergisi Cilt: 7, No: 2, 2013 (1-6) Electronic Journal of Textile Technologies Vol: 7, No: 2, 2013 (1-6) TEKNOLOJİK ARAŞTIRMALAR www.teknolojikarastirmalar.com e-issn:1309-3991 Makale (Article) Bekir AKSOY *, Mehmet DAYIK **, Süleyman TAŞKIN ** * Süleyman Demirel Üniversitesi Senirkent MYO Bilgisayar Teknolojileri Bölümü Isparta/TÜRKİYE ** Süleyman Demirel Üniversitesi Mühendislik Fakültesi Tekstil Mühendisliği Bölümü Isparta/TÜRKİYE Özet Son yıllarda online ürün alışverişlerinde ciddi ölçüde artışlar yaşanmaktadır. Bu alışverişte tüketiciler, alacakları tekstil ürününün farklı desenli kumaşlarında nasıl görüneceğini gerçeğe yakın bir şekilde görmek isteyeceklerdir. Bu çalışmada, 2 boyutlu bir desenin, çekilen 2 boyutlu bir fotoğraftaki model üzerinde kıvrımlı ve gölgeli bölgelerdeki farklılaşmaları kaybetmeyecek şekilde simülasyonu sağlanmıştır. Model fotoğrafı üstündeki tüm pikseller yorumlanarak gölge tonlamaları ve kıvrımlar gerçeğe uygun bir şekilde simüle edilir. Anahtar Kelimeler: simülasyon, konfeksiyon, programlama, 2 boyutlu resim Pattern Simulation Programme On 2D Photo Abstract Online shopping has dramatically increased in recent years. In this purchasing process, consumers will want to see how different patterned fabrics of the textile product that they are going to buy, will look as close to reality. In this study, a 2D pattern has been simulated on a model in a 2D photo without losing variations at curved and shaded areas. Shadow tones and curves are simulated as the exact real one by reading all the pixels on the model photo. Key words: simulation, garment industry, programming, 2D photo Bu makaleye atıf yapmak için Aksoy B., Dayık M,, Taşkın S., İki Boyutlu Resim Üzerinde Desen Simülasyon Program Tekstil Teknolojileri Elektronik Dergisi 2013,7(2) 1-6 How to cite this article Aksoy B., Dayık M,, Taşkın S., Pattern Simulation Programme On 2D Photo Electronic Journal of Textile Technologies, 2013, 7(2) 1-6 1
Teknolojik Araştırmalar: TTED 2013 (2) 1-6 1. GİRİŞ Popülerliği giderek artan e-ticaret sistemlerinde, tüketiciler alacakları ürünün farklı türlerini ve farklı desenlerdeki görünümlerini görmek istemektedirler. Ayrıca, üreticiler de aynı şekilde ürünün üretim aşaması öncesinde o ürünün gerçekte neye benzeyeceğini, üretilecek kumaşın ve o kumaştaki desenin ilgili ürüne uyup uymadığını görmek istemektedirler. Bu nedenle tüketicilerin ürünü satın almadan önce, üretici firmaların ise, üretimi gerçekleştirmeden önce ürünün simülasyonunu görmeleri büyük bir avantaj sağlayacaktır. Tasarımcılar, üretici firmalar için bu simülasyonu resim işleme programları yardımıyla yapmaya çalışmaktadırlar. Fakat bu işlem hem uzun zaman almaktadır, hem de bu iş için ayrıca bir kişinin çalışması gerekmektedir. Ayrıca, bu şekilde yapılan üründe gölgeler ve kıvrımlar malesef tam anlamıyla simüle edilememektedir. Üreticiler için bu şekilde bir çözüm varken, tüketiciler için ise bir çözüm bulunmamaktadır. Tüketiciler kısa sürede pek çok ürün denemek isteyeceklerdir. Çalışmamız kısa sürede bir ürünün çok çeşitli şekillerini görmeyi sağlamaktadır. Ayrıca farklı çalışma kolları için de uyarlanabilmektedir. Örneğin; elbise gibi konfeksiyon sektörlerinde, koltuk gibi mobilya sektöründe, perde gibi ev tekstili sektöründe vb. bir çok sektör için kullanılabilir. 2. MODELİN OLUŞTURULMASI İşlenecek model resminin ve desenin RGB color modunda olması gerekmektedir. Ayrıca model resminde işlenecek modelin, açık renkli -tercihen beyaz- olması gerekmektedir. Bunun nedeni ise, desen piksellerinin model pikselleriyle girişim yaptırılmasıdır. Örneğin; sarı elbiseli bir model tercih ettiğimizde desendeki beyaz kısımlar bu modele giydirilmek istendiğinde, beyaz olan yerlerin elbise rengi olan sarı ile beyaz arasında bir renk olduğu görülecektir. Dolayısıyla model fotoğrafında giydirilecek bölgenin beyaz renkte olması tercih edilmelidir. Açık renk kıyafetli bir modelin giydirilecek bölgesi resim editör programlarıyla siyah-beyaz hale getirilebilir. Bu sayede yine renk tonlamalarında çok fazla bir kayıp yaşanmayacaktır. Simülasyon programımızda ürünün fotoğrafı piksel piksel okunarak yorumlanmaktadır. Bu yorumu fotoğrafın RGB (Red-Green-Blue) kanallarının değerlerine bakarak çıkarmaktayız. Bu RGB değerleri ne kadar koyuysa o kadar fazla kıvrım oluşmuş demektir. Fotoğraftaki Red değeri ile x ekseni doğrultusuna (yatay) desenin pikselleri koyu yere doğru çekilmiş, bu sayede orada bir kıvrım görünümü verilmesi sağlanmıştır. Green değeri de aynı şekilde red değeri gibi pikselleri y ekseni doğrultusunda (dikey) desen çekilerek kıvrım görünümü oluşturulmuştur. Bir fotoğrafta desenin giydirilmek istenen alanı dışında fotoğrafta tablo, koltuk, çanta vb. farklı objeler bulunabilir. Programın bu objeler dışında yalnızca desenle girişim yaptırılacak bölgeyle ilgilenmesini sağlamamız gerekiyor. İşte bu noktada fotoğrafın blue kanalının değeri ise desenin fotoğraf üzerinde nereye giydirileceğini programa bildirmektedir. Bu RGB değerleri 0-255 arasında değerler almaktadırlar. Red ve green kanallarındaki bu değer 0' a ne kadar yaklaşırsa yani ne kadar koyulaşırsa o yoğunlukta desen çekilerek kıvrımlar oluşturulmuştur. Blue değerinde ise 0' a yakın olduğu yerlerde desenin giydirilmesi gerektiği, 255 e yakın olan yerlerde ise desenin giydirilmeyeceği yerler programa bildirilmiş olacaktır. Çekilen bir fotoğrafta programın simülasyon işlemini gerçekleştirmesi için sadece blue değeri belirtilebilir. Ancak bazı yerlerde nadir de olsa bu desenin çekilme işlemi bozulmalara neden olabilir. Daha gerçekçi bir simülasyon oluşturmak için red ve green değerlerinin de düzeltilmesinin yararı vardır. Fakat red ve green kanallarının değerlerinin değiştirilmesi opsiyoneldir. Bu ayarlamaların dışında, fotoğrafımızı parçalara ayırmakta yine gerçekçi bir simülasyon için uygundur. Örneğin; bir koltuk düşündüğümüzde, bu koltuğun üzerine bir desen giydirilmek istendiğinde, fotoğraf 2
Teknolojik Araştırmalar: TTED 2013 (2) 1-6 tek parça olduğu için kumaşında düz bir şekilde desenin devamı seklinde yerleştirilecektir. Fakat bu koltuğun kolları, yastıkları ayrı parçalar olarak hazırlandığında desen direk resim editör programlarıyla giydirilmiş gibi görünmek yerine, desenin farklı parçaları koltuğun farklı parçalarında farklı yerlerde bulunacak, bu sayede daha gerçekçi bir simülasyon yapılmış olacaktır. Programımız, parçalar üzerindeki deseni hareket ettirip, desenin farklı konumlarını uygulamaya imkan vermektedir. Şekil 1- Örnek koltuk modeli ve parçaları Şekil 2- Koltuğun minder parçasının RGB kanallarının değerleri gösterilmiştir. 3
Teknolojik Araştırmalar: TTED 2013 (2) 1-6 Şekil 3 - Solda oluşturmuş olduğumuz model, sağda ise programımız tarafından giydirilmiş model görülmektedir. Şekil 4 - Solda red kanalı, sağda ise green kanalı görülmektedir. Green kanalının daha beyaz olduğuna dikkat ediniz. Bunun nedeni yatay çekme miktarının azaltılmak istenmesidir. 3. PROGRAMLAMA 3.1 Piksel Hesaplama Programımız içinde bir x koordinatı için, bir de y koordinatı için toplamda 2 adet trackbar (slider) bulunmaktadır. Bu trackbarlar desende yapılacak olan çekmelerin şiddetini belirlemek için oluşturulmuştur. Program öncelikle, sayısal olarak (x, y) koordinatında bulunan desen pikseli yerine (x 1, y 1 ) koordinatında bulunan desen pikselini kullanılacağını hesaplayacaktır. Yani normal bir giydirme işleminde modelde 4
Teknolojik Araştırmalar: TTED 2013 (2) 1-6 karşılık gelen (x, y) koordinatı, yine desende (x, y) koordinatına denk gelmektedir. Fakat programımız 0'a yakın olan red ve green kanal değerlerinde yine (x, y) koordinatını kullanmak yerine yeni bir (x 1, y 1 ) koordinatı hesaplayacaktır. Aşağıdaki formülle her (x, y) koordinatındaki pikselin yeni (x 1, y 1 ) koordinatları belirlenir; buradaki hesaplanan pikselin red renk değeri, ise hesaplanan pikselin green renk değeridir, ve trackbarlarımızdan okunan 0-3 arasında değişen ondalıklı sayıdır. Bu hesaplama sayesinde modelin (x, y) koordinatına karşılık desende (x 1, y 1 ) koordinatı sayısal olarak bir dizi halinde alınacak ve bir sonraki bölümde, modelin renk tonuyla desenin renk tonu girişime sokulacaktır. Denemelerimizde desen piksel piksel taranırken (0, 0)'ıncı pikselden başlandığında desenin sürekli sola doğru çekildiği görülmüştür. Dolayısıyla, bu hesaplama, desenin tam orta noktası referans alınarak y için bu noktadan yukarı ve aşağı, x için ise sağa ve sola doğru taranarak yapılmıştır. 3.2 Desenin modele uygulanması Piksel hesaplamaları sayesinde, modelin hangi pikselinin, desenin hangi pikseline denk geldiğini bulmuş olduk. Şimdi ise, yapılması gereken bu desen piksellerinin model pikselleri üzerine giriştirilmesi işlemidir. Bunun için,z o alandaki renk değeri ne kadar koyuysa desenimizdeki pikselimizde o kadar koyu olmalı ki gölge efektini kaybetmeden verebilmemizi sağlamalıdır. Bunu yapmak için bu koyuluğu orjinal (RGB değerleriyle oynanmamış olan) modelimizin RGB renk değerlerini okuyarak almamız gerekiyor. İşlenecek alanın belirlenmesi için modelin ilgili parçasının blue renk değerine bakmalıyız. Bunun için kullandığımız formül ise; Blue için; Green için; Red için; Formüllerin anlaşılabilirliğini kolaylaştırmak amacıyla parçalara böldük. Bu denklemler yerine if-else bloklarıyla programımızı çalıştırdığımızda performansında çok fazla düşüş yaşadığımız için if-else blokları yerine renk girişimi formülleştirerek oluşturduk (Yalçın Kuş, Kişisel Görüşme, Temmuz 2012). Bu sayede gözle görülür bir performans artışı olmuştur.burada modelin ilgili pikselindeki parçasının blue renk değeri yani piksele girişim yaptırılıp yaptırılmayacağının belirlendiği değerdir, girişim yaptırılacak görüntünün blue değeri, girişim yaptırılacak görüntünün green değeri, de aynı şekilde girişim yaptırılacak görüntünün red değeridir, orjinal model 5
Teknolojik Araştırmalar: TTED 2013 (2) 1-6 fotoğrafının (RGB değerleriyle oynanmayan) blue değeri, green değeri,, ve ise desenimizin red, green ve blue değerleridir. red değeridir, Şekil 5 - Programımızla giydirilmiş koltuk desenleri 4. SONUÇ ve DEĞERLENDİRME Sonuç olarak, hem online alışveriş yapan tüketiciler hem de üreticiler için kısa sürede ürünlerin simülasyonlarını görmeleri açısından oldukça yararlı bir proje olmuştur. Üreticiler için zaman ve maliyet kaybını önlemeyi, tüketiciler için ise alacakları ürünün gerçeğe yakın simülasyonunu görerek karar vermelerini kolaylaştırmayı sağlayacaktır. 5. KAYNAKLAR 1. Algan,S., İstanbul 2012, Her Yönüyle C# 4.0 2. http://msdn.microsoft.com/en-us/library/5ey6h79d.aspx 3. http://www.aurigma.com/docs/gm/m_aurigma_graphicsmill_bitmap_lockbits.htm 4. https://github.com/steveniles/mandelzoom/wiki/using-lockbits-to-speed-up-image-processing 5. http://stackoverflow.com/questions/1563038/fast-work-with-bitmaps-in-c-sharp 6