আমি একটি চিত্রের 2D হর ডিসিভার্ট ওয়েভলেট ট্রান্সফর্ম এবং বিপরীত ডিডাব্লুটি করতে চাই। আপনি কি দয়া করে 2 ডি হর ডিস্রিট ওয়েভলেট ট্রান্সফর্ম এবং বিপরীত ডিডাব্লুটি একটি সাধারণ ভাষায় এবং একটি অ্যালগরিদম ব্যবহার করে আমি 2D হর ডাব্লুটি জন্য কোড লিখতে পারি তা ব্যবহার করে? গুগলে প্রদত্ত তথ্যগুলি খুব প্রযুক্তিগত ছিল I চিত্রটিকে 4 টি সাব-ব্যান্ডে বিভক্ত করার মতো প্রাথমিক বিষয়গুলি আমি বুঝতে পেরেছিলাম: এলএল, এলএইচ, এইচএল, এইচএইচ, তবে কীভাবে ডিডাব্লুটি এবং আইডিডব্লিউটি সঞ্চালনের জন্য কোনও প্রোগ্রাম লিখতে হয় তা আমি সত্যিই বুঝতে পারি না একটি চিত্র। আমি আরও পড়লাম যে DWT পুরোপুরি চিত্রটিতে সঞ্চালিত হওয়ার সাথে সাথে DCT এর চেয়ে আরও ভাল এবং তারপরে কিছু ব্যাখ্যা ছিল যা আমার মাথার শীর্ষে চলে গেছে I আমি এখানে ভুল হতে পারি তবে আমি মনে করি DWT এবং DCT সংক্ষেপণের কৌশলগুলি কারণ যখন তাদের উপর ডিডাব্লুটি বা ডিসিটি সঞ্চালিত হয় তখন চিত্রের আকার হ্রাস পায় op আশা করি লোকেরা আপনার জ্ঞানের একটি অংশ ভাগ করে নেবে এবং আমার জ্ঞান বাড়িয়ে তুলবে।
ধন্যবাদ
উত্তর: ইমেজ ফর্ম্যাটটির সাথে কি কিছু করার আছে? ডিডাব্লুটি-তে ব্যবহৃত "পিক্সেলের মান" কী? আমি এটিকে চিত্রটির আরজিবি মান বলে ধরে নিয়েছি।
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import java.io.*;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.imageio.ImageIO;
import java.awt.*;
import java.lang.*;
import java.util.*;
class DiscreteWaveletTransform
{
public static void main(String arg[])
{ DiscreteWaveletTransform dwt=new DiscreteWaveletTransform();
dwt.initial();
}
static final int TYPE=BufferedImage.TYPE_INT_RGB;
public void initial()
{
try{
BufferedImage buf=ImageIO.read(new File("lena.bmp"));
int w=buf.getWidth();
int h=buf.getHeight();
BufferedImage dwtimage=new BufferedImage(h,w,TYPE);
int[][] pixel=new int[h][w];
for (int x=0;x<h;x++)
{
for(int y=0;y<w;y++)
{
pixel[x][y]=buf.getRGB(x,y);
}
}
int[][] mat = new int[h][w];
int[][] mat2 = new int[h][w];
for(int a=0;a<h;a++)
{
for(int b=0,c=0;b<w;b+=2,c++)
{
mat[a][c] = (pixel[a][b]+pixel[a][b+1])/2;
mat[a][c+(w/2)] = Math.abs(pixel[a][b]-pixel[a][b+1]);
}
}
for(int p=0;p<w;p++)
{
for(int q=0,r =0 ;q<h;q+=2)
{
mat2[r][p] = (mat[q][p]+mat[q+1][p])/2;
mat2[r+(h/2)][p] = Math.abs(mat[q][p]-mat[q+1][p]);
}
}
for (int x=0;x<h;x++)
{
for(int y=0;y<w;y++)
{
dwtimage.setRGB(x,y,mat2[x][y]);
}
}
String format="bmp";
ImageIO.write(dwtimage,format, new File("DWTIMAGE.bmp"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
আউটপুটটি একটি কালো চিত্র যা মাঝখানে পাতলা রেখার সাথে সংক্ষিপ্তভাবে প্রকৃত আউটপুটটির কাছে নেই here আমি মনে করি আমি যুক্তিটি ভুলভাবে ব্যাখ্যা করেছি lease দয়া করে ভুলগুলি উল্লেখ করুন the শুভেচ্ছা সহ