के रूप में काम नहीं कर रहा है, मैं Zhang-Suen thinning algorithm का उपयोग करने की कोशिश कर रहा हूं। मैंने जावा में इसे लागू करने का प्रयास किया है। लेकिन समस्या यह है कि यह मुझे एक पिक्सेल चौड़ाई रेखा के रूप में किनारों को नहीं पाता है। पहली बार मैं इस एल्गोरिदम का उपयोग कर रहा हूं और मुझे नहीं पता कि मेरे तर्क में क्या गलत है।झांग-सुएन पतला एल्गोरिदम कार्यान्वयन
क्या मैं हासिल करना चाहते हैं:
क्या मैं प्राप्त करने में सक्षम हूँ:
public void thinStepI(){
delList.clear();
neighbor = 0;
connectivity = 0;
for(int i=4;i<width-4;i++)
for(int j=4;j<height-4;j++){
p = pixelList[i][j];
if (p == 1){
p1 = pixelList[i-1][j];
p2 = pixelList[i-1][j+1];
p3 = pixelList[i][j+1];
p4 = pixelList[i+1][j+1];
p5 = pixelList[i+1][j];
p6 = pixelList[i+1][j-1];
p7 = pixelList[i][j-1];
p8 = pixelList[i-1][j-1];
neighbor = p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8;
if (p1 == 0 && p2 == 1)
connectivity ++;
if (p2 == 0 && p3 == 1)
connectivity ++;
if (p3 == 0 && p4 == 1)
connectivity ++;
if (p4 == 0 && p5 == 1)
connectivity ++;
if (p5 == 0 && p6 == 1)
connectivity ++;
if (p6 == 0 && p7 == 1)
connectivity ++;
if (p7 == 0 && p8 == 1)
connectivity ++;
if (p8 == 0 && p1 == 1)
connectivity ++;
if (connectivity == 1 && (neighbor >= 2 && neighbor <= 6) &&
(p1 * p3 * p5 == 0) && (p3 * p5 * p7 == 0)){
delList.add(i);
delList.add(j);
}
}
}
int length = delList.size();
if (length != 0){
for(int i =0; i < (length - 1); i+=2){
pixelList[delList.get(i)][delList.get(i+1)] = 0;
System.out.println("oldu");
}
thinStepI();
}
}
public void thinStepII(){
delList.clear();
neighbor = 0;
connectivity = 0;
for(int i=4;i<width-4;i++)
for(int j=4;j<height-4;j++){
if (pixelList[i][j] == 1){
p = pixelList[i][j]; // ** Origin Pixel **
p1 = pixelList[i-1][j];
p2 = pixelList[i-1][j+1];
p3 = pixelList[i][j+1];
p4 = pixelList[i+1][j+1];
p5 = pixelList[i+1][j];
p6 = pixelList[i+1][j-1];
p7 = pixelList[i][j-1];
p8 = pixelList[i-1][j-1];
neighbor = p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8;
if (p1 == 0 && p2 == 1)
connectivity ++;
if (p2 == 0 && p3 == 1)
connectivity ++;
if (p3 == 0 && p4 == 1)
connectivity ++;
if (p4 == 0 && p5 == 1)
connectivity ++;
if (p5 == 0 && p6 == 1)
connectivity ++;
if (p6 == 0 && p7 == 1)
connectivity ++;
if (p7 == 0 && p8 == 1)
connectivity ++;
if (p8 == 0 && p1 == 1)
connectivity ++;
if (connectivity == 1 && (neighbor >= 2 && neighbor <= 6) &&
(p1 * p3 * p7 == 0) && (p1 * p5 * p7 == 0)){
delList.add(i);
delList.add(j);
}
}
}
int length = delList.size();
if (length != 0){
for(int i =0; i < (length - 1); i+=2){
pixelList[delList.get(i)][delList.get(i+1)] = 0;
System.out.println("oldu2");
}
thinStepII();
}
}
कहाँ कि खड़ी कर रहा है मेरी तर्क में त्रुटि है मुझे गलत परिणाम प्राप्त करने के लिए?
आपका प्रश्न क्या है? – tskuzzy
जैसा कि मैंने शोध किया है, इसे पात्रों को एक पंक्ति के रूप में पतला करना चाहिए। मेरा मतलब है, प्रत्येक चरित्र में दूसरी छवि में एक चौड़ाई वाली रेखाएं होनी चाहिए। लेकिन यह पत्रों के फ्रेम के रूप में मिल रहा है। मुझे केवल दूसरी छवि में ही चाहिए। – Ecrin