찾다
웹 프론트엔드PS 튜토리얼PhotoShop 알고리즘 원리 분석 시리즈 - 픽셀화 - 조각화

이전 기사의 인기에 이어 조금 더 간단한 알고리즘에 대해 계속 이야기해 보겠습니다.

이 기사에서는 조각화 알고리즘에 대해 먼저 설명합니다.

PhotoShop算法原理解析系列 - 像素化-碎片 PhotoShop算法原理解析系列 - 像素化-碎片 PhotoShop算法原理解析系列 - 像素化-碎片 PhotoShop算法原理解析系列 - 像素化-碎片

이것이 파괴적인 필터인 이유는 이미지를 만드는 사람의 90%가 남자, 변태남자이기 때문입니다.

조각 필터의 ​​원리와 관련하여 인터넷에서 사용할 수 있는 정보는 다음과 같습니다. 서로 오프셋된 이미지 사본 4개를 생성하여 고스팅과 유사한 효과를 생성합니다.

위의 문장만으로도 시작할 수 있습니다.

분석: 위의 이미지, 특히 눈을 비교하면 처리된 이미지가 단안이 4개의 눈이 된 것처럼 보여야 함을 알 수 있습니다. 따라서 위의 진술은 다음과 같습니다. 신뢰할 수 있습니다.

그렇다면 오프셋의 중심은 어디이며 오프셋 수는 얼마입니까? 이 질문도 매우 간단합니다. verify:

구체적인 단계는 다음과 같습니다. 이미지를 열고 이미지의 색상이 상대적으로 단조로운 곳(예: 위에서 언급한 아름다움의 팔) 그런 다음 레이어를 복사하고 복사된 레이어에 조각 필터를 적용한 다음 레이어 투명도를 50%로 조정하여 다음 이미지를 얻습니다. 🎜>

이 효과를 사용하면 쉽게 결론을 내릴 수 있습니다.

PhotoShop算法原理解析系列 - 像素化-碎片

오프셋의 중심은 각 픽셀의 중심에 있고 4개의 오프셋은 픽셀을 기준으로 대칭입니다. 경사가 45도인 중앙은 원 안에 균일하게 배열되며, 가로 및 세로 오프셋은 각각 45도, 오프셋은 4픽셀입니다.

그래서 어떻게 중첩하느냐는 질문을 짐작할 수 있는데, 4번의 오프셋 후에 누적된 값의 평균을 구하는 것입니다.

이 아이디어를 바탕으로 다음과 같은 알고리즘을 작성했습니다.

private void CmdFragment_Click(object sender, EventArgs e)
{    int X, Y, Z, XX, YY;    int Width, Height, Stride;    int Speed, Index;    int SumR, SumG, SumB;
    Bitmap Bmp = (Bitmap)Pic.Image;    if (Bmp.PixelFormat != PixelFormat.Format24bppRgb) throw new Exception("不支持的图像格式.");

    Width = Bmp.Width; Height = Bmp.Height; Stride = (int)((Bmp.Width * 3 + 3) & 0XFFFFFFFC);    byte[] ImageData = new byte[Stride * Height];                                    // 用于保存图像数据,(处理前后的都为他)
    byte[] ImageDataC = new byte[Stride * Height];                                   // 用于保存克隆的图像数据
    int[] OffsetX = new int[] { 4, -4, -4, 4 };                                      // 每个点的偏移量
    int[] OffsetY = new int[] { -4, -4, 4, 4 };    fixed (byte* P = &ImageData[0], CP = &ImageDataC[0])
    {        byte* DataP = P, DataCP = CP;
        BitmapData BmpData = new BitmapData();
        BmpData.Scan0 = (IntPtr)DataP;                                              //  设置为字节数组的的第一个元素在内存中的地址
        BmpData.Stride = Stride;
        Bmp.LockBits(new Rectangle(0, 0, Bmp.Width, Bmp.Height), ImageLockMode.ReadWrite | ImageLockMode.UserInputBuffer, PixelFormat.Format24bppRgb, BmpData);

        Stopwatch Sw = new Stopwatch();                                             //  只获取计算用时        Sw.Start();
        System.Buffer.BlockCopy(ImageData, 0, ImageDataC, 0, Stride * Height);     //  填充克隆数据        

        for (Y = 0; Y = Width)
                        XX = Width - 1;                    if (YY = Height)
                        YY = Height - 1;
                    Index = YY * Stride + XX * 3;
                    SumB += DataCP[Index];
                    SumG += DataCP[Index + 1];
                    SumR += DataCP[Index + 2];
                }

                DataP[Speed] = (byte)((SumB+2) >> 2);    //  求平均值(Sum+2)/4,为什么要+2,就为了四舍五入。比如如果计算结果为108.6,则取像素109更为合理     
                DataP[Speed + 1] = (byte)((SumG + 2) >> 2);
                DataP[Speed + 2] = (byte)((SumR + 2) >> 2);
                Speed += 3;                                                     //  跳往下一个像素            }
        }
        Sw.Stop();        this.Text = "计算用时: " + Sw.ElapsedMilliseconds.ToString() + " ms";
        Bmp.UnlockBits(BmpData);                         //  必须先解锁,否则Invalidate失败     }
    Pic.Invalidate();}

알고리즘에서 OffsetX 및 OffsetY는 각각 샘플링 포인트 픽셀의 오프셋입니다. 마찬가지로 이 필터에는 현장 작업이 포함되므로 처리하기 전에 픽셀 백업이 필요하지만 여기에서는 백업 데이터가 확장되지 않습니다. 따라서 샘플링 지점의 좌표가 범위를 초과하는지 확인하기 위해 내부 코드에서 확인해야 합니다. 범위를 초과하는 경우 일반적으로 이미지 필터 알고리즘의 범위 내에 있습니다.

(1) 초과하는 경우 가장 가까운 경계값, 즉 반복되는 가장자리 픽셀로 간주됩니다. 코드의 이 부분은 위에 게시된 if...else if 부분입니다. .

(2) 되감기는 다음 코드로 설명할 수 있습니다.

while (XX >= Width)
    XX = XX - Width;while (XX = Height)
    YY = YY - Height;while (YY <span style="font-size: 13px;"></span><p class="cnblogs_code"> ( 3 ) 이미지 범위 내의 픽셀만 계산합니다: </p><p></p><p></p><pre class="brush:php;toolbar:false"> if (XX >= 0 && XX = 0 && YY <span style="font-size: 13px;"></span> <p class="cnblogs_code">물론 이렇게 하려면 변수를 사용하여 어떻게 되는지 기록해야 합니다. 적격 계산이 많이 수행되었습니다. </p><p></p><p> 관심있는 친구들은 코드를 바꿔서 한번 해보세요. <span style="font-size: 13px;"></span></p><p><span style="font-size: 13px;"> 위 코드에서 DataP[Speed] = (byte)((SumB+2) >> 2); SumB에 2를 더한 이유는 결과를 반올림하기 위한 것입니다. 더 정확하고 합리적입니다. </span></p><p><span style="font-size: 13px;"> 테스트 결과 위 코드는 PS 처리 효과와 100% 일치합니다. 이는 우리의 추측이 완전히 정확하다는 것을 보여줍니다. </span></p><p><span style="font-size: 13px;"> 알고리즘을 더 확장할 수도 있습니다. </span><span style="font-size: 13px;">좀 더 생각해 보세요. 왜 4개의 유령 이미지여야 할까요? 4여야 합니다. 픽셀의 가로 및 세로 오프셋입니다. 관심 있는 독자들이 스스로 발전할 수 있도록 아래 그림을 제공합니다. </span></p><p><span style="font-size: 13px;"> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/013/1ec01116c8ef6115593d57c273276c69-5.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="PhotoShop算法原理解析系列 - 像素化-碎片"    style="max-width:90%"  style="max-width:90%" title="PhotoShop算法原理解析系列 - 像素化-碎片"></span></p><p><span style="font-size: 13px;"> 사진에서 각도는 32도, 반경은 10, 조각수는 7개, 다음과 유사한 효과를 낼 수 있습니다(내 Imageshop을 사용하여 확인할 수 있습니다): </span></p><p><span style="font-size: 13px;"> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/013/1ec01116c8ef6115593d57c273276c69-6.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="PhotoShop算法原理解析系列 - 像素化-碎片"    style="max-width:90%"  style="max-width:90%" title="PhotoShop算法原理解析系列 - 像素化-碎片"> PHP 중국어 웹사이트에 주목하세요! <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/013/1ec01116c8ef6115593d57c273276c69-7.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="PhotoShop算法原理解析系列 - 像素化-碎片"    style="max-width:90%"  style="max-width:90%" title="PhotoShop算法原理解析系列 - 像素化-碎片"></span></p>
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Photoshop 시험 및 대안 : 무료 액세스 탐색Photoshop 시험 및 대안 : 무료 액세스 탐색Apr 26, 2025 am 12:23 AM

Photoshop은 7 일 무료 평가판 기간을 제공합니다. 시험 기간의 사용을 극대화하려면 1) 여러 Adobe 계정에 가입하고 2) 학생 또는 교육 버전을 사용하고 3) Adobe CreativeCloud를 구독하십시오. 무료 대안은 다음과 같습니다. 1) 김프, 2) Photopea, 3) Krita,이 소프트웨어는 일일 이미지 편집 요구를 충족시킬 수 있습니다.

사진 작가를위한 Photoshop : 이미지 향상 및 수정사진 작가를위한 Photoshop : 이미지 향상 및 수정Apr 25, 2025 am 12:01 AM

Photoshop에서 사진을 강화하고 수정하는 수리 브러시 도구를 사용하여 밝기와 대비를 조정하여 달성 할 수 있습니다. 1) 밝기와 대비 조정 : 이미지-> 조정-> 밝기/대비 메뉴를 통해 미숙 한 사진을 향상시키기 위해 밝기와 대비를 높입니다. 2) 수리 브러시 도구 사용 : 도구 모음에서 HealingBrushTool을 선택하고 이미지에서 기타 점 또는 흉터를 제거하려면 적용하십시오.

Photoshop 액세스 : 방법 및 가용성Photoshop 액세스 : 방법 및 가용성Apr 24, 2025 am 12:07 AM

Photoshop은 영구 라이센스를 구매하거나 CreativeCloud에 가입하여 얻을 수 있습니다. 1. 장기 사용을위한 영구 라이센스를 구매하고 월별 결제는 없지만 최신 업데이트는 없습니다. 2. CreativeCloud를 구독하여 최신 버전 및 기타 Adobe 소프트웨어에 액세스하고 월별 또는 연간 요금을 지불해야합니다. 선택은 사용 빈도 및 요구 사항을 기준으로해야합니다.

Photoshop이 가장 잘하는 것 : 일반적인 작업 및 프로젝트Photoshop이 가장 잘하는 것 : 일반적인 작업 및 프로젝트Apr 23, 2025 am 12:06 AM

Photoshop은 이미지 편집, 레이어링 및 마스킹, 디지털 페인팅 및 다양한 디자인 응용 프로그램에 특화되어 있습니다. 1) 이미지 편집 및 수리 : 결함을 제거하고 색상과 밝기를 조정하십시오. 2) 레이어 및 마스크 : 비파괴 편집 및 생성. 3) 디지털 그림과 삽화 : 예술 작품을 만듭니다. 4) 실제 응용 프로그램 : 그래픽 디자인, 웹 디자인 및 디지털 아트 제작.

Photoshop 사용 : 창의적인 가능성과 실제 용도Photoshop 사용 : 창의적인 가능성과 실제 용도Apr 22, 2025 am 12:09 AM

Photoshop은 실제 응용 분야에서 매우 실용적이고 창의적입니다. 1) 초보자 및 전문가에게 적합한 기본 편집, 수리 및 합성 기능을 제공합니다. 2) 컨텐츠 인식 필 및 레이어 스타일과 같은 고급 기능은 이미지 효과를 향상시킬 수 있습니다. 3) 바로 가기 키를 마스터 링하고 레이어 구조를 최적화하면 작업 효율성을 향상시킬 수 있습니다.

Photoshop : 고급 기술 및 도구Photoshop : 고급 기술 및 도구Apr 21, 2025 am 12:08 AM

Adobe Photoshop의 고급 기능에는 고급 선택 도구, 레이어 블렌딩 모드 및 작업 및 스크립트가 포함됩니다. 1) 빠른 선택 도구 및 색상 범위 선택 도구와 같은 고급 선택 도구는 이미지 영역을 정확하게 선택할 수 있습니다. 2) "중첩"모드와 같은 레이어 블렌딩 모드는 고유 한 시각적 효과를 생성 할 수 있습니다. 3) 작업 및 스크립트는 작업 반복을 자동화하고 업무 효율성을 향상시킬 수 있습니다.

Photoshop의 주요 기능 : 수정 및 향상Photoshop의 주요 기능 : 수정 및 향상Apr 20, 2025 am 12:07 AM

Photoshop의 사진 편집 및 향상에서 강력한 기능에는 다음이 포함됩니다. 1. "수리 브러시 도구"를 사용하여 여드름을 제거하십시오. 2. "액화 도구"를 사용하여 얼굴을 날려 버립니다. 이러한 기능은 이미지 처리 효과를 최적화하기 위해 알고리즘 및 이미지 처리 기술을 통해 구현됩니다.

Photoshop의 주요 기능 : 깊은 다이빙Photoshop의 주요 기능 : 깊은 다이빙Apr 19, 2025 am 12:08 AM

Photoshop의 주요 기능에는 레이어 및 마스크, 조정 도구, 필터 및 효과가 포함됩니다. 1. 레이어와 마스크는 이미지 부품을 독립적으로 편집 할 수 있습니다. 2. 밝기/대비와 같은 도구를 조정하면 이미지 톤과 밝기를 수정할 수 있습니다. 3. 필터와 효과는 시각 효과를 빠르게 추가 할 수 있습니다. 이러한 기능을 마스터하면 창의적인 전문가가 창의적인 비전을 달성하는 데 도움이 될 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.