मैं एक अनुप्रयोग को लागू करने की कोशिश कर रहा हूं जो शिप्पर विकृति फ़िल्टर का उपयोग करता है। मैं here से एल्गोरिदम का उपयोग कर रहा हूं जो getixix() और setpixel() विधियों द्वारा पिक्सल स्थान बदलता है। मेरी समस्या यह है कि यह एंड्रॉइड डिवाइसों के लिए बहुत धीमी है और ऐसे अनुप्रयोग हैं जो मेरे दृष्टिकोण की तुलना में समान क्षेत्र (और अन्य) फ़िल्टर तरीके को लागू करते हैं। (उदाहरण के लिए Picsay Pro ऐप) क्या कोई भी तेजी से विरूपण एल्गोरिदम खोजने या लागू करने के लिए दिशा साझा या निर्देश दे सकता है।तेजी से छवि विरूपण एल्गोरिदम खोज रहे हैं
वास्तविक फिल्टर कि एल्गोरिथ्म लागू करता है:
public boolean sphereFilter(Bitmap b, boolean bSmoothing)
{
int nWidth = b.getWidth();
int nHeight = b.getHeight();
Point [][] pt = new Point[nWidth][nHeight];
Point mid = new Point();
mid.x = nWidth/2;
mid.y = nHeight/2;
double theta, radius;
double newX, newY;
for (int x = 0; x < nWidth; ++x)
for (int y = 0; y < nHeight; ++y)
{
pt[x][y]= new Point();
}
for (int x = 0; x < nWidth; ++x)
for (int y = 0; y < nHeight; ++y)
{
int trueX = x - mid.x;
int trueY = y - mid.y;
theta = Math.atan2((trueY),(trueX));
radius = Math.sqrt(trueX*trueX + trueY*trueY);
double newRadius = radius * radius/(Math.max(mid.x, mid.y));
newX = mid.x + (newRadius * Math.cos(theta));
if (newX > 0 && newX < nWidth)
{
pt[x][y].x = (int) newX;
}
else
{
pt[x][y].x = 0;
pt[x][y].y = 0;
}
newY = mid.y + (newRadius * Math.sin(theta));
if (newY > 0 && newY < nHeight && newX > 0 && newX < nWidth)
{
pt[x][ y].y = (int) newY;
}
else
{
pt[x][y].x = pt[x][y].y = 0;
}
}
offsetFilterAbs(b, pt);
return true;
}
कोड कि परिकलित पिक्सल की स्थिति बदल देता है।
public boolean offsetFilterAbs(Bitmap b, Point[][] offset)
{
int nWidth = b.getWidth();
int nHeight = b.getHeight();
int xOffset, yOffset;
for(int y=0;y < nHeight;++y)
{
for(int x=0; x < nWidth; ++x)
{
xOffset = offset[x][y].x;
yOffset = offset[x][y].y;
if (yOffset >= 0 && yOffset < nHeight && xOffset >= 0 && xOffset < nWidth)
{
b.setPixel(x, y, b.getPixel(xOffset, yOffset));
}
}
}
return true;
}
[छवि वारिंग - बल्गे प्रभाव एल्गोरिदम] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/5055625/image-warping-bulge-effect-algorithm) –
हां, यह बहुत अधिक डुप्लिकेट है, लेकिन ध्यान दें कि उस प्रश्न का स्वीकार्य उत्तर * नहीं * वास्तव में वह है जिसे आप यहां चाहते हैं - जो आप चाहते हैं वह जीएलएसएल शेडर है। –
@ ब्लूराजा, मैं वर्तमान में आपके लिंक पर पहले से ही एक ही एल्गोरिदम का उपयोग कर रहा हूं और यह अभी भी एंड्रॉइड डिवाइस – Tony