General description
In this topic, we are looking at processing an image to obtain a stylized version of it in the form of a sketch.
A sketch image has the following characteristics:
It's black and white with no shades of gray.
Preserves image contours. Contours are made using Sobel filter + binarization
The hatching lines show where the image is darker. The denser the hatching lines are in an area, the darker the image colors are in that area.
In the attached image1, you can see several results obtained from applying the approach you need to implement within this topic.
As part of the assignment, you must implement a specific proposed method, which is described in the following sections. An overview of the steps for creating a sketch using this method can be seen in the image below. These steps are presented in detail in the following sections.
The algorithms below have as parameters different threshold values, hatching directions, hatching density, etc. These values are at your discretion to set provided that your program has visual results on different images in which image contours and hatch lines are clearly visible.
Sobel filter + binarization
To build the outlines of the sketch, we will apply the Sobel filter to the original image and binarize it. To binarize, we will determine that a pixel is black if the Sobel filter value is greater than a threshold. If the value is less than a threshold, then the pixel will be white. The threshold value is of your choice.
Separable smoothing filter
Before applying the hatching, it is necessary to smooth the image using a median filter. The filter used will be 25×25 in size.
Applying the filter using the ad-hoc algorithm requires performing 625 texture samples for each pixel.
A more optimal algorithm is to separate the filter into two filters of sizes 25×1 and 1×25 respectively using the idea here . The smoothing will be done in two steps.
We start with the original image:
The first step is to perform horizontal smoothing. Each pixel will be equal to the arithmetic mean of the pixel and its 24 neighbors on the same line as the pixel.
The second step is to perform a vertical smoothing on this result. Each pixel will be equal to the arithmetic mean of the pixel and its 24 neighbors on the same column as the pixel.
This method reduces the total number of texture samples for each pixel from 625 to 50.
Hatch filter
Hatching pattern
For the hatch filter, the first step is to create a hatch pattern, consisting of thin, parallel lines.
From the equation of the line we have:
a⋅x+b⋅y+c=0
where { x , y}∈[0,1]
represents the coordinate of a pixel in texture space.
To obtain parallel lines, it is enough to change the parameter c
.
a⋅x+b⋅y+c1=0a⋅x+b⋅y+c2=0
To obtain a strip (a line of a certain thickness), we can rearrange the equation into:
a⋅x+b⋅y∈[−c1,−c2]
To obtain parallel strips that repeat infinitely, we can apply a periodic function such as sine or cosine to the left of the equation:
sin(a⋅x+b⋅y)∈[−c1,−c2]
Because the sine function produces values between -1 and 1, we can simplify the equation by using a single inequality:
sin(a⋅x+b⋅y)>c
where the parameter change c
will change the thickness of the lines, and changing the parameters a
and b
will lead to a change in their frequency and direction.
More results for applying the hatching pattern described above with different values of a, b and c
can be viewed in the image attached.
Apply hatch pattern
To perform the hatching process only for certain areas of the image and thus track the details present in it, we must use the hatching model only for pixels that meet certain criteria. The simplest criterion is to transform the color of the pixel from the RGB model into a grayscale, as in Lab 08 , consider that this grayscale is the intensity of the color in the pixel, and use the hatching model only when the pixel has an intensity lower than a threshold.
In the end result, 3 hatching filters should be used, all with different directions and intensity thresholds. The choice of these values is up to you.
To diversify the results, you must introduce the use of white lines on a black background in at least one of the 3 hatching filters and black lines on a white background in at least one other hatching filter. The black background is considered only for pixels that respect the intensity threshold.
Result presentation
To more easily present the obtained result, the application you have created must allow individual visualization of the results for all intermediate steps of the method. The keyboard keys will be used as follows:
0 key - View original image;
Key 1 - View Sobel filter result + binarization;
Key 2 - View horizontal smoothing filter result;
Key 3 - View final smoothing filter result - horizontal and vertical. Hereafter it is considered that this is also the result of the smoothing filter;
Key 4 - View smoothing filter result + apply hatching filter 1;
Key 5 - View smoothing filter result + apply hatching filter 2;
Key 6 - View smoothing filter result + apply hatching filter 3;
Key 7 - View smoothing filter result + apply all 3 hatching filters;
Key 8 - View final result of the method.
By default, the application will open with the final result view.
There are the following restrictions in solving the problem:
The solution must be implemented in the C/C++ programming language running on CPU.
It is NOT allowed to use any libraries to implement image processing and analysis methods in solving the assignment. Libraries may be used for other aspects of the assignment, such as loading and saving image files.
The use of any other programming language other than those mentioned is NOT permitted.
Hi there,I'm biddin on your project "OpenGL Image processing"
I have read your project description and i'm an expert in C programming and machine learning therefore i can do this project for you perfectly.I still have a few questions. please leave a message on my chat so we can discuss the budget and deadline of the project.
Thanks.
..
.
Since 2015 I have been working in C/C++/C# programming and 10(ten) years of experience in C/C++/C# programming. Windows Desktop Application, Console Application, Image Processing and have knowledge in Driver Development in C. Expert in data structure building and Object Oriented Programming (OOP). Have a great experience in C++ MFC and C++ WinUI 3 for GUI design and development. Also expert in C/C++ GPU CUDA programming. If you want a good delivery of the project, then send me a message, please.
Hello, good time
Hope you are doing well
I'm expert in MATLAB/Simulink, Python, HTML5, CSS3, Java, JavaScript and C/C#/C++ programming and by strong mathematical and statistical background, have good flexibility for solve your project. I have many experience practical and theoretical in implementation different algorithms (such as: state estimation and Kalman filter, design controller, analysis closed loop stability, signal and systems, signal processing, heuristic optimization, fuzzy logic, neural network and machine/deep learning fields). Evidence of this claim exist in the portfolio.
I have read your project description and I can help you (without any plagiarism).
Please send me the details of your project.
Thanks for attention
100% Jobs Completed, 100% On Budget, 100% On Time
⭐⭐⭐⭐⭐ 5-star reviews
Hello Hope you are doing well!
This is Efan , I checked your project detail carefully.
I am pretty much experienced with OpenGL, C++ Programming, Computer Graphics and C Programming for over 8 years, I can update you shortly.
Cheers
Efan
Hey there,
I have worked on similar project so i can help u with it. Please feel free to contact me. I can help u with C Programming, Computer Graphics, OpenGL and C++ Programming.
Also here is a link to my profile: https://www.freelancer.com/u/ayesha0124
Regards
Hey there, I am a software engineer with over 5 years of experience in OpenGL and image processing algorithms. I can implement the outlined sketch generation method, including Sobel filtering, smoothing with separable filters, and custom hatching patterns, adhering strictly to the project requirements. My expertise includes C/C++ programming, OpenGL, and algorithm optimization for performance.
With my experience, I’m confident I can deliver a fully functional solution efficiently, including the required step-by-step visualization using OpenGL. Feel free to check my profile and reach out for further discussion.
Regards,
Hello lewisparma,
I am rajat23091969, and I am excited to submit a proposal for your OpenGL image processing project. With my expertise in C/C++, Computer Graphics, and OpenGL, I am confident in delivering a stylized sketch image that meets your requirements.
I will meticulously implement the Sobel filter, binarization, and hatching algorithm as per your specifications to ensure accurate results. Additionally, I will optimize the processing steps to enhance performance and streamline the visualization process. My commitment to detail and quality assurance will guarantee a final result that aligns with your vision.
I look forward to discussing this project further with you and potentially collaborating to bring your idea to life. Thank you for considering my proposal.
Hi
I am Leo Yeung from Hong Kong who has over 8 years of experience in Software development.
I'm really pumped about this opportunity! I have checked your job description for OpenGL Image processing. I recently led a project with similar challenges and nailed it. I am very proficient in OpenGL, C++ Programming, Computer Graphics and C Programming, and I'm ready to bring my skills and energy to your project.
I can deliver you 100 % satisfied result within your deadline. I would be delighted to have a brief chat to discuss the project further. Thank you for considering me for this opportunity, and I look forward to working together with you on this project.
Let's achieve your goal together!
Best regards,
Leo Yeung
Dear Hiring Manager,
I am excited about the opportunity to work on the OpenGL Image Processing project. With a strong background in Computer Graphics, I am well-equipped to implement the specific proposed method outlined in the project description. My expertise in image processing, including applying filters, binarization, and hatching patterns, aligns perfectly with the requirements of this project.
I am confident in my ability to deliver high-quality results that meet your expectations. I am committed to creating a distinctive sketch image that preserves contours and hatching lines effectively. Additionally, I am dedicated to providing a user-friendly application that allows for easy visualization of the intermediate steps in the image processing method.
I am eager to collaborate with you on this project and bring your vision to life. Thank you for considering my proposal.
Best regards,
Merry Christmas.
I am writing to express my strong interest in your project.
With my expertise in OpenGL, C Programming, Computer Graphics and C++ Programming, I am confident that I can deliver the best solutions and high-quality results for your needs.
I guarantee you'll receive personalized attention to detail every step of the way—from gathering requirements to defining scope—to ensure your vision is perfectly aligned with the delivered product.
Shall we discuss your project in more detail via chatting?
Dedicated Freelancer Ready to Elevate Your Project for OpenGL Image processing. I have a solid background in C++ Programming, Computer Graphics, OpenGL and C Programming, I bring valuable expertise to your project.
I have successfully completed many projects with 100% client satisfaction. Clear and timely communication is my priority. I believe in keeping you informed throughout the project lifecycle.
I am available for a discussion at your earliest convenience. Please feel free to contact me to further discuss your project details.
Thank you for considering my bid. I am excited about the opportunity to contribute to the success of your project.
Please visit my portfolio to check my previous work samples, here - https://www.freelancer.com/u/GraphicsHub2k24?page=portfolio&w=f&ngsw-bypass=
Best regards,
Muhammad Asim Khan
Hello,
Drawing on my significant experience as a Full Stack Developer, I recognize the immense challenges inherent in your OpenGL image processing project. That's why I'm confident that my strong skills in C programming and my wider technological breadth will make me the ideal fit for this task. In order to create stylized sketches, it is absolutely crucial that you have an expert who can comprehensively handle all aspects of the project, from utilizing Sobel filter to binarization to creating and applying hatch patterns effectively.
My expertise goes beyond just knowing my way around languages like C#, C++, HTML5, Java and Python; I have proven experience with other core technologies essential to this job such as OpenGL and image processing. Understanding the importance of delivering projects that are not only functional but also easily maintainable, I take pride in writing quality code. Through my collaborative approach, I can ensure your goals remain at the forefront of what we do while adapting my skills to meet your unique needs.
Lastly, speaking to my problem-solving abilities, technology requires constant troubleshooting and adapting, situations where my quick-thinking mindset has indisputably benefited past clients. I'm excited about the prospect of bringing my well-rounded skillset to deliver visions turned reality – let's connect soon so we can discuss how to turn your project into a success story!
Thanks!
Hi lewisparma,
After carefully reviewing your project description, I am confident that I can help you to complete this project to your full satisfaction.
I am an expert team which have many years of experience on C Programming, C++ Programming, Computer Graphics, OpenGL
Lets connect in chat so that We discuss further.
Regards
✨Merry Xmas?
I have checked JD carefully.
With my deep experience in Computer Graphics, C++ Programming, C Programming and OpenGL, I can complete your project as you want.
I'm ready to start working right now and provide you high-quality work with good communication.
I'll looking forward to hearing from you back to discuss more.
Chris
Hi Mate ,
Good afternoon!
I am professional mobile programmer with skills including OpenGL, C++ Programming, Computer Graphics and C Programming.
Please send a message to discuss more regarding this project.
With regards
Hello,
As a highly skilled and versatile professional, I believe I am a perfect fit for your project that requires not only strong programming skills in languages such as C and C++, but also demands an in-depth comprehension of computer graphics and computer vision, which I have demonstrated throughout my career. Drawing on my proficiency in technologies like OpenGL, OpenCV, and Graphics Pipeline Optimization, I can assure you that implementing the stated methods with maximum efficiency is well within my capabilities.
Beyond being a competent developer, I am opportune to possess a blend of proficiency in Trading and Finance, which might pique your interest considering the possible application to your project. My knowledge in Trading platforms including Pine Script Development on TradingView places me on a distinctive advantage towards an effective implementation of your project’s objective.
In addition to my skills, I also bring significant problem-solving capacity and collaborative mindset to bear on projects. Throughout my professional journey, I've honed my ability to step up in fast-paced working environments - like yours will likely be - and tackle complex challenges head-on. Overall, what distinguishes me as the right choice for this task lies in not only my advanced technical proficiency but also my commitment to creativity, innovation, and delivering solutions hinged on strong analytical insights resulting in robust archite
Thanks!
Hello,
With over 10 years of experience in C++ programming, I bring a strong command of the language to tackle your OpenGL image processing task. Your project specifications align perfectly with my skills and background as I have prior experience in similar image processing projects. My proficiency in OpenGL will allow me to implement the proposed method, including Sobel filter + binarization and hatch filter applications, with precision and accuracy.
Moreover, my solid understanding of separable smoothing filters and their effective implementation will help optimize the image smoothing process, ensuring faster and more efficient execution. I also possess strong mathematical skills which will be critical in creating and applying the hatch pattern precisely as per your requirements.
Finally, my commitment to delivering high-quality work within agreed upon deadlines aligns well with your project's needs. Combining this commitment with my passion for coding, my aim is not just to meet your expectations but exceed them by providing you with a solution that accurately represents your desired sketch images across a variety of conditions. I look forward to the opportunity to contribute my expertise to your project and will gladly provide further information or clarification if needed
Thanks!
Hey Mate!
Great!
I can help you perfectly with your project.
I am skilled in Computer Graphics, OpenGL, C Programming and C++ Programming.
Let's discuss your project in more detail via chatting.
Regards
Kosta
As an experienced C and C++ developer, I am well-equipped to take on your project in OpenGL image processing. Your detailed description sets clear objectives for building a stylized black and white sketch, preserving image contours and incorporating hatching lines to reflect image density. Having worked extensively with analysis and manipulation of visual data, I am confident in my ability to implement the proposed method with efficiency and creativity.
Not only do I bring in-depth understanding of filtering techniques like Sobel, binarization, and median filters necessary for this project, but I'm also adept at optimizing algorithms to improve performance. The algorithm you've outlined for separable smoothing provides an excellent opportunity to minimize texture samples without compromising on output quality, a task I excel at.
Additionally, beyond my proficiency in working with OpenGL, my wider skillset including database management and web development could prove valuable in bringing your project full circle. With these skills, I can ensure the results we obtain are not only of high quality but delivered in an easily-accessible manner. I look forward to discussing more about your precise requirements and how my capabilities align with them. Let's collaborate to build something truly impressive.
Hi Mate!
Thank you for the job posting!
I read your project description carefully and got interested.
I am skilled in OpenGL, C++ Programming, Computer Graphics and C Programming. I don't like ramble.
I am ready to start working now and will deliver the best result asap.
Best regards
Zeljko